Compress a PDF to 100 KB

Get a PDF under 100 KB for a strict upload form, without uploading it anywhere else.

Runs entirely in your browser

Loading the tool…

Your file is opened by this page and never uploaded. It is not sent anywhere, and the page keeps working with the network off.

100 KB is the tightest limit upload forms commonly set, and it is usually asked for one scanned document: a certificate, an identity card, a signature, a mark sheet. This page opens on that limit. Choose the PDF, press Compress, and it tries settings from the gentlest to the harshest until the file comes in under 100 KB, then keeps the gentlest one that did.

What fits in 100 KB is roughly one page of scan, read on a screen rather than printed. Pictures inside the file are re-saved as JPEG at a lower quality and, if needed, at fewer pixels, down to 500 on the longest side; text and fonts are left exactly as they are, because they are already compressed and would not get smaller. If the file has several pages, it is worth asking whether the form needs all of them: one page of a five page scan is a fifth of the size before anything is compressed.

Nothing is uploaded to do this. The file is rebuilt in this tab, and the page cannot open a connection to anywhere, which matters for exactly the documents that get asked for at 100 KB.

How to use it

  1. Choose your PDF. It is read in this tab and never uploaded.
  2. Leave the size this page opened on, or pick another under Smaller than.
  3. Press Compress: the gentlest setting that gets under the size is found for you.
  4. Download the result, which is already named as the compressed copy.

Questions

Will a scan still be readable at 100 KB?

A single page usually is: printed text stays legible on screen well below the point where a photograph starts to look rough. What suffers first is fine print and faint pencil. Check the downloaded file before you submit it; if it is not readable, the page has too much on it for 100 KB, and cropping it to just the document, in the photo editor before turning it into a PDF, helps more than any setting.

My PDF is three pages. Can that fit in 100 KB?

Sometimes, if the pages are mostly text and the scans are small. Each page gets roughly a third of the budget, so the pictures are squeezed harder than for one page. If it will not fit, the form probably expects one page per upload: take each page out on its own with Split PDF.

Why is it still over 100 KB at the harshest setting?

Because what is left is not pictures. A PDF made from a word processor carries its fonts, and a single embedded font can be tens of kilobytes on its own. Compression cannot touch that; printing the document to PDF again with the fonts not embedded, or as a scan, can.

Is my PDF uploaded to do this?

No. It is read and rebuilt in this tab, by WebAssembly and your browser's own image encoder, and the page is served with a rule that forbids it from opening a connection anywhere. Turn the network off after the page loads and it works the same, which is the way to check rather than take it on trust.

What if it cannot get small enough?

It says so, with the smallest size it reached and why. Only the pictures inside a PDF can be squeezed; its text, fonts and structure are already compressed, so a file that is mostly those has a floor. Below that the way down is fewer pages: Split PDF takes out the ones the form does not need.

Getting under 100 KB

If the file isThen
One scanned pageUsually fits, at a medium or low setting
Several scanned pagesMay fit if the scans are small; otherwise split it
A phone photo turned into a PDFFits, with the picture scaled down a long way
Text from a word processorDepends on its fonts, which cannot be squeezed
Already under 100 KBLeft alone, and you are told so

Other sizes

The same tool opened on another limit. Any of them will aim at any size once you are there.

Your data stays on your device

Everything above runs inside your browser as WebAssembly compiled from Rust. Nothing you type is uploaded, logged or stored on a server. You can load this page once, go offline, and it still works.

This page makes no requests at all, to anywhere. That is not a promise in the copy: it is a Content-Security-Policy header your browser enforces, and connect-src on it is none. Open the network tab and watch nothing happen.