My Tools Garage

Compress PDF

Shrink a PDF losslessly, in your browser.

in-browser

How to use

  1. 1 Drop a PDF onto the box, or click to choose one.
  2. 2 Wait for the optimisation to finish — it is automatic.
  3. 3 Check the before/after sizes and how much was saved.
  4. 4 Click Download to save the smaller (or original) file.

About Compress PDF

Compress PDF rebuilds your document with a leaner internal structure to make the file smaller without touching how it looks.

It re-saves the PDF using object streams and removes redundant, duplicated resources, then shows you the before and after sizes and exactly how much was saved.

If the file is already well optimised and cannot be made smaller, the tool says so and simply hands back the original — it never dresses up a bigger file as a "compressed" one.

Be clear about what this does and does not do: the optimisation is lossless and structural, so text stays crisp and nothing is re-rendered.

It works best on PDFs bloated by repeated fonts, embedded duplicates or verbose object tables — the kind produced by many office exporters and PDF generators.

It does not re-encode or down-sample embedded photographs, so a PDF made of high-resolution scans may shrink little or not at all; that is an honest limitation of doing everything safely in the browser.

All processing happens locally with pdf-lib inside your browser, so the document is never uploaded and the tool keeps working offline once loaded.

Your original is read only, and the optimised version arrives as a separate download.

FAQ

Does compressing reduce the quality of my PDF?

No. The optimisation is lossless: it streamlines structure and removes duplicate resources without re-rendering pages or images.

Why didn’t my scanned PDF get smaller?

Scans are mostly large embedded images. pdf-lib does not re-encode images in the browser, so image-heavy files may shrink little — we then offer the original unchanged.

Is my file uploaded for compression?

No. The PDF is optimised with pdf-lib entirely on your device and never sent to a server.