Compress images for Discord — fit the 25MB cap

Discord's free tier blocks any file over 25MB from uploading inline. That's a real wall for screenshots from high-res monitors, RAW exports, or anything saved as PNG. Drop your image here and compress it to WebP or JPG in seconds — the converter runs entirely in your browser, so your screenshot never touches a server. Pick a quality level, hit download, and paste it straight into Discord.

Compress now →

Why Discord caps uploads at 25MB

Discord's free tier enforces a 25MB per-file upload limit, and that number has been the same since the early days of the platform. The reason is straightforward: Discord runs a persistent CDN that stores and re-serves every uploaded file. Uncapped uploads would make hosting costs scale unpredictably with the user base, so a hard limit keeps bandwidth costs manageable. Nitro Basic subscribers get 50MB. Full Nitro subscribers get 500MB. If you have Nitro and are sharing large files routinely, you probably don't hit the wall often — but even Nitro users occasionally need compression. Discord's per-channel and per-guild rate-limiting can treat very large files as potential spam signals, and older Discord desktop clients (versions before mid-2023) have documented issues rendering WebP and AVIF files above certain dimensions. Compressing before uploading sidesteps both problems and makes the file load faster for recipients on slow connections or mobile data.

What format Discord displays inline

Not every image you paste into Discord will render as a visible preview — it depends on the format. PNG renders inline everywhere: web app, desktop client, iOS, Android. JPG is equally universal. WebP renders inline in the Discord web app (Chrome and Firefox) and in every desktop client from late 2021 onwards, making it the right choice for almost all users today. GIF renders inline and plays automatically, though it has its own file-size considerations. AVIF is the outlier. As of early 2025, the Discord desktop client did not render AVIF inline — the file would attach as a generic icon rather than an image preview. By early 2026 the situation is still patchy: newer Discord desktop builds handle AVIF on some operating systems, but mobile clients lag behind and behavior across server regions varies. For compressed images you actually want recipients to see in the chat, the safe choices remain WebP for modern clients and JPG as the universal fallback. Avoid AVIF until Discord publicly documents consistent inline support.

How to compress an image for Discord

The entire process runs locally in your browser using WebAssembly codecs. Your screenshots, photos, and images never leave your device:

  1. Click "Compress now →" above or drag your image onto the drop zone on the homepage. Any common format works as input — PNG, JPG, WebP, or AVIF.
  2. Choose your output format. WebP at quality 75 is the best starting point: it cuts a typical 4MP screenshot from 12MB (PNG) down to roughly 200–250KB while keeping the image looking sharp. If you need guaranteed compatibility with everyone in the server, pick JPG instead — JPG q75 will hit around 300–350KB for the same screenshot.
  3. Set the quality slider. Quality 75 is the practical sweet spot — it delivers around 80% file-size reduction on photographic content with changes that are imperceptible to most eyes. Drop to quality 50 if you need to fit a very large image under 25MB and don't mind mild compression artifacts. Quality 90 is available when image fidelity matters more than size.
  4. Check the output file size shown in the preview panel. If it reads under 25MB, you're good to go. If it's still over — which would only happen with an extremely large source — lower the quality by 10 and try again.
  5. Click the download button. The compressed image saves to your Downloads folder. Drag it directly into the Discord message box, or use the file attachment button. It will upload instantly and render inline as a visible image preview.

File size comparison: before and after compression

Measurements from a typical 4-megapixel (2560×1600) desktop screenshot. Results at each format and quality setting, compressed using libwebp and mozJPEG at the specified quality values.

SourceFormatQualityFile size
2560×1600 screenshotPNG (uncompressed)~12 MB — BLOCKED
2560×1600 screenshotJPGq90~800 KB — fits
2560×1600 screenshotJPGq75~310 KB — fits
2560×1600 screenshotWebPq75~210 KB — fits
2560×1600 screenshotWebPq50~110 KB — fits

Nitro vs free tier: when this matters

Discord's upload limits by tier are: free accounts get 25MB per file, Nitro Basic gets 50MB, and full Nitro gets 500MB. The 25MB limit is the one that affects the most people — every free account user hits it the moment they try to share a raw screenshot from a modern monitor or any photo exported at full resolution. If you have Nitro, you'll rarely need a compression tool for casual Discord use. A 4MP screenshot at 12MB uploads fine under 50MB (Nitro Basic) or 500MB (full Nitro). But compression still has practical value even with Nitro. First, Discord's CDN throttles very large files differently on congested servers — a 400MB video file technically fits under Nitro's cap but can time out on slow connections. Second, Discord's per-channel rate limit applies to data volume, not just message count, so posting large uncompressed images repeatedly can trigger a temporary slowdown. Third, recipients on mobile data get charged for every megabyte of preview they load; sending a 210KB WebP instead of a 12MB PNG is a genuine courtesy. For free-tier users, compression is simply necessary — there is no workaround for the 25MB wall other than making the file smaller.

Under the hood: which codecs are used

