How it works

Every pdfpix tool runs inside your browser tab. The page loads a PDF reader and a PDF writer as ordinary code, points them at the file you picked, and never sends a byte anywhere. Then it reads the result back with the reader and compares it against your original before offering you a download.

What happens when you open a tool

One browser tab, two independent engines

  1. pdf.js reads your file

    The reader Firefox ships opens the PDF from your disk and counts what is in it: the pages, their sizes and every character you can select.

  2. pdf-lib writes the new one

    A separate library builds the output on your own processor. It never reports on its own work, so it cannot confirm its own mistakes.

  3. pdf.js checks the result

    The reader opens the finished bytes the way a viewer would and counts again. The two counts have to agree or there is no download button.

Your document never crosses this line

No step above needs a server

All three engines arrive as ordinary JavaScript and WebAssembly when the page loads. After that the network is idle. Disconnect it and run a tool: the file opens, the work runs and the check runs, because everything the job needs is already in the tab.

Nothing leaves the tab

The page loads a PDF reader and a PDF writer as ordinary JavaScript and WebAssembly, then runs them on the file you picked. Your file is passed to code already running in your browser. There is no upload, no queue and no server that ever sees it. Turn off your network after the page loads and the tool still works.

Every result is checked

Compression can quietly wreck a document. So the compressor does not trust its own output: it opens each candidate again with the same reader a viewer would use, counts the pages, and counts the non-space characters it can select. A candidate that keeps under 98% of the characters the source had is thrown away, not shipped. What you download is the smallest candidate that survived that check.

Selectable text stays selectable

The quickest way to make a PDF small is to turn every page into a picture. That also destroys search, copy and screen readers. pdfpix will not do that silently. Three of the four compression methods never touch the text at all:

A fourth method renders the pages and draws the original text back over them as invisible, selectable text. It runs only when the other three cannot reach the size you asked for, and only after you press the button that offers it. It faces the same check as everything else.

What a tight target gets

For a tight number the tool offers a smallest setting that redraws the pages harder and keeps the text selectable. Every result shows the exact size it reached, and every file it offers has passed the same check. It never ships a broken file to make a number.

The checker is not the writer

A tool that grades its own homework proves nothing. So the two halves of every pdfpix operation come from different projects. The writing half uses pdf-lib, which builds and edits the file. The checking half uses pdf.js, the reader Firefox ships and the same engine that draws PDF previews in millions of browser tabs. The checker never sees how the file was made. It gets the finished bytes, opens them the way a viewer would, and reports what it finds.

That split is what makes the result worth anything. If the writer produced a page with a broken font reference, a writer-side check would happily confirm its own intent. The reader confirms what actually reached the page. When the two disagree, the candidate is thrown away and the tool tells you rather than handing over a file that looks finished.

What each tool checks

The checks differ because the jobs differ, but the shape is the same: count something in the source, count the same thing in the output, compare the numbers, and refuse a mismatch.

ToolWhat it counts in the sourceWhat has to match in the output
Merge and organize What it counts in the sourcePage count, each page size, selectable characters per page What has to match in the outputAll three, page by page
Compress What it counts in the sourceThe same three, plus the byte size What has to match in the outputAll three, and a byte size under the one you asked for
Images to PDF What it counts in the sourcePixel width and height of every image you chose What has to match in the outputThe pixel width and height read back out of the finished PDF
PDF to images What it counts in the sourceEach page size at the resolution you asked for What has to match in the outputThe width and height of every picture written
Redact What it counts in the sourceThe marked areas and the text under them What has to match in the outputEvery mark black, no selectable text across a mark, and the removed text absent from the raw bytes
Protect, unlock and repair What it counts in the sourcePage count, page sizes, selectable text What has to match in the outputAll three, read back with or without the password as appropriate

A failed check does not produce a warning next to a download button. It produces no download button. The original file on your computer is never modified in any case, so a refused result costs you nothing but the time it took to run.

What the compressor does on public files

The compression figures on this site come from one run over 114 public documents, at 16 size targets from 20 KB to 10 MB. Every case produced a verified file, and none came back larger than its source. Half the outputs were at least 72.5 percent smaller than their input, and the top tenth were at least 97.1 percent smaller. Every output that carried text kept at least 99.99% of its characters. Per page, a text document comes down to about 14 KB, a scanned page to about 29 KB, a page scanned in colour to about 27 KB and a phone photo of a page to about 18 KB, so even the small targets hold real documents. The median run finished in about 1.7 seconds.

Questions people ask

Does anything I open leave my computer?
No. The reader, the writer and the checks are all code running in the page you have open. There is no upload step, no queue and no server copy. Load the page, turn off your network, and the tools still run.
How big a PDF can a browser tab handle?
There is no limit set by the site. The limit is the memory your browser tab can hold, because the file, the working copy and the candidate output all sit there at once. A desktop browser handles far larger files than a phone.
Why does compression sometimes miss the target?
Because the target has to survive the checks. If the smallest candidate that keeps the pages and the text is still bigger than the size you asked for, the tool reports the size it did reach instead of shipping a file that failed.
What does 98 percent of characters mean?
The check counts the non-space characters it can select in the source and in the candidate. A candidate that returns less than 98 out of every 100 of them is treated as damaged and dropped. In the measured runs the middle case returned all of them.
Do I need to install anything?
No. There is no extension and no desktop app, and no account is needed. The tools are web pages. They need JavaScript and a recent version of Chrome, Firefox, Safari or Edge, which is what a browser released in the last two years gives you.
Why is there no OCR here?
Recognising characters in a scan needs a model far too large to send to a browser tab, and it needs a machine to run on. Rather than ship a weak version, the site leaves it out and says so. Spreadsheet conversion is different: a table announces itself through the alignment of text the PDF already carries, and a workbook stores its cells, so both directions run in the tab and check their own output.

Where to go next