What the GIFvideo → gif, the way creatives need it
twitter / x

Make a GIF for Twitter / X That Survives the Re-Encode

Post a GIF on X and the platform autoplays it, mutes it, and quietly rebuilds it as a looping video. The GIFs that look good afterward are the ones made with that pipeline in mind.

Drop a video, get a GIF free · frame-perfect · nothing leaves your browser Open the converter →

How to make a GIF for Twitter / X

What the GIF does the whole thing locally, right in your browser: nothing here ever leaves your machine.

  1. Start from your footage. Drag the source video into the converter: MP4, MOV, WebM, AVI, MKV, or M4V. It opens in the tab and stays on your machine throughout.
  2. Close the loop. Place the start and end where the motion hands off to itself, tightening the cut points by single frames until the seam disappears. Two to six seconds is the zone; 15 is the ceiling.
  3. Shape it for the timeline. Lock 16:9 for landscape captures, 1:1 for reactions, or 4:5 for the tall footprint, and frame the subject so it reads at thumbnail size.
  4. Give the encoder clean input. Set 12 to 15 fps and scale the width to 1280 pixels, the most X displays. Don't pre-crush colors; X compresses again after you.
  5. Verify the weight. Check the projected size and stay under 5 MB so both the web and mobile uploaders accept it without complaint. If it's over, trim length before touching quality.
  6. Post it. Download and attach the GIF to your post. X rebuilds it as a silent looping video on their side, which is exactly the outcome you engineered for.

What X does with your GIF the moment you post it

Start with the platform's actual behavior, because it explains every recommendation that follows. A GIF attached to a post autoplays silently in the timeline and loops. But X doesn't store or serve your file: on upload it converts the GIF into a compressed looping MP4 and serves that instead. The GIF badge in the corner is a costume.

That changes the optimization target. You're not tuning a file for how it looks on your desktop; you're tuning the input to a second encoder you don't control. Over-crunch the GIF (harsh dithering, starved palette) and X compresses your artifacts on top of themselves, and the result smears. The winning move is slightly counterintuitive: build a clean, generous GIF, the high-fidelity way, and let X's encoder do the dieting.

The limits, with appropriate skepticism

X's media rules drift over time, so treat these as the commonly cited targets rather than law:

If you remember one number, make it 1280 wide: maximum detail for the re-encoder, zero waste. And when a post gets bounced anyway, check weight and duration first; those two account for nearly every rejection.

Pick the shape for a phone column

The timeline on a phone is a tall, narrow strip, and that's where most of your audience will meet the GIF. Landscape footage shrinks into a ribbon with empty space around it, which is fine for a screen capture and lousy for a face. Match the ratio to the subject before you think about anything else:

The converter's crop locks to those exact ratios (plus 4:3 for older footage), so the frame you choose is the frame that posts, not an approximation of it.

Loop craft inside the 15-second window

A GIF repeats forever, so the seam is the craft. When the last frame hands off naturally to the first, the loop reads as continuous motion; when it doesn't, every repetition announces the cut. Getting the seam right is a trimming problem, and it's why frame-level control exists here: place your start and end on the timeline, then tap the cuts inward by single frames until the two ends agree.

Keep loops between about two and six seconds. That's long enough to land a moment and short enough to survive a third viewing. Length is also your cheapest compression: shaving two seconds off a six-second loop drops more weight than any palette trick, a point the small-GIF guide makes at length.

Convert it where the footage already is

Twitter GIFs tend to come from your own recordings: the bug capture, the stream highlight, the clip off your camera roll. None of that footage needs to visit a third-party server to become a four-second loop. What the GIF converts it in your browser: drag the file in (MP4, MOV, WebM, or anything decodable), trim, crop, check the projected size, download. The tool is free, ad-supported, adds no watermark, and asks for no account.

The same loop usually has a second life elsewhere. Sizes and ratios shift per platform, and the Instagram guide covers the strangest of them.

Build for the encoder

Trim the loop, crop for the column, keep it under 5 MB, and post. Converted locally, so the clip stays yours.

Open the converter

Questions, answered

What file size does X accept for GIFs?
Commonly cited limits are about 15 MB via the web and historically nearer 5 MB from the apps. Target under 5 MB and the question never comes up. Width and height are typically accepted up to 1280 pixels.
How long can the GIF run?
Around 15 seconds is the usual ceiling, hedged because X adjusts its rules quietly. A two-to-six second loop outperforms a long one in the feed anyway, and it weighs a fraction as much.
Why did my GIF get blurry after posting?
X re-encoded it. Every uploaded GIF becomes a compressed MP4 on their servers, so a file that was already heavily dithered and color-starved gets squeezed a second time and falls apart. Upload a cleaner, larger-palette GIF at 1280 wide and let X's encoder make the sacrifices.
Is it still a GIF after upload?
No. Viewers see a muted, looping, autoplaying video that X generated from your file; the GIF label is decorative. You still have to upload a real GIF to get that treatment, though.
Does the conversion here send my clip anywhere?
It doesn't. The encoding is handled by your own machine, in the tab, so the footage never travels. No account, no watermark, and the finished GIF saves straight to disk.
Which aspect ratio should I use on X?
16:9 for landscape material, 1:1 for reaction clips, 4:5 when you want maximum height in the feed. All sit safely inside X's roughly 1:3 to 3:1 tolerance, and the crop enforces each one exactly.