Your files never leave your device. All processing happens locally in your browser.
How do I compress a PDF to 20MB (under 20 MB) online without uploading the file?
Open Compress PDF to 20MB and drop your PDF onto the page — the target is already locked to 20 MB (20480 KB), so there is nothing to configure. The tool renders every page in your browser with Mozilla’s pdf.js, re-encodes the embedded images at a lower resolution and JPEG quality only as far as needed, and rebuilds the document with pdf-lib, aiming to land at or just under 20 MB. Because 20 MB is one of the most generous targets on offer — roomier even than the 15 MB, 10 MB or 5 MB presets — the compression is usually near-lossless or skipped entirely, so a photo-rich report, a bundled set of scans or an image-heavy slide deck drops under 20 MB while looking almost untouched and keeps its text selectable, and a file already under 20 MB is barely altered. It produces three quality variants in one pass — Best Quality, Balanced and Smallest — and marks each with a check when it meets the 20 MB cap, then shows the before/after sizes and the exact percentage saved. Only a very large, image-heavy scan running to many tens of megabytes is squeezed hard, and if 20 MB genuinely cannot be reached the tool reports the smallest size it achieved rather than returning an unreadable file. Everything runs in the tab, so nothing is uploaded and your PDF never leaves your device; the result downloads as your file name with a -compressed.pdf suffix.
Target locked to 20 MB (20480 KB) — drop a PDF and it compresses to fit that cap, with no settings to pick
Three quality variants in one pass (Best Quality, Balanced, Smallest), each tagged with a check when it lands under 20 MB
One of the most generous targets — roomier than 15 MB, 10 MB or 5 MB — so compression is usually near-lossless and text stays selectable
Runs entirely in the browser with pdf.js and pdf-lib — no upload, no install, no account
Ideal for portals and forms that cap a single upload at 20 MB, and for email — safely under Gmail’s 25 MB, and at Outlook.com’s 20 MB ceiling (leave a little margin for encoding overhead)
What is
Compress PDF to 20MB
Compressing a PDF to 20MB means reducing the document’s file size until it is at or under 20 megabytes (20480 kilobytes) — a generous ceiling that clears the many upload portals, web forms and content-submission systems that cap a single file at 20 MB, and that matches Outlook.com’s 20 MB attachment limit while staying well under Gmail’s 25 MB. Because most of a PDF’s weight is usually its images and scanned pages, a compressor reaches such a target mainly by down-sampling those images to a lower resolution (DPI) and re-encoding them with lossy JPEG compression; stripping metadata and, when needed, converting pages to grayscale free up further bytes, while vector text and fonts stay untouched where possible. 20 MB is one of the roomiest common targets — more generous than the 15 MB, 10 MB, 5 MB, 2 MB or 1 MB presets — so the compression is usually near-lossless: an ordinary report, a bundled document pack or an image-rich presentation slips under 20 MB while looking almost untouched and keeps its text selectable, and a file already under 20 MB is barely changed. Whether 20 MB is achievable depends on the content: nearly every document clears it easily, whereas only a very large, high-resolution scan running to many tens of megabytes may need whole pages rasterised to fit, or may bottom out just above the cap. This tool locks the target to 20 MB, renders the pages with Mozilla’s pdf.js and rebuilds the file with pdf-lib entirely on your device, so no cloud service is involved and the PDF is never uploaded.
PDF Tools
Related terms
PDF20MBfile sizecompressionlossyDPIJPEG qualitydownsamplinggrayscalemetadatapdf.jspdf-libscanned PDFupload limitemail attachmentOutlookweb formsubmission portalreduce PDF size
Frequently Asked Questions
No. The PDF is read and compressed to 20 MB entirely in your browser, so the file never leaves your device — there is no upload, server or account.
Nothing is uploaded. When you drop or pick a PDF, the tool reads it locally with the browser’s File API, renders its pages in memory with the pdf.js engine (whose worker is bundled locally, not fetched from a CDN) and rebuilds the compressed file with the pdf-lib library on your own machine. There is no server, upload, database, API or tracking in the processing path, so reports, contracts, scans and private paperwork you are shrinking for an email or a 20 MB upload box stay on your device; the tool works offline once cached, and closing the tab discards everything. The only optional network use anywhere on the site is consent-gated advertising, which never sees your files.
20 MB is one of the most generous targets, so quality loss is usually minimal — most documents keep their text selectable and scans stay crisp, and a file already under 20 MB is barely touched.
Reaching any size target uses lossy compression — images are down-sampled to a lower DPI and re-encoded as JPEG — but 20 MB is roomier than the 15 MB, 10 MB, 5 MB, 2 MB or 1 MB presets, so the tool rarely has to push hard. A photo-rich report, a bundled set of scans or an image-heavy slide deck typically lands under 20 MB with no visible change and keeps its text live and searchable, and a document already under 20 MB is left almost as-is. Three variants are generated in one pass (Best Quality, Balanced and Smallest) and the tool defaults to the best one that still fits. Only a very large, high-resolution scan running to many tens of megabytes is compressed firmly enough that fine detail softens, and if the tool must rebuild those pages as JPEG images to hit 20 MB the text on them becomes part of the picture; even then the result stays legible, and you can pick the Best Quality variant for maximum fidelity.
20 MB clears the many portals and web forms that cap a single upload at 20 MB, matches Outlook.com’s 20 MB attachment ceiling and stays well under Gmail’s 25 MB.
A great many upload portals, government and enterprise systems, learning platforms and web forms set their per-file limit at exactly 20 MB, and a document that clears that ceiling uploads without a “file too large” error. For email, 20 MB is the stated attachment limit on Outlook.com and comfortably under Gmail’s 25 MB; because email base64-encodes attachments and inflates them by roughly a third, it is worth keeping a little margin below a hard 20 MB mail limit, but for the countless 20 MB upload boxes on the web this is exactly the size you need. This tool targets that number: drop your PDF and download a version that clears 20 MB, then attach or upload it with confidence. If a portal specifies a tighter limit, 15 MB, 10 MB, 5 MB, 2 MB, 1 MB and smaller KB presets are one click away; for a looser cap, the 25 MB preset is just as close.
Yes. It runs entirely in your browser on any modern phone, tablet or computer, and works offline once the page has been cached — no app or install needed.
The tool is 100% client-side, so it works in any modern browser on Android, iPhone, iPad, Windows, macOS or Linux without installing anything. Because the compression happens on your own device with pdf.js and pdf-lib, it keeps working offline once the page has loaded once. One PDF is processed at a time and the practical size ceiling is your device’s memory, so a very large scan is bounded by available RAM; on a phone, extremely heavy files may compress more slowly, but because 20 MB is such a generous target most documents reach it quickly and stay entirely on the device.
Detailed Explanation
📖How It Works
Compressing a PDF to 20 MB — Entirely in the Browser
Compress PDF to 20MB shrinks a document to a fixed 20 megabyte target without uploading a single byte. The 20 MB target is read from the page URL and locked, so there is nothing to choose — drop your PDF and the tool goes to work. It renders every page in the browser with Mozilla’s pdf.js, re-encodes the embedded images at a lower resolution and JPEG quality only as far as needed, and rebuilds the file with pdf-lib inside a Web Worker, aiming to land at or just under 20 MB. Three quality variants are produced in a single pass — Best Quality, Balanced and Smallest — each tagged with a check when it clears the cap, alongside the original versus new size and the exact percentage saved. Because 20 MB is one of the most generous targets on offer — roomier even than the 15 MB, 10 MB or 5 MB presets — the compression is usually near-lossless: a photo-rich report or bundled set of scans drops under 20 MB while looking almost untouched, most documents keep their text selectable, and a file already under 20 MB is barely altered. Only a very large, image-heavy scan is squeezed hard, and if 20 MB is genuinely out of reach the tool reports the smallest size it achieved rather than producing an unreadable file. Everything runs on your device, so the PDF never leaves the tab.
Targets a 20 MB ceiling read from the URL and locked — one of the most generous common targets
Renders pages with pdf.js and rebuilds with pdf-lib in a Web Worker — no upload
Three variants (Best / Balanced / Smallest) with live sizes and a target-met check
Near-lossless at this size — scans stay crisp, text stays selectable, files already under 20 MB barely change
📋Use Cases
When a 20 MB PDF Is What You Actually Need
The 20 MB target is a common, generous ceiling for uploads and email. A great many upload portals, government and enterprise systems, learning platforms and web forms set their per-file limit at exactly 20 MB, and a document that clears that limit uploads without the “file too large” error. For email, 20 MB is the stated attachment limit on Outlook.com and comfortably under Gmail’s 25 MB — though because email base64 encoding inflates attachments by roughly a third, a file pushed right up to a hard 20 MB mail limit can still bounce, so for Outlook it is worth aiming a little lower. For the countless 20 MB upload boxes on the web, however, this is exactly the size you need. It is also a natural size for sharing a scanned report, a bundled document pack or an image-rich presentation through a portal without stripping out detail. You drop the PDF and download a version that clears 20 MB, then attach or upload it with confidence. When a portal specifies a tighter limit, 15 MB, 10 MB, 5 MB, 2 MB, 1 MB and smaller KB presets are one click away; for a looser cap, the 25 MB preset is just as close.
Matches the 20 MB per-file cap on many upload portals, enterprise and government systems, LMS platforms and web forms
At Outlook.com’s 20 MB attachment ceiling and well under Gmail’s 25 MB
Email base64 encoding inflates attachments by roughly a third, so for a hard 20 MB mail limit aim a margin lower
Sibling presets cover 15 MB, 10 MB, 5 MB and smaller for tighter caps, and 25 MB for a looser one
🔧Technical Details
How the 20 MB Target Is Reached
When the page loads at /compress-pdf-to-20mb, a URL parser (getPdfPresetFromPath) matches the “20mb” token, converts the megabyte value to kilobytes and fixes the target at 20480 KB, showing a locked-target banner (“Target: 20 MB”) instead of the usual preset grid. On drop, the PDF is read into an ArrayBuffer with the File API and pdf.js (pdfjs-dist) renders a first-page thumbnail and the page count, its worker bundled with the app locally rather than fetched from a CDN. Smart Compress hands the buffer and options { targetKB: 20480, grayscale, removeMetadata } to the smartCompressPDF routine (src/lib/workerClient.ts), which pursues two strategies and keeps whichever yields the smaller file that still meets 20 MB: it re-encodes the PDF’s embedded images at reduced JPEG quality and scale, and, when a target needs it, rasterises whole pages by having pdf.js paint each page onto an HTML canvas at a chosen DPI, encoding the canvas as JPEG and assembling a fresh PDF from those images with pdf-lib. Because 20 MB is a very roomy ceiling, the sweep of DPI and JPEG quality usually stops immediately or is skipped entirely — the Best variant frequently lands under the cap with no visible loss and most files keep their text live, so it is kept as the default. Three configurations run in one pass — Best Quality (highest DPI and JPEG quality), Balanced, and Smallest — and metadata is stripped by default. Each variant is measured, tagged when it lands under 20 MB, and the chosen one downloads from a local Blob with a -compressed.pdf suffix.
getPdfPresetFromPath parses the URL, converts 20 MB to 20480 KB and locks the target
pdf.js (pdfjs-dist) reads the page count and renders the thumbnail; its worker is bundled locally, not from a CDN
smartCompressPDF re-encodes images and, when needed, rasterises pages via canvas, rebuilding with pdf-lib
Three variants generated and measured in one pass; the chosen file downloads from a local Blob
⚠️Limitations
Honest Limitations
Whether 20 MB is reachable depends on the content, but the target is generous enough that almost every document clears it easily — and a file already under 20 MB needs no real compression at all. An ordinary report, form, scan or slide deck sits under 20 MB with plenty of room and stays crisp; only a very large, photo-heavy file — a long, high-resolution scan running to many tens of megabytes — has a physical floor, and past a point the tool stops at the smallest legible size it can produce and surfaces a warning naming that figure rather than returning junk. The savings come from lossy compression, so there is a genuine trade-off when the tool must rebuild pages as JPEG images to hit a target: the text on those pages becomes part of the picture and no longer selectable or searchable. At 20 MB, though, that aggressive step is almost never needed, so documents keep their text live. One caveat for email specifically: 20 MB is the raw file size, and because email base64-encodes attachments and inflates them by about a third, a file pushed right to a hard 20 MB mail limit can still be rejected — aim lower for Outlook. Everything runs in browser memory, so a very large or high-page-count PDF is bounded by your device’s RAM, and the tool compresses one PDF at a time rather than a batch. The file must be openable by pdf.js and pdf-lib — a password-protected or corrupt document reports a clear, auto-dismissing error instead of a broken result. If a huge scan will not fit even 20 MB, enabling grayscale, removing spare pages or splitting the document first usually gets you under the cap.
Almost every document reaches 20 MB with room to spare; a file already under 20 MB needs no real compression
Only a huge photo-heavy scan may bottom out above 20 MB, and the smallest achieved size is reported with a warning
For a hard 20 MB email limit, base64 encoding overhead (~33%) means you should aim a margin lower
In-browser processing bounded by device RAM; one PDF at a time; password-protected or corrupt files report a clear error
🔒Privacy & Security
Privacy: Your PDF Never Leaves the Tab
The documents people compress for a 20 MB upload box are often the sensitive kind — contracts, financial reports, signed forms, scanned records — and this tool is built so none of it leaves your machine. The file is read with the browser File API, rendered entirely in memory with pdf.js (whose worker is bundled locally, so no third-party CDN is contacted), and the compressed document is rebuilt with pdf-lib inside a Web Worker on your own device. There is no server, upload, database, logging, API or CDN anywhere in the processing path, and the finished PDF is generated locally and downloaded straight from a Blob. The tool works offline once the page has been cached, and closing the tab discards every byte. There is no login and no telemetry, and the only optional network use anywhere on the site is consent-gated advertising, which never sees your files.
PDF read, rendered and rebuilt entirely in the browser; nothing uploaded
No server, upload, database, API or CDN in the processing path; pdf.js worker bundled locally
Compressed PDF built on-device in a Web Worker and downloaded from a local Blob; works offline once cached
No login or telemetry; closing the tab discards everything
Compress PDF to 20MB — target, quality and limits
Capability
Support
Notes
Target size
Locked at 20 MB (20480 KB)
Parsed from the URL; a banner replaces the preset grid so there is nothing to configure
Quality variants
Best, Balanced, Smallest
Three generated in one pass; each tagged with a check when it lands at or under 20 MB
Method
Image re-encode + page rasterise
pdf.js renders pages, images are down-sampled and JPEG-re-encoded, and pdf-lib rebuilds the file
Fidelity
Very generous, so near-lossless for most files
The sweep usually skips at 20 MB, so scans keep detail and documents keep selectable text; files already under 20 MB barely change
Best fit
Portal & form uploads capped at 20 MB
Also Outlook.com’s 20 MB email ceiling and under Gmail’s 25 MB; for a hard mail limit aim lower for Base64 overhead
Privacy & scale
In-browser, bounded by RAM
Compressed with pdf-lib in a Web Worker on-device, one PDF at a time; 100% client-side, no upload
Compress PDF to 20MB locks the target at 20 MB / 20480 KB (parsed from the URL) and rebuilds the document in the browser: pdf.js renders the pages, images are down-sampled and JPEG-re-encoded, and pdf-lib assembles the result inside a Web Worker, producing three variants (Best, Balanced, Smallest) each marked when it clears 20 MB. Because 20 MB is very roomy — more generous than the 15 MB, 10 MB or 5 MB caps — the compression is usually near-lossless, so scans keep detail and most documents meet the cap without rasterising pages, keeping text selectable, and a file already under 20 MB barely changes; ordinary files reach it easily, while a huge photo-heavy scan stops at the smallest legible size with a warning. It suits the many upload portals and web forms that cap a single file at 20 MB and matches Outlook.com’s 20 MB email limit (stay under Gmail’s 25 MB; aim a margin lower for a hard mail limit because Base64 encoding adds about a third). Reaching the target is lossy, so any rasterised pages lose selectable text. Everything runs on-device; nothing is uploaded.