fileformer
search⌘KtranslateENexpand_moreupload_fileConvert
Converters8 file families · 44 direct conversions
What changes in a conversionarrow_forward

Convert GIF Image Free

A GIF paints with a box of at most 256 crayons.

Every GIF frame carries a palette, a list of up to 256 colours, and each pixel is just a number pointing into that list. It's why GIFs look posterised, why flat cartoons stay crisp, and why photo GIFs are huge. Shrink the palette and watch.

original · millions of colours
as a GIF16 colours
palette size16
Sunset photoCartoon
the palette
With few colours the smooth sky breaks into stripes, called banding. Photos need far more than 256 colours.
~/why-gifs-are-big

Animation in a GIF is a stack of whole pictures.

A GIF can only skip pixels that stayed exactly the same, and it has no motion prediction at all. So a 5-second clip is dozens of near-complete images. Video formats describe movement instead. Pick a length to compare.

clip length5 s
GIF7.1 MB
animated WebP2.4 MB
MP4 video330 KB
For the same 5-second photo clip at 480 px. Photographic clips are GIF’s worst case: the MP4 is about 22× smaller.
~/why-gif-survives

Outdated in every way except the one that matters: it plays everywhere.

GIF dates from 1987. Newer formats beat it on size and quality, but GIF is the one animation that loops automatically in every email app, forum, and document.

mailEmail newslettersonly choiceGmail, Outlook and Apple Mail all loop GIFs. Video and WebP usually don’t play.
forumForums and old CMSssafestUploads that accept “images only” still let animated GIFs through.
slideshowSlides and docsreliableLoops in PowerPoint, Keynote and Google Docs without a play button.
publicYour own websiteavoidUse a muted looping MP4 or animated WebP: a fraction of the size, better colour.
~/inspect-a-gif

Decode your GIF frame by frame, the way a browser does.

This page walks every block, decompresses every frame’s LZW data itself, and composites the frames with their disposal methods, so you see each frame as stored and as shown. It also checks delays against the rule browsers apply to very short ones. The sample is a real three-frame GIF built in your browser.

sample.gif (built in your browser) · 454 B
frame1 / 3delay40 csdisposalleaverectangle120×90 @0,0transparentnopaletteglobal 8
GIF89a · 120 × 90
frames3
length as written0.91 s
length in browsers1.00 s
loopforever
global palette8 colours
local palettes0
interlaced frames0
compressed pixel data311 B
comments“Built by FileFormer”
extensionsNETSCAPE2.0
verifiedEvery frame decoded fully and the trailer is present.
timer1 frame has a delay of 0 or 1 hundredths. Browsers show these for 10 hundredths (100 ms), so the GIF plays 1.1× slower than its file says.
fact_checkCross-checked against your browser’s own GIF decoder (ImageDecoder) on the first 3 frames: every visible pixel matches.
#RectangleDelayDisposalColoursLZW
1120×90 at 0,040 csleave8179 B · 0.13 bits/px
228×28 at 20,3050 csleave866 B · 0.67 bits/px
328×28 at 66,301 csto background866 B · 0.67 bits/px
Disposal says what happens after a frame: leave it, clear its rectangle to the background, or restore what was there before. “As stored” shows only the rectangle each frame actually encodes, usually much smaller than the canvas.
~/spec-sheet

GIF at a glance: the technical reference.

Identification, limits and capabilities, from the GIF89a specification.

Full nameGraphics Interchange Formatpronounced “jif” by its creator; most say “gif”
Extension.gifone extension for stills and animation
MIME typeimage/gifregistered since 1996
Magic bytes47 49 46 38 39 61“GIF89a”, or “GIF87a” for the older version
StandardCompuServe GIF89a (1989)first version GIF87a, 1987
Maximum size65,535 × 65,535 px16-bit width and height fields
Colours256 per frameeach frame can have its own local palette
CompressionLossless LZWlossless for the palette, lossy vs the original
Transparency1 colour, on or offno partial transparency, so edges look jagged
Animationyes, with frame delaysdelay in 1/100 s; browsers raise under 0.02 s to 0.1 s
LoopingNetscape extensionnot in GIF89a itself, but supported everywhere
Interlacing4-pass, optionalshows a rough picture while downloading
~/block-by-block

Inside an animated GIF: a header, a palette, then frame after frame.

Each block begins with a one-byte introducer. The looping behaviour everyone relies on isn't in the original standard at all: it comes from a Netscape extension. Click a block.

HeaderGIF89aScreensize, flagsPalette768 bytesNETSCAPEloopGCEdelayFrame 1LZW dataFrame 2…changes onlyTrailer3B
Header · GIF89aSix ASCII bytes naming the format and version. Every GIF starts this way.
47 49 46 38 39 61 "GIF89a"