Blog
Why a privacy tool should work offline (and how to check)
Client-side processing, service workers and what 'no server' really means. How to verify a browser tool never uploads your file, and how Unformation is built.
Published Updated 6 min read
A privacy tool that asks you to upload your document to its server has a credibility problem: you are removing sensitive data by first sending the sensitive data somewhere. The cleanest way out of that loop is a tool that does all the work on your device and can prove it. "Works offline" is that proof, and this post explains what it means technically, how to check it yourself, and which trade-offs it forces.
Client-side processing, in plain terms
A web page is a program your browser downloads and runs. Normally that program talks back to a server: it sends your input, the server computes, the browser shows the result. Client-side processing means the program does the computing itself, inside the browser tab, and never sends the input anywhere.
For a document anonymizer this involves:
- Reading the file locally. The browser's File API hands the bytes to JavaScript without a network round trip.
- Unpacking the format. A DOCX, PPTX or XLSX is a zip of XML files; PDF has its own structure. Libraries in the tab open them.
- Detecting sensitive data. Regular expressions and checksums for structured values, your own dictionary, and optionally a small language model that runs in the browser via WebAssembly or WebGPU.
- Rewriting and repackaging. The text is replaced inside the XML, the archive is re-zipped, and the browser offers a download from memory.
All of that happens in a Web Worker so the page stays responsive, and none of it requires a server. The site's server only ever sends the static page and its scripts.
What a service worker adds
A service worker is a script the browser installs alongside the site. It sits between the page and the network and can serve files from a local cache. That gives a client-side tool two properties:
- It loads without a connection after the first visit: the HTML, scripts, styles and (if downloaded) the model come from the cache.
- The "offline" claim becomes testable. If the tool still works with the network switched off, it cannot have been depending on a server.
Service workers do not make a tool private by themselves; a page could cache its assets and still upload your file when online. They make privacy checkable, which is the point.
How to verify it yourself
Do not take the claim on trust. Two checks take under a minute:
Wi‑Fi off test
- Open the tool once while online so it can install itself.
- Turn off Wi‑Fi (or enable airplane mode).
- Reload the page. It should still load.
- Drop a document and run it. You should get the anonymized file back.
Network tab test
- Open the browser's developer tools (F12 or Cmd+Option+I) and switch to the Network tab.
- Clear the list, then drop a document and process it.
- Watch for requests. Static assets are fine; a POST or an upload with your file's size is not.
In Unformation, the tool shows "0 network requests" while processing, and the security page walks through the same two tests. The only optional network activity is the one-time download of the language model, which happens before any of your files are read and can be skipped.
What "no server" means, precisely
Claims like "no server" get muddled, so here is a precise version:
- There is a web server, and it serves the page. Every website has one.
- That server never receives your document, the text in it, the detected values or the mapping table. There is no upload endpoint to send them to.
- The site is static: pages are generated at build time, and there are no API routes or server actions that could receive data.
- Analytics, if any, must be cookieless and never include content. Unformation uses Vercel's cookieless analytics for page views only.
If a tool cannot make these four statements, "no server" is marketing.
The limits of working offline
Doing everything on the device costs something, and it is worth being honest about it.
| Limit | Why | What it means for you |
|---|---|---|
| Model download | A named-entity model is roughly 110 MB (English) or 180 MB (multilingual). | One-time download, then cached; patterns and your dictionary work without it. |
| Device performance | Your laptop or phone does the work, not a data centre. | Large files take longer on old hardware; a batch of 10 files at 50 MB each is the practical ceiling. |
| Scanned PDFs | OCR in the browser is heavy and error-prone. | Scanned PDFs are not supported; text-based PDFs are, and come back as DOCX and Markdown. |
| Browser memory | Everything lives in the tab's memory. | Very large spreadsheets can hit limits; the tool tells you and nothing is sent anywhere. |
| No account, no sync | Nothing is stored server-side. | Your dictionary and mapping tables live in your browser storage or in files you export. |
None of these are bugs; they are the price of not having a server, and for a privacy tool the trade is worth it.
The design decisions behind Unformation
A few choices follow directly from "works offline":
- Static site, no backend. The whole product is a set of pre-rendered pages plus client-side code. There is nothing to breach because there is nothing that stores data.
- Workers for processing. File parsing, detection and rewriting run in Web Workers so the interface never freezes and the page can show progress honestly.
- Optional model, downloaded once. The default detection uses patterns, checksums and your dictionary. The model is a separate, explicit step so the tool works instantly on first use and fully offline afterwards.
- Mapping table under your control. Labels such as "Person 1" or "Company A" are generated locally, exported as CSV or JSON, and reversed with the de-anonymizer. No copy exists anywhere else.
- Strict content security policy. The page may only talk to itself and, if you opt in, the model host and the analytics endpoint. The browser enforces this; the browser's console shows a violation if anything else is attempted.
- No cookies, no accounts. There is no login because there is no data to attach to one.
- Testable claims. "0 network requests" and "works with Wi‑Fi off" are things you can check, so we say those instead of "secure" or "private".
Why this matters for AI workflows
People anonymize documents mostly to use them with hosted AI assistants. A tool that itself uploads the document defeats the purpose and adds a second processor to your data-protection paperwork. A tool that runs on the device adds no processor at all: the first party to see your document is still the assistant, and by then the identifying data is already gone.
Try the offline test now
Open Unformation, let it load, turn Wi‑Fi off and drop a file. If it works, you have verified the claim yourself. To see the exact steps the tool performs, read how it works; for the security model in detail, see security.