How Client-Side PDF Processing Works
Discover the engineering behind private, in-browser PDF utilities that never upload your documents to a server.
The 4-Step Client Execution Pipeline
HTML5 File Ingestion
When you drag or select a PDF, the browser reads file bytes locally using the standard FileReader API into a Uint8Array buffer stored in device RAM.
WebAssembly & Canvas Parsing
Document structure is parsed using Mozilla’s PDF.js compiled engine and pdf-lib. Pages are rendered locally onto HTML5 Canvas elements for visual thumbnail inspection.
Local Manipulation & Crypto
Whether merging, splitting, watermarking, compressing, or encrypting with AES-256 via crypto.subtle, computation executes entirely on your device’s CPU.
Direct Blob Download & Cleanup
The generated PDF is assembled into a client-side Blob. Clicking download triggers an immediate browser save, followed by immediate URL.revokeObjectURL() to prevent memory leaks.
How to Verify Zero Uploads Yourself
Don’t just take our word for it. You can inspect the network activity of your browser at any time:
- Open the developer console in Chrome, Edge, Safari, or Firefox by pressing F12 (or Cmd + Option + I on macOS).
- Switch to the Network tab and click the filter button to show All or Fetch/XHR.
- Select or drop a confidential PDF file into any tool (e.g. Merge or Protect).
- Execute the tool. Notice that no POST requests, multipart form payloads, or document transmissions occur. Only local memory processing takes place.
- Turn off your Wi-Fi or unplug your internet cable. The tool will continue to function flawlessly.
Self-Hosted Workers & Offline Readiness
Many web tools that claim to be client-side secretly fetch scripts, fonts, or tracking beacons from third-party CDNs during operation. EditMyPDF self-hosts its WebAssembly workers (/pdf.worker.min.mjs) directly on our origin. Once cached by your browser, all 20 PDF utilities operate with 100% independence from the internet.
