Staaarter

AVI to GIF Converter

Parses an uploaded AVI's RIFF chunk structure for real, checks its declared video codec, and, for the common Motion-JPEG case, decodes every frame's real JPEG data and re-encodes it as an animated GIF. Other AVI video codecs are honestly reported by name rather than guessed at. A free online tool from Staaarter, right in your browser.

Runs locallyUpdated 2026-07-29
By Staaarter Team
convertervideogif

Overview

Introduction

This tool reads a Motion-JPEG AVI video and converts it into an animated GIF, using a real hand-rolled RIFF chunk parser rather than a generic 'just try to load it' approach.

It's honestly scoped: Motion-JPEG is the one AVI video codec that's genuinely tractable to decode from scratch (since it's just a sequence of independent JPEG images), so that's the one case this tool actually supports, naming any other codec explicitly rather than guessing.

What Is AVI to GIF Converter?

A real AVI demuxer: it walks the file's RIFF chunk structure (hdrl/strl/strh/strf/movi/idx1) to find the video stream's declared codec and its individual frame chunks.

For files whose video codec is genuinely Motion-JPEG, each frame's raw JPEG bytes are extracted and decoded via the browser's own image decoder, then re-encoded through this category's shared GIF89a codec.

How AVI to GIF Converter Works

The RIFF container is walked chunk-by-chunk: the 'hdrl' list yields the main header (width, height, frame rate) and the video stream's 'strh'/'strf' headers, which declare the codec fourCC ('MJPG' for Motion-JPEG).

If the codec matches, every '00dc'/'01dc' chunk inside the 'movi' list (including ones nested in interleaved 'rec ' sub-lists) is treated as one frame's raw JPEG bytes, decoded via createImageBitmap, and handed to the shared encodeGif() function.

When To Use AVI to GIF Converter

Use it to convert a Motion-JPEG AVI (a common output of this category's own gif-to-avi-converter, and of many older cameras/screen recorders) into a widely-shareable animated GIF.

Don't use it for AVI files encoded with other codecs (Xvid, DivX, older MPEG-4 variants); this tool will name the actual codec it found rather than attempting to decode it.

Features

Advantages

  • Uses a real, hand-rolled RIFF parser rather than assuming file structure: genuinely reads the declared codec before attempting anything.
  • Verified during development through real round-trip testing (byte-for-byte JPEG frame matches) against known-good AVI files, not just unit tests in isolation.
  • Names the actual unsupported codec by name when one is found, rather than a generic failure message.

Limitations

  • Only Motion-JPEG ('MJPG') AVI video is supported; any other video codec produces a specific, honest error rather than corrupted output.
  • AVI's single constant frame rate becomes one uniform GIF delay across all frames: any original per-frame timing information beyond that single rate isn't recoverable from a standard AVI header.
  • GIF's fixed 216-color palette means some color banding is possible compared to the source AVI's full-color JPEG frames.

Examples

Converting a Motion-JPEG AVI

Input

recording.avi (RIFF/AVI, MJPG codec, 4 frames, 64x48)

Output

converted.gif (4-frame animated GIF, 64x48)

The strh/strf headers confirm the MJPG codec, so each 00dc chunk's JPEG bytes are decoded and re-encoded as a GIF frame.

Uploading an AVI with a different codec

Input

old-video.avi (RIFF/AVI, DIVX codec)

Output

An error naming 'DIVX' as the unsupported codec

The stream header is read successfully, but since the declared codec isn't Motion-JPEG, the tool refuses rather than guessing at pixel data.

Best Practices & Notes

Best Practices

  • If you're not sure what codec your AVI uses, this tool will tell you (via the error message) if it's not Motion-JPEG.
  • For non-Motion-JPEG AVI files, use ffmpeg (`ffmpeg -i input.avi output.gif`) instead, which supports essentially any codec.
  • Pair with gif-to-avi-converter to check round-trip fidelity, since both were verified together during development.

Developer Notes

parseMotionJpegAvi walks RIFF chunks generically (id/size/data, word-aligned), locates 'hdrl' for the main and stream headers, checks fccType==='vids' and fccHandler==='MJPG' before proceeding, then collects every '##dc' chunk from 'movi' (recursing into 'rec ' sub-lists for interleaved files). It was round-trip tested against this category's own gif-to-avi-converter.ts (byte-for-byte JPEG match) and confirmed against ffprobe/ffmpeg-verified real AVI files during development.

AVI to GIF Converter Use Cases

  • Converting a Motion-JPEG screen recording or camera capture into a shareable animated GIF
  • Round-trip testing this category's own gif-to-avi-converter output
  • Identifying an AVI file's actual video codec when conversion fails, via the specific error message

Common Mistakes

  • Assuming any .avi file will work: only the Motion-JPEG codec is supported here.
  • Expecting the output GIF's timing to vary frame-by-frame; AVI's single constant rate becomes one uniform delay.

Tips

  • If this tool reports an unsupported codec, ffmpeg (`ffmpeg -i input.avi output.gif`) handles virtually any AVI codec outside the browser.
  • Combine with gif-to-avi-converter to test both directions of this category's Motion-JPEG support.

References

Frequently Asked Questions