Initializing secure environment…
Initializing secure environment…
A technical explainer for people who want to know what is actually happening. What WebAssembly is doing in the tab, which libraries are used for what, how compression achieves its savings without rasterising text, what on-device speech recognition costs in model weights, and precisely which single operation in this site sends anything to a network. Written for a reader who is technically literate and sceptical, because a privacy claim you cannot verify is not a privacy claim.
How ihatepdf works: built for privacy, powered by WebAssembly. Each tool runs in your browser tab — nothing leaves your device except the AI tools, which send extracted text to the provider you supply a key for.
The browser's file API reads the bytes from your disk. A parser builds the document structure in memory. A transform rewrites page objects, images or form widgets. The result is written back to disk through a download. At no point is there a request whose body contains the document, which is a checkable property rather than a policy statement — open the network panel and watch.
Compression savings come from three places: stronger encoding of text streams, re-encoding of images at lower quality, and dropping redundant structure. A text-only document is already near the limit of what its encoding allows, so there is little to take. A scan of photographs has enormous slack. The range from 5% to 85% is not inconsistency in the tool, it is the content telling you what it contains.
Processing holds the input and the output in memory at once, so peak usage is larger than the file size suggests — a merge of four 40 MB files can touch 160 MB. Canvas rendering is the other consumer, so output is clamped to a maximum dimension and each canvas is released as soon as it is no longer needed. This is why the honest advice is to close other tabs before a large job on a phone.
The tool count, the meta descriptions, the sitemap rows, the llms.txt bullets and the internal links all come from one store, and the build fails if any of them disagrees with it. A reference site advertises five different tool counts simultaneously; here there is one number and it is computed. The general principle is that a marketing claim which is not generated from the code is a claim that will eventually be wrong.
JavaScript and WebAssembly. The document-processing engines are compiled to WebAssembly — a portable binary format that runs at close to native speed — so a 300-page merge takes seconds rather than minutes, and the same code behaves the same on every device and operating system.
pdf-lib for creating and modifying document structure, pdf.js for rendering and text extraction, Tesseract.js for OCR, a Whisper implementation for speech recognition, and a neural voice model for speech synthesis. Each is a mature open-source project, and all are bundled as npm dependencies rather than loaded from a CDN at runtime — a deliberate choice that removes a third-party supply-chain surface from every page load.
Text is never rasterised. Vector glyphs are re-encoded with a stronger compression setting, which changes the bytes and not the shapes, and only images are re-encoded at a lower quality. Redundant structure and unused resources are dropped, which is free. That is why the savings vary so much between documents: a text-only file has very little slack, and a photo-heavy file has a lot.
Because the recognition model is downloaded once, and for a neural model that is tens to hundreds of megabytes. The download size is shown before it starts and the weights are precached by the service worker, so the second run is offline. Stating the cost up front is the honest approach; a silent download halfway through an operation is not.
A set of limits derived from detected device capability — typically memory — and applied to file size, DPI ceilings, page counts and render scale. It exists so the FAQ copy and the enforced limits come from one source, which is the only way they can be guaranteed not to contradict each other. Advertising 600 DPI on a phone would be a lie with a dropdown attached.
One thing, and only if you use the AI tools. The raw file is never uploaded anywhere, in any tool. The AI tools extract text in your browser and send that text to the model provider identified by the API key you supply, and the request is shown before it is made. Everything else — merge, compress, edit, sign, OCR, redact, convert — is entirely local.
Open your browser's developer tools, switch to the network panel, and use a tool. No request carries your document. That is a stronger position than a privacy policy, and it is checkable in about thirty seconds by anyone who is willing to look.
Nothing about your document, ever — it exists in the tab's memory and is discarded when the tab closes. Settings, saved pipelines, a POS catalogue and a drawn signature are kept in your browser's local storage on your device, which means they do not follow you to another device and are removed if you clear site data. None of it is transmitted.
More about this site — all free, no upload.