Compress PDF

Reduce your PDF file size by stripping metadata and optimizing the internal document structure. No uploads — runs in your browser.

Choose a PDF file

Browse files

or drag and drop · PDF — up to 100MB

Processed on your device. This file is never uploaded.

How PDF compression works in the browser

This tool uses pdf-lib to load your PDF and re-serialize it using object streams — a more compact internal format that groups small objects together and compresses them as a single unit. It also copies all pages into a fresh document, which eliminates orphaned objects left behind by previous edits, and drops document metadata.

The result is a structurally cleaner PDF. How much smaller it actually gets depends entirely on how much structural bloat the original carried.

What this tool does not do

It does not re-encode images. That's worth being clear about, because image data is what makes most large PDFs large. Genuinely compressing a scanned document means rasterizing each page, re-encoding the bitmaps at lower quality, and rebuilding the file — a rendering pipeline that pdf-lib doesn't include. If your PDF is mostly high-resolution scans, expect single-digit gains.

Where this tool does help is documents that have been edited, merged, or re-saved repeatedly, accumulating orphaned objects and redundant cross-references along the way.

When the result is bigger

Re-serialization can inflate a file that was already written efficiently. When that happens the tool returns your original file unchanged and tells you why, rather than reporting a 0% reduction over a file it quietly made worse.

What stays the same

All visible content is preserved. Text, images, vector graphics, and page-level annotations appear exactly as they did in the original. Two document-level structures cannot survive the page copy: bookmarks and interactive form fields. The tool detects these and warns you before you download.

The entire process runs in your browser. Your PDF file is read into memory, processed by pdf-lib's JavaScript engine, and the output is generated locally. Nothing is sent to any server.

Frequently asked questions