How our tools work
Last updated: 10 October 2026
Every NoUploadPDF tool works on your file inside your own browser, on your phone or computer. This website only sends you the page and the tool, and your file is never uploaded. Below: what happens to your file, step by step, and what is inside the tools.
- The work happens on your device
- No tool has an upload step
- Most tools keep working offline
What happens to your file, step by step
- You open a tool. Your browser downloads the page, its styles, its scripts, our fonts and the engine that tool needs, all from this site. Your browser keeps the engine and the scripts for next time. Google's ad code, which pays for the site, comes on top.
- You choose a file. Your browser hands it to the page, and the page reads it into your device's memory. The tools that draw pages with pdf.js read a big PDF in pieces, as they need them, instead of all at once.
- The tool works on it there. The work runs inside the page or in a background worker, a helper your browser runs beside the page so the screen stays responsive while a big file is worked on.
- The new file is made in memory. The result is built in your device's memory as a file your browser can save. There is no step where it goes to a server, because the tool has no upload step.
- You save it. Your browser saves it like any download, to the place it normally saves downloads. The site keeps no copy of your file, because there was no upload to keep.
That is the whole journey. The file never travels to a server and back, which is why a big file doesn't wait for a slow upload, and why we set no limit on how big a file can be. The engines table below shows what each engine downloads on a first visit.
What each tool does inside
Here is what the tools do with your file, by kind of job:
- Compress PDF: finds pictures stored sharper than needed, resizes them and repacks the rest of the file. Text and drawings stay sharp.
- Resize PDF and the 100 KB and 200 KB pages: try settings until the file fits the size you pick, or scale every page to the paper you choose.
- JPG to PDF and PNG to PDF: copy JPG photos into the file as they are, so they keep their full quality.
- Word to PDF: lays the pages out itself, with open fonts that have the same letter widths as Word's (Carlito, Caladea, Liberation and DejaVu), Noto fonts for Indian languages, and HarfBuzz, the text engine browsers use, to join their letters.
- Merge, Split, Rotate and Organize PDF: copy the pages into a new file as they are, so nothing loses quality.
- Add Page Numbers and Add Watermark: draw them over each page in a standard PDF font and leave everything already on the page as it was.
- PDF to JPG, PDF to PNG, the PDF Viewer and Compare PDF: draw the pages with pdf.js, the PDF reader built into Firefox.
- PDF to Word: reads each page's words, their places and fonts with pdf.js, puts them back together as paragraphs, headings and lists, and writes the Word file itself.
- Unlock PDF and Protect PDF: take the lock off every part of the file with the password you type, or put an AES 256-bit lock on. Unlock PDF never guesses a password: a file that needs one to open needs the one you know, and a file that only blocks printing or copying needs none.
The engines inside the tools
An engine is the part of a tool that does the PDF work: reading a file, rebuilding it and writing the new one. We have three of our own, written in Rust and built on lopdf, an open-source Rust library for reading and writing PDF files. A fourth part, pdf.js, draws pages. This table is made by our build from what each tool really loads, so it stays current:
| Engine | What it is | Tools | Download |
|---|---|---|---|
| The compressor engine | Our own code in Rust, compiled to WebAssembly | Compress PDF, Resize PDF, Compress PDF to 100 KB, and Compress PDF to 200 KB | 0.46 MB |
| The pages engine | Our own code in Rust, compiled to WebAssembly | Merge PDF, Split PDF, Rotate PDF, Organize PDF, Add Page Numbers, and Add Watermark | 0.21 MB |
| pdf.js 6.4.299 | Mozilla's PDF reader, the one built into Firefox: JavaScript, with WebAssembly for some kinds of pictures | Merge PDF, Split PDF, PDF to JPG, PDF to PNG, PDF to Word, Rotate PDF, Organize PDF, Add Page Numbers, Add Watermark, PDF Viewer, and Compare PDF | 0.54 MB |
| The lock engine | Our own code in Rust (the pages engine with its password part), compiled to WebAssembly | Unlock PDF and Protect PDF | 0.18 MB |
| No engine | Our own JavaScript, in the page's script or fetched when a document needs it | JPG to PDF, PNG to PDF, and Word to PDF | In the page's script, or when needed |
The Download column is the size your browser receives, compressed, and only once: your browser keeps it for next time. Word to PDF fetches more when a document needs it: its converter, its fonts and HarfBuzz, the text engine browsers use to join letters, all from this site and only when a document calls for them. JPG to PDF and PNG to PDF need no engine, because JPG photos are copied into the PDF as they are.
Rust and WebAssembly, in plain words
WebAssembly is a standard format that lets a browser run fast programs written in languages such as Rust. Your browser runs it inside the same safety walls as the page, so a WebAssembly program can't open your files or folders on its own. It can only work on what the page hands it, which is the file you chose. It is a W3C standard (a W3C Recommendation since 2019) and all major browsers support it. Our testing runs in Chromium; how we test says what that covers and what it doesn't.
Our pages' Content Security Policy has a rule that allows WebAssembly. The proof page lists it as "WebAssembly (our engines)", next to scripts from this site and from Google's ad hosts, and the browser blocks every other source of scripts.
Rust is a programming language designed to avoid whole classes of memory mistakes, the kind that make a program crash or misbehave on input it did not expect. A PDF from the real world is often unexpected: scanned, repaired, locked, made by an old program. That is why we chose Rust for the engines: to handle unexpected files safely, not for speed. We don't claim they are faster than anyone else's.
pdf.js, the PDF reader inside Firefox
pdf.js 6.4.299 is Mozilla's PDF reader, the one built into Firefox. Our tools use it to draw pages: the previews in the page tools, PDF to JPG, PDF to PNG, PDF to Word, the PDF Viewer and Compare PDF. The table above shows which tools load it.
We keep our own copy on this site, at that version, and never fetch it from another site. It is open-source, under the Apache License 2.0. We left out its scripting sandbox on purpose, so a PDF's own scripts never run here, and XFA forms are switched off.
It keeps working offline
In our test on 9 October 2026, every tool but one finished its built-in sample with the test browser's network switched off. The one is Word to PDF: it downloads its converter and fonts from this site the first time a document needs them, so it needs the internet for that. PDF to JPG, PDF to PNG, PDF to Word, the PDF Viewer and Compare PDF read pages with pdf.js, which downloads a font or a decoder from this site the first time some PDFs need one, so a few PDFs need the internet once. The page tools draw their page previews the same way; saving the file doesn't need it. Try it with a file of your own: the compressor's sample is itself a part the page downloads when you press its button.
Your own check takes a minute:
- Open a tool and wait until it says Ready.
- Turn off Wi-Fi and mobile data, or switch on airplane mode.
- Add your file. The tool finishes, and you can save the result.
The offline check on the proof page has pictures from our own test, including one at a phone's size.
Built on open standards
- PDF (ISO 32000). The open standard for the PDF format. Our engines read and write files in it, and we open the new files in other PDF software to see that they hold up (how we test).
- WebAssembly (W3C). The standard that lets the engines run in your browser, described above.
- The browser's own features. Choosing a file, background workers and downloads are standard parts of every modern browser. We need no plug-in, and the policy allows none.
- AES 256-bit. The lock Protect PDF puts on a PDF. A lock is only as strong as its password, as security explains.
- Word files (.docx). Word to PDF reads the open Office Open XML format that .docx files use.
Using a standard is not the same as being certified. No outside body has certified NoUploadPDF against any of them.
What this means for you
- Speed and memory are your device's. A big file on an older phone takes longer, and phones are usually slower than our test computer. For a scan of several hundred megabytes, a computer is the better choice.
- We set no cap on file size. On a computer, browsers handle files up to about 1.8 GB. That limit comes from how much memory a browser lets a page use, not from us.
- A small first download. The first visit to a tool downloads at most about 0.9 MB for the tool, ads not counted, and later visits reuse what your browser kept.
- Once a tool is open, it needs no internet for most files. Word to PDF, and the tools that draw pages with pdf.js, fetch a font or a decoder from this site, once, the first time some files need it, as the section above says.
Keep reading
- About us: who runs NoUploadPDF and why.
- Security: what keeps your files safe, and what we don't control.
- How we prove no upload: two checks you can do yourself in a minute.
- How we test: how we measure the results we quote, and what our tests don't cover.
- Privacy policy: what we collect, and how Google's ads use cookies.