WebP compression uses libwebp, Google's reference WebP implementation, maintained at chromium.googlesource.com/webm/libwebp. The same library ships inside Chrome and is the most widely tested WebP encoder available. At quality 75, libwebp applies an adaptive lossy compression that preserves high-frequency detail in sharp edges while aggressively reducing flat regions — which is exactly the right tradeoff for screenshots. JPG compression uses mozJPEG, Mozilla's optimized JPEG encoder at github.com/mozilla/mozjpeg. mozJPEG uses a trellis quantization pass that finds better quantization tables than the classic libjpeg, which means smaller files at equivalent visual quality — typically 10–15% smaller than a libjpeg file at the same quality setting. If your source is a PNG that needs lossless optimization rather than lossy compression, oxiPNG at github.com/shssoichiro/oxipng is available as a codec option. oxiPNG applies multi-pass DEFLATE optimization to reduce PNG file size without touching pixel values. All three codecs run as WebAssembly modules inside a Web Worker, which means the browser UI stays responsive and, critically, your images never leave your machine.

FAQ

What's the actual Discord upload limit?

Free Discord accounts can upload files up to 25MB per file. Nitro Basic subscribers have a 50MB limit. Full Nitro subscribers have a 500MB limit. These limits apply per file, per upload — they are not cumulative daily limits. If your file exceeds the limit, Discord will refuse the upload entirely and show an error rather than silently degrading the image.

Will Discord re-compress my image after I upload it?

Yes, but only for the thumbnail previews it generates. Discord creates smaller preview images for the inline chat display and stores them separately on its CDN. The original file you uploaded is stored intact and served at full resolution when a recipient clicks to view the full image or downloads it. Starting with a smaller, well-compressed file means the thumbnail generator has less work to do and the preview loads faster for everyone.

Why is my screenshot 12MB when it's 'just' a screenshot?

PNG screenshots from modern high-resolution monitors are large because PNG is a lossless format — it stores every pixel exactly. A 2560×1600 screenshot at 24-bit color needs to store 4,096,000 pixels × 3 bytes each = roughly 12MB of raw data before compression, and PNG's DEFLATE compression only helps on content with repetitive patterns. A screenshot of a complex web page or code editor with many colors and fine text compresses poorly and easily hits 10–15MB.

Should I use PNG, JPG, or WebP for Discord?

It depends on what the image will be used for. For screenshots you're sharing casually and want people to view in chat, WebP at quality 75 gives the best size-to-quality tradeoff and renders inline on every modern Discord client. For photos, JPG at quality 75-90 is a safe choice and has slightly broader compatibility on older client versions. Only use PNG when lossless accuracy matters — for example, sharing a UI design screenshot where pixel-level fidelity is important — and only if the file is already under 25MB.

Does Discord support AVIF as of 2026?

Partially. Newer Discord desktop builds (late 2025 and beyond) can render AVIF inline on some systems, but support is inconsistent — it depends on the operating system, the client version, and in some cases the server region. Discord mobile clients (iOS and Android) lag behind the desktop client and AVIF support remains unreliable as of early 2026. For images you want recipients to see as inline previews rather than download as attachment icons, stick to WebP or JPG until Discord officially documents consistent AVIF support across all platforms.

Will my image look noticeably worse at quality 75?

For most photographic content and complex screenshots, quality 75 is imperceptible — the human visual system does not reliably distinguish q75 WebP or JPG from the original unless images are placed side by side at full zoom. Quality 50 is where compression artifacts start becoming visible on fine text, sharp edges, and high-contrast patterns. If you're compressing a screenshot of code or text and quality 75 looks soft, try JPG q85 instead — mozJPEG handles text-heavy content better than WebP at medium quality settings.

Does this tool work offline?

Yes. After the first page load, a service worker caches the app shell and all WebAssembly codec modules (libwebp, mozJPEG, oxiPNG). Every subsequent compression runs with no network connection required. The app is also installable as a PWA from Chrome or Edge — it will appear in your dock or app launcher and open as a standalone window, which is convenient if you compress Discord images regularly.

Do my screenshots get uploaded anywhere?

No. The conversion runs entirely inside your browser using WebAssembly. You can confirm this yourself by opening the Network tab in your browser's developer tools before starting a compression. You will see zero outbound requests during the encode step — only the initial page load. There is no server, no account, and no logging. Screenshots of private conversations, confidential documents, or anything sensitive stay on your device.

Can I batch compress multiple images at once?

The current workflow processes one image at a time. For compressing several images for Discord, open /convert in multiple browser tabs and run them in parallel — each tab runs an independent WebAssembly instance, so there's no interference between them. True batch processing with a queue and bulk download is on the roadmap.

Why not just let Discord compress the image automatically?

Discord does not compress images you upload — it only generates smaller thumbnails for the inline preview. The original file is stored and served unchanged. If your original is 12MB and over the limit, Discord refuses the upload entirely; it doesn't auto-compress it to fit. Even if it did, letting Discord's server pipeline choose the quality setting would give you no control over the output. Compressing yourself means you decide the tradeoff between file size and image quality, and you can verify the result before anyone else sees it.