Privacy & How It Works
ImagePDF.Tools was built on a single principle: your images never leave your device. Here is exactly how it works.
No uploads. Ever.
When you drag an image onto ImagePDF.Tools, it is read directly by your browser using the File API. The file is passed to compression code that runs entirely inside your browser tab — the same environment that renders this page. At no point does the file travel over the internet to any server.
You can verify this yourself: open your browser's Network tab in DevTools (F12 ? Network), upload an image, and compress it. You will see zero outgoing requests carrying image data.
How our tools work
Every tool on ImagePDF.Tools — compression, cropping, and metadata editing — runs locally in your browser using these algorithms and APIs:
JPEG — DCT + chroma subsampling
Your image is encoded using the MozJPEGcodec (compiled to WebAssembly), Mozilla's optimised JPEG encoder. It applies Discrete Cosine Transform to convert pixel blocks into frequency data, then discards high-frequency detail your eye barely notices. Colour channels are subsampled separately from brightness, reducing size by 50—80% with minimal perceived quality loss.
PNG — Median-cut palette + dithering
PNG files are quantised to a reduced colour palette using a median-cut algorithm— the same technique used by professional tools. The image's colour space is split into buckets; each bucket is averaged into one representative colour. Floyd-Steinberg error diffusion (dithering) then distributes the colour rounding error to neighbouring pixels, making smooth gradients look natural even with as few as 64 colours. The result is compressed with DEFLATE, the lossless algorithm inside every PNG file.
WebP — VP8 predictive coding
WebP is encoded using Google's libwebp (via WebAssembly), the reference implementation. VP8 uses block prediction — each 4—4 pixel block is predicted from its neighbours, and only the difference (residual) is stored. This produces files 25—35% smaller than equivalent JPEG with the same visual quality.
SVG — Metadata strip + coordinate rounding
SVG files contain no pixel data — they are XML documents describing shapes. ImagePDF.Tools parses the XML and removes invisible bloat: <metadata>, <title>, <desc> tags added by design tools, XML comments, and excessive decimal precision in path coordinates. Rounding d="M 10.000000 20.000000" to d="M 10 20" is visually identical but much smaller.
Crop Image — Canvas API, no upload
The crop tool draws your image onto an HTML <canvas> element and then reads only the selected region using getImageData. The cropped area is exported back to a PNG Blob in your browser tab. The image never leaves your device at any stage of the process.
EXIF Metadata — read and strip locally
EXIF data (GPS co-ordinates, camera make and model, shutter speed, timestamps) is embedded inside JPEG and PNG files as binary tags. The Metadata Editor reads these tags from the file bytes directly in your browser using the File API, displays them in a table, and lets you edit or strip them. The modified file is re-assembled in-memory and downloaded without ever touching a server.
What data is stored — and where
| Data | Where it lives | Sent to server? |
|---|---|---|
| Your images | Browser memory only | Never |
| Compressed output | Browser memory (Blob URL) | Never |
| Cropped output | Browser memory (Canvas) | Never |
| EXIF metadata read | Browser memory only | Never |
| Account email | Clerk (auth provider) | Yes — for login only |
| Subscription status | Clerk user metadata | Yes — free or pro flag |
| Payment details | Stripe (never touches our servers) | Stripe only |
| Page visits | Plausible Analytics (no cookies) | Anonymised only |
WebAssembly — why and what it means
The JPEG and WebP codecs run as WebAssembly (WASM)modules — binary files compiled from the same C/C++ source code used in production encoders like MozJPEG and libwebp. WASM runs sandboxed inside your browser with no access to your file system, network, or other tabs. It cannot "call home" or send data anywhere.
The WASM binaries are downloaded once from our CDN (Vercel's edge network) and cached in your browser for up to 30 days. After the first load you can compress images entirely offline.
Open to inspection
We encourage you to verify these claims yourself:
- Open DevTools ? Network while compressing — no image data leaves your browser.
- Open DevTools ? Sources ? look for
jSquashEncode.tsandpngQuantize.tsto see the compression code. - Disconnect from the internet after the page loads — compression still works.
Contact
Questions about privacy or data handling? Reach us at [email protected]. We aim to reply within 48 hours.
Last updated: April 2026