How ZasPDF processes your documents without uploading them
This page describes the site's actual architecture: what code each tool runs, what stays on your device, what does leave it, and how to check all of it yourself in two minutes.
The model in one sentence
A conventional PDF service receives your file, processes it on its server and sends the result back. ZasPDF reverses the order: it downloads the program to your browser and runs the processing there. The file is never sent because there is nothing to send it to; the site is served as static pages from Cloudflare Pages and has no processing server to call.
This is not a policy we could break; it is a property of the design. If we wanted to see your files tomorrow we would have to build a server, change the site's code and start uploading them — and that change would be visible in the Network tab of any browser.
Which engine runs each tool
main.wasm) that the browser downloads on first use, caches permanently and executes inside the WebAssembly sandbox: no file-system access, no network access, only the memory the tab hands it.pdf.js(Mozilla's engine, the one Firefox uses) to render pages and extract text: PDF to image, PDF to text, previews.tesseract.jsfor OCR: language models are downloaded to your browser and recognition happens in a local Web Worker.pdf-libfor signing, watermarks, page numbers and annotations.mammoth,docx,xlsxandpptxgenjsfor conversions to and from Word, Excel and PowerPoint. They rebuild content rather than trace it, which explains their fidelity limits.- The scan tool uses the device camera through
getUserMedia; the video never leaves the browser.
What exactly happens to your file
When you choose a file, the browser reads it into memory as a byte array and passes it to the engine. The engine produces another byte array with the result. That result becomes a Blob object and the download link points at it through a blob: URL local to the tab. When you close or reload the tab, both arrays are released. There is no disk cache, no temporary copy, no history of processed files. Nor can we see the file's name, size or contents: analytics only records that a tool was used (for example "merge"), and only if you accepted analytics in the cookie notice.
What does leave your device (and why)
It would be dishonest to say the site makes no external connections. These are all of them:
- Downloading the site and the engine from Cloudflare Pages, which logs IP address, user agent and time like any web server.
- Google Analytics 4 (page views, approximate country, device type and the
tool_used/file_downloadedevents carrying the tool name). Only enabled if you accept analytics; it defaults to denied through Consent Mode v2. - Google AdSense, which funds the site. Without consent it serves non-personalised ads; with it, it may set advertising cookies.
- Firebase Authentication, only if you choose to create an account. No tool requires one.
- The contact form, which sends your message to our inbox through a Cloudflare function and the Resend service.
- Google Fonts for the Material Symbols icons.
How to verify it yourself
We are not asking you to trust this page. Two checks anyone can run:
- Network tab. Open your browser's developer tools (F12 or Cmd+Opt+I), go to “Network”, load a PDF into any tool and process it. You will see the initial download of
main.wasmand the analytics or advertising requests if you accepted them; you will not see anyPOSTrequest the size of your file. - Airplane mode. Load the tool, wait for the engine to finish downloading, disconnect from the network and process the file. Merge, split, compress, rotate, protect and unlock work exactly the same. If the file were being uploaded to a server, that would be impossible.
The one exception to offline use is OCR the first time a language is used: tesseract.js models are downloaded on demand and cached afterwards.
What this model does not solve
Processing locally removes the risk of your file leaking from someone else's server. It does not protect against a compromised device: if your machine has malware that reads browser memory or intercepts downloads, no website can prevent that. Nor does it replace a certified e-signature platform, provide a trusted timestamp, or encrypt the output file unless you use the Protect tool to do so.
Site headers and isolation
Strict-Transport-Security (HTTPS only, for a year), X-Frame-Options: DENY (nobody can embed ZasPDF in an iframe to trick you), X-Content-Type-Options: nosniff, Referrer-Policy: strict-origin-when-cross-origin and a Permissions-Policy that denies microphone, geolocation, payments and USB and limits the camera to our own origin for the scan tool. All of it is public in the response of any page.