Compress PDF

Make a PDF smaller so it fits under email and upload limits — free, no watermark, no signup.

Up to 25 MB. Your file is processed in memory and never stored.

The result downloads automatically when ready.

100% free No signup No watermark Processed in memory, never stored

How it works

  1. Upload. Choose the PDF you want to shrink (up to 25 MB).
  2. Compress. Press Compress PDF — the file is rebuilt with deflate compression and image re-encoding in memory.
  3. Download. Your smaller PDF downloads automatically; the original is never stored.

About this tool

This PDF compressor rewrites your document with deflate compression, image re-encoding and a full garbage-collection pass, so the file gets smaller without turning your text into a blurry scan. It's built for the everyday problem of a PDF that's just over an email or upload limit. Text stays selectable, the layout is untouched, and there's no watermark anywhere on the result. How much you save depends on what's inside — image-heavy PDFs shrink the most, while a file that's already optimized may only drop a little.

What people use it for

  • Get a PDF under a 10 MB or 25 MB email attachment limit
  • Shrink a scanned contract before uploading it to a portal
  • Reduce a slide deck exported to PDF for faster sharing
  • Trim image-heavy reports so they open quickly on mobile

Developer API

Automate this tool from your own code. Send a POST request to the endpoint below and get the same result the web tool produces. It is rate-limited per IP and needs no signup — API keys for higher limits are coming.

POST https://best.free/api/tools/compress-pdf/
Parameter Example Required Notes
file (file) document.pdf Yes PDF, ≤25 MB.
curl -X POST https://best.free/api/tools/compress-pdf/ \
  -F 'file=@document.pdf' \
  -o compressed.pdf
import requests

files = {"file": open("document.pdf", "rb")}

r = requests.post("https://best.free/api/tools/compress-pdf/", files=files)
with open("compressed.pdf", "wb") as out:
    out.write(r.content)
const fd = new FormData();
fd.append("file", fileInput.files[0]);

const r = await fetch("https://best.free/api/tools/compress-pdf/", { method: "POST", body: fd });
const blob = await r.blob();  // the compressed.pdf

Response: The compressed PDF (application/pdf).

Frequently asked questions

Only PDF files. Upload a .pdf and you get a smaller .pdf back — the page count, text and layout are preserved.

Up to 25 MB per file on the free tier. That covers the large majority of documents that are too big to email.

No. There is no account, no email and no payment. The hourly free limit applies per IP address.

No. The output is your document, just smaller — nothing is stamped, branded or added to any page.

No. The PDF is processed in memory and discarded as soon as the compressed copy is sent back. Nothing is written to disk.

No. Text is vector data and stays sharp and selectable. Only embedded images are re-encoded, which is where most of the size saving comes from.

It depends on the contents. Image-heavy and scanned PDFs often drop 40–70%; a file that is already optimized may shrink only slightly.

This tool compresses one PDF per run. To combine documents first, use the Merge PDF tool, then compress the result.

Yes. POST your file as multipart/form-data to /api/tools/compress-pdf/ and the processed file streams straight back — the same engine the web tool uses, so results are identical. It is rate-limited per IP like the web version and needs no signup; API keys for higher limits are coming. See the API section above for ready-to-run curl, Python and JavaScript examples.