Skip to content

How PDFont works and how to verify your privacy

Your file is read and processed by code running in your browser tab, and your browser never sends it anywhere. It downloads only the app, fonts and WebAssembly modules from us, plus Cloudflare’s cookieless analytics script. You can check this yourself in a few minutes.

Where does your file go? Nowhere

  1. When you choose or drop a file, your browser reads it into the memory of this tab only.
  2. The tool’s code, already downloaded from our server, does the work. Heavy jobs run in the background in a Web Worker so the page doesn’t freeze; removing passwords and redacting personal data use the WebAssembly build of PDFium.
  3. The output file is created in memory on your device too. The “Download” button saves that in-memory file; nothing is fetched from a server.
  4. When you close the tab, your file and the result are gone from memory. All that remains is the recent activity list: tool, file name, total size and time (the redaction tool does not even keep the file name).

What is downloaded from the server?

Every part of the app comes from the PDFont domain (pdfont.com). The one exception is Cloudflare’s measurement script in the last row. Your file is never part of any request:

Files downloaded from the server
WhatWhenWhy
Pages, JavaScript and CSSWhen you open a pageThe interface and the code of the tools
pdf.js worker, character maps, colour profilesWhen a preview or image conversion is neededShowing and reading PDF pages
PDFium (WebAssembly)When you use unlock or redactOpening encrypted files, removing text safely
Fonts (Noto, Dancing Script)When you add a watermark, page numbers or a signatureDrawing the added text with the right characters
Cloudflare Web Analytics script (static.cloudflareinsights.com)When you open a page on the live siteCookieless, aggregate visit measurement

That script sends aggregate statistics such as the page address and load timings in a short POST request to cloudflareinsights.com. It sets no cookies and carries nothing from your file. More in our Privacy Policy.

A technical lock: the Content Security Policy

Every page is served with a Content Security Policy (CSP). Under it, scripts may only load from our own domain and from static.cloudflareinsights.com, and the page’s code may only send requests to our own domain and to cloudflareinsights.com. Your browser blocks the page’s code from fetching from, or sending requests to, any other server.

Verify your privacy yourself

You don’t have to take our word for it. The Network tab in your browser’s developer tools lists every request the page makes.

Chrome or Edge

  1. Open a tool page (for example Merge PDF).
  2. Open the developer tools: F12 or Ctrl+Shift+I on Windows, Cmd+Option+I on Mac.
  3. Switch to the Network tab and tick Preserve log.
  4. Clear the list (the “no entry” icon), then add your file and run the tool.
  5. Look at the requests: the Method column should show no POST or PUT carrying your file. You will see code, fonts and WebAssembly files fetched with GET from pdfont.com and, on the live site, the measurement script (GET from static.cloudflareinsights.com) and one small measurement request (POST to cloudflareinsights.com).

Firefox

  1. Open the Network tab directly: Ctrl+Shift+E on Windows, Cmd+Option+E on Mac.
  2. In the gear menu, turn on Persist Logs.
  3. Clear the list, add your file, run the tool and check the Method column.

Safari (Mac)

  1. In Safari > Settings > Advanced, turn on Show features for web developers (“Show Develop menu” in older versions).
  2. Choose Develop > Show Web Inspector, or press Cmd+Option+I, and open the Network tab.
  3. Tick Preserve Log, clear the list, add your file and run the tool.

Your file may be hundreds of kilobytes or several megabytes; if it were sent, you would see an outgoing request of that size. The only POST you will see is the measurement request to cloudflareinsights.com, a few kilobytes in size; click it to inspect what it contains.

Try it offline

For an even clearer test, disconnect from the internet. Run the tool once while online so the parts it needs (such as PDFium or fonts) are loaded. Then, in the same tab, switch on airplane mode or set the network to Offline in the developer tools, and run the tool again with another file. It should still finish, because no step needs the server.