Compress files without sending them anywhere.

Images, video, audio, and PDFs are re-encoded right here, in this tab, using your browser's own engine. The bytes never touch a network — there's no server for them to go to.

Nothing you drop below is ever uploaded

How it actually works

Four steps, all of them local. There's no fifth step where anything leaves your device.

  1. 1

    Add a file

    Dropped or picked files are read straight into memory by your browser. DD Compressor never sees a URL to upload to, because it doesn't have one.

  2. 2

    Set a target size

    Pick a goal in KB, MB, or GB. It's a target the engine works toward, not a guarantee — an already-compressed file has less room to shrink, and DD Compressor will tell you so rather than fake a result.

  3. 3

    Compress on your device

    Images use the Canvas API with an iterative quality-and-dimension search. Video and audio run through a local copy of FFmpeg compiled to WebAssembly. PDFs are re-built by recompressing their embedded images, keeping the text layer intact.

  4. 4

    Download the result

    The output is handed to you as a normal browser download. It existed only in this tab's memory before that.

Everything above runs inside this boundary. No upload endpoint exists in this app's code — not ours, not a CDN's, not an analytics provider's. The Content-Security-Policy on this page (view source, or the note below) is set so the browser itself will refuse any attempt to send data out, even a future bug in this code couldn't create a working upload without that policy also being rewritten.

What's supported

Where DD Compressor writes the compression logic itself, versus where it runs a well-established open-source engine locally.

TypeReadsWritesEngine
Imagejpg, png, webp, gif, bmpjpg, png, webpOur own code — Canvas / OffscreenCanvas
Videomp4, mov, webm, avi, mkvmp4, webmFFmpeg (WebAssembly), run locally
Audiomp3, wav, m4a, aac, ogg, flacmp3, aac, ogg, wavFFmpeg (WebAssembly), run locally
PDFpdfpdfOur own code, on top of pdf-lib
Othertext, code, JSON, unknown.gzBrowser-native CompressionStream

This page's own policy: default-src 'self'; connect-src 'self' blob:; worker-src 'self' blob: — the full policy is in the page's <head> .