When I set out to build PDF Tools, I had one rigorous constraint: zero servers.
Usually, PDF manipulation implies uploading user files to a cloud server, running some heavy Python or Node.js background job, and sending the result back. This paradigm is great for the developer but horrific for privacy. Why should anyone trust a random website with their tax returns or personal documents?
The answer is simple: they shouldn't.
The WebAssembly Revolution
By compiling core C/C++ PDF libraries into WebAssembly (Wasm), modern browsers can run immense computational tasks at near-native speeds. The entire PDF Tools suite processes files in your browser tab.
Why this matters:
- Absolute Privacy: It is mathematically impossible for me to log your data because your file never touches my server.
- Speed: No upload or download times. A 500MB PDF merges instantly.
- Cost: Since I'm not paying for compute cycles, I can offer the tool for free, forever.
// Example of how beautiful local processing is
async function mergePDFs(files) {
const pdfDoc = await PDFDocument.create();
for (let file of files) {
const buffer = await file.arrayBuffer();
const doc = await PDFDocument.load(buffer);
// Do the magic locally!
}
}
The future of web utilities is client-side. The servers of the future shouldn't process data; they should only serve the application bundles that allow users to process their own data.