Privacy

The short version: we collect nothing, because there is nothing to collect it with.

What this site collects

Nothing. No accounts, no cookies, no analytics, no error reporting, no advertising, no fingerprinting. We do not know how many people use this site, which tools they use, or what files they open.

Where your files go

They stay on your device. When you pick a file, the browser hands this page a reference to it in local memory. All the processing — reading pages, rendering, re-encoding, writing the new document — happens inside your browser tab using JavaScript. The result is handed back to you as a download. At no point does a copy of your file exist anywhere except your own computer, and closing the tab discards everything.

This is not a policy we are asking you to trust. It is a consequence of the architecture: there is no server that could receive a file even if we wanted it to.

How to verify this yourself

1. Work offline

Turn off Wi-Fi or unplug the network cable, reload the page, and use any tool. Everything still works. A site that secretly uploaded your documents would fail the moment the network disappeared.

2. Watch the network

Open your browser's developer tools (F12 on Windows and Linux, ⌥⌘I on a Mac), switch to the Network tab, and process a file. You will see the page's own scripts and stylesheets load, and after that, nothing. No request leaves carrying your data because no such request is ever made.

3. Read the code

Every script this site runs is plain, unminified JavaScript served from this domain. Use “View source”, or open /assets/js/core.js directly. There is no build step obscuring what ships, and no bundler output to pick apart.

What the browser enforces

Every response from this site carries a Content-Security-Policy header. Among other things it sets:

default-src 'self'
connect-src 'self'
script-src  'self' 'wasm-unsafe-eval'
object-src  'none'
form-action 'none'
frame-ancestors 'none'

('wasm-unsafe-eval' lets pdf.js run its WebAssembly image decoders, which are needed for some scanned PDFs. It permits WebAssembly, not eval of JavaScript.)

connect-src 'self' means your browser will refuse any attempt by this page to open a network connection to another host — no analytics endpoint, no third-party API, nowhere to send a document. It is enforced by the browser, not by our good intentions. The only requests this site is capable of making are for its own static files, and none of them carries your data.

There is also no third-party code at all. No CDN, no Google Fonts, no tag manager. The PDF libraries (pdf-lib and pdf.js, both open source) are served from this domain rather than pulled from someone else's server, so no outside party ever learns that you visited.

What the host can see

This site is static files hosted on Cloudflare Pages. Like any web host, Cloudflare's infrastructure processes the requests for those files and can see your IP address and which pages you requested — that is unavoidable for any website that exists on the internet, and it is covered by Cloudflare's privacy policy. We do not enable analytics on it and we do not read its logs.

Your documents are not part of that: they are never requested from, or sent to, the host. If you install this site as an app and use it offline, even the page requests stop.

Install it and cut the cord

Every page here is cached by a service worker on your first visit, so the whole site works with no connection. In Chrome or Edge, use the install icon in the address bar; on iOS, use Share → Add to Home Screen. After that it behaves like a local application, which is a genuinely good option on a locked-down work machine where uploading a document would breach policy.

Changes

If this ever changes — it will not while the site remains what it is — this page changes with it. There is no version of NoUpload PDF that uploads your files; that would make it a different product.

Contact

Found a bug, or a claim on this page you think is wrong? That is worth hearing about. Open an issue on the repository or get in touch, and please include the browser and file type involved — never the file itself.