Compress a scanned PDF
Scanners are gloriously wasteful: 300 or 600 dpi color pages for documents that are black text on white paper. That's why a simple signed form comes out at 15 MB. Rebuilding the scan at a sane resolution recovers almost all of that.
This page opens the compressor with grayscale already on, which suits most scans and compounds the savings. Pages re-render locally one at a time, with a real cancel button and verified page counts on the output.
Loading tool…
This is Compress PDF preconfigured for this task — open the full tool for every option.
How it works
Drop in a PDF; its pages are counted locally.
Pick a preset (Recommended 144 dpi, Small 96 dpi, High 216 dpi) or set your own resolution and quality. Grayscale is one checkbox for scans.
Pages render and re-encode one at a time with progress and a working cancel.
The rebuilt file is reopened in two independent parsers to verify every page made it, then you get honest before and after sizes.
What the tool does
- Renders each page locally and rebuilds a fresh, smaller PDF
- Presets plus custom dpi and quality control
- Grayscale mode for scanned documents, often the biggest saving of all
- Page-count verification through two independent PDF parsers
- Flattening leaves source metadata, attachments, scripts, and hidden structures behind, which doubles as a privacy scrub
- Says so plainly when compression would make your file bigger
How the result is verified
The rebuilt document is reopened with pdf-lib and PDF.js independently, and both must report the same page count as your original. The displayed size is measured from the actual output bytes. If either parser fails, the download is blocked.
Frequently asked questions
Why are my scans so huge in the first place?
Scanners default to high dpi and full color to be safe, which quadruples or worse the data for a typical text document. Most scans are read on screens where 96 to 144 dpi looks identical.
Will this remove the scanner's hidden metadata too?
Yes, as a side effect: the output is rebuilt from rendered pages only, so device metadata, timestamps, and any embedded extras from the scanner simply aren't in the new file.