GIFs for a GitHub README: the 10 MB limit, and how to keep UI captures crisp

A demo GIF is the single most useful thing in a README, and the 10 MB attachment limit is the wall everyone hits. Here is the limit from GitHub’s own docs, the two ways to add a GIF, and the settings that keep interface text readable.

The limits, from GitHub’s docs

GitHub limits, checked 16 Sep 2026 against the official pages linked in each row.
WhatLimitSource
Image or GIF attached to an issue, pull request or comment10 MBGitHub Docs — Attaching files
“10MB for images and gifs”
Other attached files25 MBGitHub Docs — Attaching files
“25MB for all other files”
File committed to a repository (a GIF linked from a README)100 MiB hard block; warning above 50 MiB; 25 MiB when uploading through the browserGitHub Docs — About large files on GitHub
“GitHub blocks files larger than 100 MiB.”
README rendering
That is the README text itself, not the images it links to.
content beyond 500 KiB is truncatedGitHub Docs — About READMEs
“When your README is viewed on GitHub, any content beyond 500 KiB will be truncated.”

Two different limits apply depending on how you add the GIF, which is where the confusion comes from.

Two ways to put a GIF in a README

1. Attach it through an issue or comment, then paste the URL. Open any issue or pull request on the repository, drag the GIF into the comment box, and GitHub uploads it to github.com/user-attachments/… and inserts a Markdown image line. Copy that line into your README. The file never lives in your repository, so downloading the repository stays fast. This is the route with the 10 MB cap for images and GIFs. You don’t even need to post the comment; the upload happens as soon as you drop the file.

2. Commit the GIF into the repository (for example docs/demo.gif) and reference it with a relative path: ![Demo](docs/demo.gif). GitHub’s docs say relative paths are rewritten to work on any branch. The file limits are the repository ones (a warning above 50 MiB, a hard block at 100 MiB, 25 MiB through the browser), but the real cost is that every clone downloads the GIF forever, and every re-recorded version stays in the history. Keep committed GIFs small, or use route 1.

Whichever route you take, GitHub’s list of attachable image formats is PNG, GIF, JPEG and SVG plus MP4, MOV and WebM for video. Animated WebP isn’t on that list, so for a README, GIF is still the format that works everywhere.

Why README GIFs look soft

Most README GIFs are recorded at the app’s native size and then displayed at a fraction of it on a high-density screen. Two things blur interface text:

  • Resampling. A 1920-px capture squeezed into a README column about 900 px wide is resampled by the browser, and on a Retina or 4K display it is resampled again to fill 1800 device pixels; either way, text edges go soft.
  • Dithering. Dithering hides banding in photos and video by adding fine noise. On flat UI colours that noise is visible as speckle around text.

Our advice for app UI captures, from the measurements on this site, and how to do each in Simple GIF Maker:

  1. Crop to the part of the window that matters rather than shrinking the whole window. A 700-px-wide crop at 1:1 is sharper than a 1400-px window shrunk to 700. The crop tool has eight handles and free, 1:1, 16:9 and 4:3 presets.
  2. Keep the resolution, drop the frame rate. A UI demo reads fine at 10–12 fps; in our size tables, 10 fps is roughly 70% of the size of 15 fps at the same width. Tick Keep resolution and let the size target take the frame rate down.
  3. Turn dithering off for flat UI and let the colour count fall instead. Interface screens rarely need more than 64–128 colours, and no dithering means no speckle around text. That’s the None option in the palette and dithering panel; keep Sierra for video.
  4. Pause on the important frames. A GIF that lingers a second on the result compresses better than constant motion and is easier to follow.

A measured 10 MB fit

We ran the app’s command-line mode on a 10-second 1080p clip from Big Buck Bunny (Blender Foundation, CC BY 3.0), starting from 960 px wide at 24 fps and asking for 10 MB. On an 8-core desktop it took 43 seconds and reported:

960 -> 476px wide, 24 -> 13 fps, 256 -> 96 colors -> 8.86 MB (target 10.0 MB)
github10_bbb.gif · 476×268 · 8.86 MB
A frame from the 8.86 MB GIF the app produced for the 10 MB target: the Big Buck Bunny rabbit at 476 pixels wide, slightly smaller and with fewer colours than the 20 MB version but with smooth gradients
One frame of the 8.86 MB result at its real 476 px width. For a UI capture you’d lock the resolution and let frame rate and colours take the cut instead.

For a README capture you would set the target to 10 MB, tick Keep resolution, and export once. The preview the app shows is the real encoded GIF, so what you see in the app is what the README will show, and if it’s over the limit you’ll know before you upload. One-time purchase on Steam, for Windows and SteamOS/Linux.