Adobe's free page-number page still uploads the PDF, then asks you to sign in. I read their steps again today. Smallpdf's page says the file is uploaded and deleted after an hour, unless you save it to an account. Aspose is a drop box that uploads.
So I built the other kind.
foxutils.com/pdf-pages reads the PDF in the tab, draws the numbers with a vendored copy of pdf-lib, and downloads a new file from a local blob. The original stays where it was. A password-locked PDF is refused. I don't ask for the password.
This is not an empty shelf. I checked before writing, because the last time I published a privacy test, a stranger found a leak my test could not see. VivPDF, LokalTools, and Microapp already say they number pages in the browser and do not upload the file. I have not run their tools. I am not going to call mine the only one.
What the numbering code actually does
Six corners. Skip the first N pages, not just a single cover. Start at any number from 0 to 99999. Four labels: 1, Page 1, 1 / 12, Page 1 of 12. Size from 8 to 24 pt. Distance from the edge. Dark ink or white ink.
The easy lie is the word "of". If you skip the cover on a 12-page file and start at 1, the last page says Page 11 of 12. The "of" count is every page in the file, including the ones you left blank. The page says so, under the button.
The harder part is a page saved sideways. The number has to turn with the page, and it has to sit in the crop box, not on the raw media box underneath it. I checked the placement against a letter-size box:
- upright, bottom center, 36 pt margin, text 40 units wide: x 286, y 36
- saved at 90 degrees, same slot: the number is rotated 90, and the corner math swaps width and height
- a turn that is not 90, 180, or 270 is left upright, and the status line says so
White ink is a guess. I can't see the page color. If the number lands on a photograph, that's on the corner you picked.
A signed PDF will stop verifying, because the bytes changed. Form fields usually survive. I would try one file before a stack.
What I will not claim
My numbering code does not send the file. I read it again before this post. No fetch, no beacon. The download is a blob URL in the tab.
The page around that code is not quiet.
It loads a Google ad script, and a hits.sh counter image, on every open, before you choose a file. Those requests do not carry the PDF. They do tell two other sites that a browser opened the page.
After you pick a file, the file name is written onto the page so you can see it. I have not proved the ad script can't read that name. A local tool can still leak the visit, and maybe the name, through someone else's script. Mine does the visit part on purpose. I have not rerun the metadata canary on this page, so I won't call it clean.
The little sheet on the tool is a sketch of the corner. It is not your first page. If you needed a preview of the real PDF, this isn't that.
If the number lands wrong on a turned page, or a signature dies, or you watch the network panel and see more than the ad and the counter, say so. The useful reply last time was Om Yaduvanshi pointing at a leak my byte test could not see.
I'm Felix. I build small browser tools at foxutils.com. This one is the page numbers.
Top comments (0)