"Too large" is not one error on Discord — a GIF can run into three different walls, and only one of them is the upload cap. The other two are a display rule that happens to use the same number, and a file that is not really a GIF at all. They look similar in chat and need completely different fixes.
Work out which one you hit before you re-export anything.
Wall 1: the per-file upload cap
This is the one people mean when they say "too large." Discord's File Attachments FAQ states it directly: "For non-Nitro subscribers, the maximum file upload is 20MB." The same page adds, for paid tiers: "If you need more room regularly, Nitro Basic offers 50MB and Nitro offers up to 500MB."
Three details about that cap change how you should think about it:
- It is per file, not per message. Discord's developer reference says "The file upload size limit applies to each file in a request." Attaching four GIFs does not mean they share one budget — each one is judged on its own.
- Account tier and server boost level do not add up. A boosted server can raise the ceiling for everyone in it: Discord's Server Boosting FAQ lists "50MB Upload Limit for all members (server only)" at Level 2 and "100MB Upload Limit for all members (server only)" at Level 3. Note the "(server only)" — that is Discord's own parenthesis, and it means the raised limit does not follow you into DMs. Where both a personal tier and a boost apply, the developer reference says "The attachment_size_limit value provided when working with interactions is calculated as the maximum of these values" — the larger of the two, not the sum.
- Level 1 does not raise it. In Discord's Account Caps table, the Level 1 upload row reads "Same" as the base tier. Boosting a server from Level 1 to Level 2 is what changes anything here.
Two caveats worth carrying with you. First, the top of the File Attachments FAQ says Discord is "currently experimenting with various file upload size limits" and that "Select users may have the ability to upload larger file sizes" — so someone else's successful upload is not proof of your own ceiling. Second, Discord's own pages do not all agree: the Account Caps page still lists a 10MB file sharing limit for the free tier, while the more recently updated File Attachments FAQ says 20MB and explains it as "As of August 2026, the free upload limit is 20MB (up from 10MB)." If you have seen both numbers quoted online, that is why. Treat the newest page as current and check it before you rely on a number.
There is one more thing that decides whether you clear the cap: Discord measures your original file, before any compression it might apply. Its FAQ puts it as "We've now moved mobile to the same pre-compression check that desktop has always used, so the number you see is the number that counts." Do not expect Discord to shrink a GIF into range for you — the file you hand it is the file that gets weighed.
The fix: rebuild the GIF rather than compressing the GIF
Because the size check lands on your source file, the only reliable move is to produce a smaller file yourself. And for GIFs specifically, the best lever is usually upstream: if the GIF came from a video clip, go back to the video and make the GIF again with a tighter crop of time and a smaller frame, instead of trying to squeeze an already-encoded GIF.
Try it right here
Runs in your browser. Your file is not uploaded anywhere.
That runs in your browser tab: the clip is read from disk, converted locally, and handed back, with nothing uploaded to a server — which matters when the whole reason you are here is a refused upload. The same tool lives at MP4 to GIF on its own page.
Three knobs do nearly all of the work, in this order: trim the duration, reduce the pixel dimensions, drop the frame rate. Each one cuts either how many frames get encoded or how big each frame is. If you want to understand what happens underneath, the ffmpeg GIF palette guide covers the encoding side in detail, including which widely-copied flags the official ffmpeg docs actually support.
Wall 2: the 20MB display rule for images (it uploaded fine — it just will not play)
Here is where the confusion starts: the number is the same as the free upload cap, but the rule is not.
In Discord's chat settings documentation, under how files are handled when uploaded directly, the wording is: "Any image that is larger than 20MB will be shared as a download instead."
That is a display behaviour, not a rejection: the file went through, and Discord simply presented it as something to download rather than rendering it in the message.
Does that rule cover GIFs? Discord's file type grouping does put GIF in the image family — its developer reference lists the image group as ".png, .gif, .jpg, .jpeg, .jfif, .webp, .avif". That grouping is documented for file upload components and slash command options rather than for chat display, and Discord's help pages do not spell out a separate display threshold for GIFs specifically. If a GIF of yours uploads successfully but renders as a download, the safest reading is that it is an image display behaviour and not a failed upload — and getting the file well under 20MB is the fix either way.
Do not go hunting for a documented "GIFs stop animating above X MB" figure — Discord does not publish one, and the numbers circulating for it are community estimates.
Wall 3: it is not actually a GIF
Discord's developer reference says plainly: "Animated images uploaded as WebP or AVIF do not convert cleanly to GIF." It goes further and recommends the opposite direction — "Apps should request animated images as WebP for maximum compatibility, as this works regardless of the original upload format."
Why this bites regular users: Discord's extension filtering will not catch a mismatch between the name and the contents, because it does not look inside the file. The developer reference is explicit: "This feature only checks the file extension against the filename and does not inspect the file contents. You are still responsible for validating the actual contents of the file." That is documented for file upload components and slash command options, but the mechanism is the point — a filename is not evidence of what the file contains.
So if the failure is not explained by size, check what the file really is. Renaming it converts nothing.
One related limit if you are dealing with a bot rather than plain chat: for attachments referenced inside embeds, the developer reference says "Only .jpg, .jpeg, .png, .webp, and .gif may be used at this time. Other file types are not supported." That is an embed rule, not a chat upload rule.
How to tell which wall you hit
Run these in order and you will land on the right fix in one pass:
- Did Discord refuse the upload outright? That is Wall 1. Check the file's size on disk — that is the number Discord reads — against your tier, and against the server's boost level if you are posting in a server.
- Did the file post, but show as a download instead of an animation? That is Wall 2, and the upload itself was not refused. Discord documents this download-instead-of-render behaviour for any image over 20MB and does not publish a separate figure for GIFs, so measure the file against 20MB.
- Is the file comfortably small and still misbehaving? Look at Wall 3. Confirm the file is a real GIF rather than an animated WebP or AVIF wearing a
.gifname.
After a rebuild, check the new file's size on disk before uploading again — that local number is the one that gets evaluated.
FAQ
What is the maximum GIF size I can upload to Discord? Discord does not publish a GIF-specific cap — a GIF is bound by the same file upload limit as anything else. The File Attachments FAQ gives 20MB for non-Nitro accounts, 50MB for Nitro Basic and up to 500MB for Nitro, while noting that Discord is experimenting with these limits for some users. Check the official page for the current value.
Why does my GIF upload fine but show up as a download link? That is the display rule, not the upload cap. Discord's settings documentation says any image larger than 20MB "will be shared as a download instead." The upload succeeded; Discord just did not render it inline. Getting the file under 20MB restores inline display.
Does Nitro plus a boosted server give me a bigger combined limit? No. Discord's developer reference says "The attachment_size_limit value provided when working with interactions is calculated as the maximum of these values" — the larger of your personal tier and the server's boost tier, not the two added together. Also remember the boost perk is labelled "(server only)," so it does not apply in DMs. More on this in our breakdown of server boost upload limits.
Can I split one big GIF into several smaller files in the same message? Yes, and the size check treats them independently — "The file upload size limit applies to each file in a request." Discord also notes that "If you upload multiple video files, images, or GIFs in one message, they will be sent together and displayed as a mosaic format." Is Discord's limit 20MB or 20 MiB? The help centre writes 20MB and the developer reference writes "20 MiB" (1 MiB = 1,048,576 bytes). Discord does not publish a conversion between the two wordings, so leave yourself margin rather than aiming at the exact boundary.
Still stuck? Discord says your file is too large covers the upload cap itself, and Discord images sending as files covers the display side. The rest of the fix guides and the full set of browser-based tools are there if you push a lot of clips through chat apps.
Discord limits cited from the File Attachments FAQ, the Server Boosting FAQ and the developer API reference, checked 16 September 2026. These numbers have changed before — verify against the official pages.