Your files never leave your browser.
ImagePDF.Tools was built on a single principle: every tool runs entirely in your browser tab. No uploads, no servers, no exceptions.
Verify it yourself
Open your browser's Network tab in DevTools (F12, then Network), upload an image, and compress it. You will see zero outgoing requests carrying image data. The compression happens entirely inside your browser tab.
- No outgoing image data in the Network tab during compression
- Disconnect from the internet after page load: compression still works
- Source tab shows jSquashEncode.ts and pngQuantize.ts running locally
How each tool actually works.
Every algorithm runs as WebAssembly or Canvas API code inside your browser tab. Here is exactly what happens to your file.
JPEG: DCT + chroma subsampling
Your image is encoded using the MozJPEG codec (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. Floyd-Steinberg error diffusion (dithering) 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 4x4 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 are XML documents describing shapes. ImagePDF.Tools parses the XML and removes invisible bloat: metadata, title, and desc tags added by design tools, XML comments, and excessive decimal precision in path coordinates.
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.
EXIF metadata: read and strip locally
EXIF data (GPS coordinates, 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, displays them in a table, and lets you edit or strip them. The modified file is re-assembled in-memory without ever touching a server.
What data is stored and where.
A complete picture of every data type, where it lives, and whether it ever reaches a server.
| 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 it matters for privacy.
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.
The WASM binaries are downloaded once from our CDN and cached in your browser for up to 30 days. After the first load you can compress images entirely offline.
Questions about privacy?
Reach us at support@imagepdf.tools. We aim to reply within 48 hours.
Last updated: April 2026