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 we cannot promise

A size target is not always reachable. If the smallest surviving candidate is still over your target, the tool says so and shows you the number it did reach. It does not ship 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 numbers actually were

The compression figures on this site come from one measured run over a corpus of 120 files. Fifty-five of them reached the exact byte target and none produced a file larger than the source. Half the outputs were at least 59.2 percent smaller than their input, and the top tenth were at least 88.1 percent smaller. Text retention came back at all of the characters for the median, the tenth percentile and the worst single case. Half the files finished in under 2512 milliseconds and the slowest took 9119. Scans hit their target far more often than text documents, because a scan is mostly image data and image data is where the room is.

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 or spreadsheet conversion?
Those jobs need a model or a converter that is far too large to send to a browser tab, and they need a machine to run on. Rather than ship a weak version, the site leaves them out and says so.

Where to go next