This site is built around one strict rule: nothing you type ever leaves your browser. That isn’t a promise — it’s a property the browser itself enforces. Here is exactly how it’s done, and how you can verify it in 60 seconds.
localStorage — not a cookie, not a session token, not a request to us.This isn’t end-to-end encrypted form submission. Many privacy products encrypt your data in your browser, send it to a server, and have the recipient decrypt it on the other side. That’s a different model — your data still travels, even if it’s scrambled in transit.
Private Forms doesn’t encrypt anything, because nothing is being sent. When you finish, you save a PDF or JSON file to your own computer — the same way you save a Word document. What you do with that file next (email it, print it, hand it to your attorney) is entirely up to you.
It’s closer to the privacy of paper than to the privacy of an encrypted message: nothing is in motion at all.
Every page on this site sets a strict CSP that the browser enforces:
default-src 'none'; connect-src 'none'; form-action 'none'; ...
connect-src 'none' is the key line. It tells your browser to refuse every outbound network request this page could ever attempt — fetch, XHR, WebSocket, EventSource, beacon, anything. Even if a bug or a malicious extension tried to send your data somewhere, the browser would block it. This is enforced at the browser layer, not by our code.
Content-Security-Policy with connect-src 'none'.fetch('https://example.com'). The browser blocks it with a CSP violation message. The same rule applies to every line of JavaScript on this page.Each form is a JSON file in the /forms/ directory of the open-source repo. A small build script renders each into its own static page. If you have a paper form you’d like to see online, browse the catalog — or fork the repo and add your own.