Most "free" online PDF tools work the same way: you upload your file, a server somewhere processes it, and a few seconds later you download the result. For a one-off task that might feel harmless — but it means your contract, ID scan, or tax return takes a round trip through someone else's infrastructure before you ever see the output.

What changed

Modern browsers are far more capable than the "upload box" model assumes. They can render PDF pages, manipulate documents, and write new files — all using your device's own memory and processor. PDFtone is built entirely on this idea: every tool runs as JavaScript in your browser tab, and your file never leaves it.

The pieces underneath

We didn't reinvent PDF parsing from scratch — that would be slow and error-prone. Instead, PDFtone leans on a handful of well-established open-source libraries:

  • pdf.js renders PDF pages to the screen, so you can see exactly what you're working with.
  • pdf-lib handles editing and export — merging pages, drawing text and shapes, and writing the final PDF.
  • mammoth.js and SheetJS convert Word documents and spreadsheets into pages PDFtone can work with, and back again.

What stays local — and what doesn't

Everything in the workspace — merging, signing, marking up, converting — happens in memory and disappears when you close the tab. The only exception is if you're signed in and choose to save a project: at that point, the file is stored on our servers so it can sync across your devices. That's opt-in, off by default, and the rest of the toolkit never needs it.

The trade-off

Doing the work locally means the practical limit on file size is your device's available memory rather than a server queue. For everyday documents — contracts, reports, scanned forms — that's rarely a problem. For very large files (think hundreds of high-resolution pages), a lower-powered device may need to use the compression tool first.

The result is a PDF toolkit that behaves the way a desktop app would: instant, private, and entirely under your control.

← All posts