Image · Privacy-first

Compress your image — without uploading it.

Passport photos, ID copies, screenshots — never leave your phone. JPG · PNG · HEIC · WebP. Type your exact KB target.

Your file stays on your device. Compressed locally via WebAssembly.

Verify it yourself

Drop your image here

JPG · PNG · WebP · HEIC · max 25MB

What exactly happens to your file?

Click to see the full data path. No surprises.

  1. 1

    You drop the file

    Browser reads the file from your local disk into a `File` / `Blob` JavaScript object. This is the standard browser File API — same as any web upload form, except we stop there.

  2. No upload here.

    Other tools insert an upload step at this point. We don't — there is no server endpoint in our codebase that receives file content.

  3. 2

    Browser compresses it

    WebAssembly modules + Canvas APIs run on your device. For PDFs we use pdfjs-dist + pdf-lib (both ~3MB lazy-loaded once). For images we use the browser's built-in JPEG/PNG/WebP encoders + a libheif fallback for older HEIC support. All execution happens in your browser process.

  4. 3

    You download the result

    The compressed blob lives in browser memory. When you click Download, the browser triggers a local file save. No HTTP request goes out — the only network calls during a compression are loading the engine (cached on first use).

Verify any of this for yourself: open DevTools (⌘ ⌥ I on Mac · Ctrl Shift I on Windows / Linux), open the Network tab, then run a compression. You'll see the engine load on first use, then nothing during the actual compression. We have a full live demo at /privacy/verify.

You just compressed without uploading.

Here's what you didn't do — and why it matters.

Most online compressors

iLovePDF, TinyPNG, Squoosh uploaded your image

Their server received your photo, processed it, and (depending on which tool) held it temporarily. Your face, ID, or screenshot transited the public internet.

FormReady

FormReady processed your image locally

A Web Worker on your device compressed it via the browser's built-in encoders. Your image never touched any FormReady server — and EXIF metadata (location, camera, timestamps) was naturally stripped during re-encoding.

Our promise — verifiable

Four architectural commitments. Every one provable.

No upload endpoint

Our codebase contains zero server routes that receive file content. Architectural, not policy.

Audit the routes

Open-source compression engine

Fork it, audit it, run it offline. We open-source the compression logic under MIT.

View on GitHub

No file fingerprinting

We don't log file names, hashes, sizes, or any derived metadata. We log nothing about your file.

Read the privacy policy

Self-verifiable

Every claim above is checkable by you in 30 seconds, in any modern browser, with the built-in DevTools.

Run the live demo

Common use cases

What people compress with this tool

Real scenarios with their typical KB targets. Click a guide if it matches what you're doing.

Naukri profile photo

Job board photo upload

100 KB

LinkedIn profile photo

Square crop · public profile

200 KB

Aadhaar photo update

UIDAI self-service portal

50 KB

Open guide

Passport application

Passport Seva Kendra upload

240 KB

WhatsApp display picture

Business profile, status images

200 KB

Resume photo

Word, Google Docs, PDF resumes

100 KB

FAQ

You really can't see my image?

Correct. Image processing runs in a Web Worker on your device — JPEG/PNG/WebP encoders are built into your browser, and our HEIC fallback decoder loads as WASM only when needed. There is no server endpoint that receives your image. Open DevTools → Network during a compression to verify zero outbound requests.

Will my photo's EXIF metadata leak?

No. The compression engine reads your image into a canvas and re-encodes from pixels — EXIF (GPS, camera model, etc.) is naturally stripped during this process. So even if your phone embedded location in the original photo, the compressed output won't carry it. This is a side benefit of how the engine works, not a separate feature.

My iPhone photo is HEIC. Will this work?

Yes — modern browsers can decode HEIC natively. We auto-convert HEIC to JPG (or WebP) during compression so it's upload-ready. On older browsers (Brave / Firefox / Chrome on older Android), our libheif-wasm fallback decodes locally — still no upload.

Will my photo lose quality?

It will lose some quality — that's how compression works. We protect against unacceptable loss by stopping quality reduction at 50% (below that JPEG artifacts get visible). For tight targets, we offer to reduce dimensions instead, which preserves perceived quality much better than aggressive quality drops.

Should I pick JPG, PNG, or WebP?

JPG: most universally accepted (every form portal). WebP: 25-35% smaller at same quality (great for tight targets). PNG: lossless, best for screenshots and line art (much larger files). Default is "Same as input" — we keep your original format unless you choose otherwise.

What's the maximum file size?

Up to 25MB input. RAW formats (CR2, NEF, ARW) are not supported — convert to JPG/PNG first.