![]()
Drag and drop one JPG for a static GIF, or multiple JPGs for an animated GIF. Files are processed in upload order.
Choose frame delay (10-20 cs for slideshows), dithering method (Floyd-Steinberg for photos, Bayer for smaller files), palette size (128 or 256 colors), and loop count.
Click Convert and download your .gif file. Files are deleted from the server immediately after download.
Universal format for photos. Supported everywhere, great balance between quality and file size.
Classic format for simple animations. Supports transparency and up to 256 colors.
Apple photo format used by iPhone and iPad. High quality with small file size.
High Efficiency Image Format — same as HEIC, used on Apple devices.
Modern image format by Google. Up to 30% smaller than JPG with the same quality.
Lossless format that preserves every pixel. Best for screenshots and logos.
Uncompressed bitmap format. Maximum quality but very large file size.
Professional lossless format used in printing and photography.
Next-gen format with excellent compression. Up to 50% smaller than JPG.
Portable Pixmap format used in Unix/Linux environments.
High Dynamic Range format storing extended brightness data.
Flexible Image Transport System used in astronomy and science.
Portable Document Format. Convert PDF pages to JPG, PNG or WebP images.
Quick comparison to help you choose the right format
Most converter pages treat JPG-to-GIF as a simple format swap and never explain the two modes. A single-JPG conversion wraps one photograph in a GIF89a container — the output is a static image with a 256-color palette, no animation. This is useful when a forum, email signature, or legacy CMS only accepts .gif uploads. A multi-JPG conversion takes a numbered sequence of photographs (photo-001.jpg through photo-010.jpg) and writes them as consecutive frames inside one animated GIF file, with per-frame delays and a Netscape loop block. The result is a looping animation — a slideshow, a product 360-degree rotation, a before/after, or a meme. These are fundamentally different operations with different quality tradeoffs, different file-size expectations, and different optimal settings.
JPG stores pixels in YCbCr color space with 8 bits per channel — roughly 16.7 million representable colors. GIF uses an indexed palette capped at 256 entries. Converting means the encoder must pick the best 256 colors to represent the entire image (or each frame individually). This is called color quantization, and it is always lossy. Smooth gradients — skies, skin tones, studio backdrops — suffer most visibly. The result is banding: hard visible steps where the gradient used to be smooth. Dithering mitigates this by scattering pixels of adjacent palette colors to simulate in-between shades. Floyd-Steinberg error diffusion is the default — it pushes the quantization error of each pixel to its neighbors in a serpentine scan, producing a noise-like texture that looks smoother from normal viewing distance. Bayer (ordered) dithering uses a fixed threshold matrix — it produces a recognizable crosshatch pattern but compresses dramatically better under LZW because the repeating pattern is exactly what LZW was designed for. Atkinson dithering diffuses only 75% of the error, preserving contrast at the cost of blown-out highlights — it gives that characteristic original-Mac chiseled look. No dithering at all is fine for flat-color illustrations with fewer than 256 distinct colors.
GIF was designed in 1987 for 256-color banners on 640×480 screens. It was never meant to encode photographic video. JPG achieves 10:1 to 20:1 compression on photos using lossy DCT. GIF uses lossless LZW on a 256-color palette — and LZW is terrible at photographic content because camera noise, gradients, and dithering all break the dictionary-based compression. Result: 10 JPGs at 500 KB each (5 MB total) commonly produce a 30–60 MB animated GIF at full resolution. The fix is straightforward: downscale to 480p or 720p (Giphy recommends 480p maximum and fewer than 200 frames), drop the palette to 128 or 64 colors (128 colors saves roughly 15–20% over 256 with minimal visible difference), use 10–12 fps instead of 24 fps (halving the frame count halves the file), and choose Bayer dithering if file size matters more than photographic smoothness. If you still can not get under your platform limit, the honest answer is: GIF is the wrong format for your content. Use WebP (3–10× smaller at equal quality) or MP4 (10–30× smaller).
| Feature | JPG | GIF |
|---|---|---|
| Color depth | 16.7 million (24-bit YCbCr) | 256 per frame (8-bit indexed) |
| Compression | Lossy DCT — very efficient on photos | Lossless LZW — inefficient on photos |
| Animation | No | Yes — multi-frame with per-frame timing |
| Transparency | No — always opaque | 1-bit binary only (one palette index) |
| File size — 10 photos at 1080p | ~5 MB total as JPGs | ~30–60 MB as animated GIF |
| File size — single photo 1080p | ~300–500 KB | ~1–3 MB (256-color palette) |
| Best for | Photographs, social media, email | Short animations, memes, legacy platforms |
| Re-save quality | Degrades with each re-encode | Palette is fixed — no further degradation |
GIF frame delays are stored in centiseconds — hundredths of a second, not milliseconds. A delay of 10 means 100 ms (10 fps). A delay of 4 means 40 ms (25 fps). If your converter or code uses milliseconds where centiseconds are expected, your animation plays 10× too slow or 10× too fast. Additionally, most browsers silently clamp any delay below 2 centiseconds (20 ms) to approximately 10 centiseconds (100 ms) to prevent CPU abuse — so you cannot reliably encode a 50 fps GIF. The practical maximum is about 25 fps (delay=4 cs). For photo slideshows, 10–20 cs per frame (5–10 fps) is the sweet spot. Disposal method controls what happens to each frame after it is displayed: method 2 (restore to background) is the safest default — it clears the frame rectangle before drawing the next one. Method 1 (do not dispose) leaves the previous frame visible, which creates ghost artifacts if frames have transparency. Loop count is set by the Netscape Application Extension block: loop=0 means infinite loop, loop=1 plays once then stops.
Twitter/X accepts GIFs up to 15 MB on web and 5 MB on mobile, aspect ratio 1:1 to 3:1 — but transcodes every GIF to MP4 server-side, so your carefully optimized palette gets re-encoded anyway. Giphy recommends under 8 MB, 480p resolution, fewer than 200 frames, and under 15 seconds. Discord free accounts allow 10 MB per upload (recently raised from 8 MB); Nitro Basic and Nitro allow 50 MB; Nitro Ultimate allows 500 MB. Custom Discord emoji must be exactly 128×128 pixels, under 256 KB, and 50 frames maximum. Slack custom emoji is capped at 128 KB and 128×128. Reddit accepts 100 MB but transcodes to video for playback. Outlook desktop (Word rendering engine) displays only the first frame of any animated GIF — if you are creating GIFs for email marketing, put your key message in frame 1. Gmail supports animation but caps attachments at 25 MB. Pinterest accepts animated GIFs up to 20 MB. Tumblr allows up to 10 MB.
Animated WebP produces files 30–70% smaller than GIF at equal visual quality with 24-bit color and 8-bit alpha. Animated AVIF is even more efficient — typically 70–95% smaller than GIF. MP4 video is 10–30× smaller. APNG preserves full PNG quality with animation. All four are supported in every modern browser. So why does GIF still exist? Compatibility. Discord custom emoji only accepts GIF for animation. Slack emoji same. GitHub and PyPI README files render animated GIFs inline but do not render APNG. Outlook email shows GIF frame 1 as a static fallback — it does not play WebP or AVIF at all. Forum signatures on phpBB and vBulletin still expect GIF. Giphy and Tenor built their entire ecosystem around GIF (though they serve MP4 behind the scenes). The practical decision: if your content is going to a modern web page, use WebP or MP4. If it is going to Discord emoji, email, a README, or a legacy forum — GIF is still the right choice.
GIF is 30+ MB: downscale to 480p, drop to 64–128 colors, reduce to 10 fps, or switch to WebP/MP4. Colors look banded or posterized: enable Floyd-Steinberg dithering and use the full 256-color palette. Animation plays too fast or too slow: check whether your tool uses centiseconds (cs) or milliseconds (ms) — a delay of 10 cs = 100 ms = 10 fps; a delay of 100 ms entered where cs is expected produces 1 fps. Only the first image shows in email: Outlook displays just frame 1 — this is not a bug in your GIF, it is a limitation of the Word rendering engine Outlook uses. Put your key message in the first frame. Can I make the background transparent? No — JPG has no alpha channel. Every pixel in a JPG is opaque. If you need a transparent GIF, start from a PNG with transparency and use our PNG to GIF converter. iPhone photos produce huge GIFs: iPhone JPGs are 12 MP at 3–4 MB each. Resize to 720p before conversion. EXIF orientation wrong: some GIF encoders ignore EXIF rotation tags. Convertify applies autorotation before encoding so the output matches what your phone displays.