Skip to content
Blur Document

Security write-up

How Blur Document handles your files, for developers, journalists and anyone who wants the details. Short version: there is no server that receives files, and your browser enforces that.

Last updated 6 November 2026

Architecture

Blur Document is a static web app. The server sends HTML, JavaScript, fonts and model files, and has no endpoint that accepts uploads: there is nowhere for a file to be posted to. Everything that touches your document runs in your browser tab:

  • PDFs are opened and rendered with pdf.js, with its scripting turned off.
  • Text in photos and scans is read by Tesseract, an open-source OCR engine compiled to WebAssembly, in a Web Worker.
  • Personal details are found by pattern rules with checksums (cards, Aadhaar, IBAN, SIN) and, if you switch it on, a small named-entity model run with ONNX Runtime Web. Faces are found by an on-device face-detection model, QR codes by a QR decoder.
  • Export draws each page to a canvas with the boxes burned in, and writes a new PNG, JPG or PDF from those pixels.

Data flow

A file you choose, drop or paste is read with the browser's File API into memory. Pages are drawn to canvases, read, checked and shown to you. Nothing about the file is written to storage, logged or sent. When you export, the new file is handed to your browser as a local download (a blob: URL). Closing or reloading the tab discards everything. Passwords for protected PDFs only unlock the file in memory and are never stored.

What the site connects to

The site's Content Security Policy limits where the page can connect to, and your browser blocks everything else:

  • This website: the app, fonts, and the AI and face-detection models (served from our own domain).
  • cdn.jsdelivr.net: the Tesseract engine and its English language data. These are downloads; your documents are never sent there. Self-hosting these files, to remove this dependency, is planned.
  • Cloudflare Web Analytics, when enabled: cookieless page-view counts. It sees which page was viewed, never file contents.

The policy also forbids framing the site (frame-ancestors 'none'), plugins (object-src 'none') and form posts to other sites (form-action 'self'). Other headers: HSTS, X-Content-Type-Options: nosniff, Referrer-Policy: no-referrer, and a Permissions Policy that turns off the camera, microphone and location.

You can watch this yourself on the Prove it page, in your browser's network tab, or by turning off the internet: the tools keep working.

What is stored on your device

  • Preferences (detection settings, theme, watermark text) and any presets you save, in localStorage. Never file contents.
  • App files and models, in the browser cache and Cache Storage, so they don't download again and the app works offline. The offline service worker caches only the app, never your files.
  • OCR language data, saved in browser storage by the OCR engine for the same reason.

No cookies are set. Clearing the site's data in your browser removes all of the above.

How redaction is made permanent

Many tools draw a box on top of a PDF page and leave the text underneath in the file. Blur Document doesn't edit the original: it rebuilds every page from pixels with the boxes painted in, so the covered text no longer exists in the output, and the PDF's text layer, metadata, comments, form fields and attachments are left behind. Images are re-encoded, which drops EXIF data including GPS location. Before download, the output is read again with OCR, and anything sensitive still legible is flagged.

Limits you should know

  • Automatic detection misses things, especially on blurry photos and handwriting. Always review the result before sharing.
  • Text in Indian scripts (Hindi, Tamil and others) isn't read; numbers and English text are. Cover other text by hand.
  • Blur and pixelate can sometimes be partly reversed on short, structured text. Use solid boxes for numbers and names (the editor warns you). See can blurred text be unblurred?
  • Exported PDFs are images, so their text can't be selected or searched.
  • Anything that can read your browser tab, such as a malicious browser extension or software on your device, could see a file while it's open, as with any app.
  • The OCR engine is loaded from a public CDN. If that CDN served altered code, the Content Security Policy would still stop it from sending data to an unknown server.

Source code and reporting a problem

The processing code is not public yet. If you're a security researcher or journalist and want to review how something works, write to us and we'll walk you through it. If you find a vulnerability, please email hello@blurdocument.com with "Security" in the subject. We'll reply, and credit you if you'd like. Our security.txt has the same details.

Blur Document is run by Hashtag Consultancy. See also the privacy policy.