Skip to content

How local processing works

Your documents are processed in the browser

Every tool on this site uses open-source JavaScript libraries (pdf-lib for editing, pdf.js for rendering) that run inside your browser tab. When you select a file, it is read into your device's memory as binary data, transformed there — in a background Web Worker, so the page stays responsive — and the result is offered as a normal browser download. There is no upload step in this pipeline at all.

How to verify it yourself

  1. Open any tool page, e.g. Merge PDF.
  2. Open your browser's developer tools (F12 or Cmd+Option+I) and switch to the Network tab.
  3. Select a PDF and run the tool.
  4. Inspect the requests: you will see the page's own scripts and a small analytics beacon to /api/events — and no request containing your file, its name, or its content.

What is sent to analytics

To know whether the tools actually work for people, the site sends small anonymous events such as “a file was selected on merge-pdf” or “processing completed in under 5 seconds”. These events contain the tool name, coarse buckets (file size range, page count range), an error code when something fails, and the country provided by our CDN. They never contain file names, document content, metadata, or your full IP address. Details are in the privacy policy.

Honest limitations

  • Local processing is bounded by your device's memory. Very large documents can fail on phones — you get an error message, not a silent hang.
  • “Local” applies to the tools listed on this site today. If a future tool ever required server processing, its page would say so explicitly before you select a file.
  • Browser extensions you have installed can read pages you visit, including this one. That is outside any website's control.

What happens when you close the tab

Everything is gone. Files live only in the tab's memory — the site does not write your documents to localStorage, IndexedDB, cookies or any cache. Reloading the page starts from zero.