Disarm a Photo
Drop a photo below to strip EXIF, GPS, and hidden threats from it - entirely on your own device, nothing uploaded. New here? See what's actually riding along in your photos and why this matters first.
Checking network activity…
Intake
Drop one image, or several (or a whole folder), or click to choose
JPEG · PNG · GIF · WebP · HEIC/HEIF · AVIF · JXL* · ICO · BMP · TIFF · SVG · QOI · PNM · TGA
Options
Only affects formats with a quality knob (JPEG, WebP, AVIF). Ignored by PNG/BMP/GIF/lossless WebP.
AVIF output here is high-quality lossy, not bit-exact lossless - the dependency-free encoder this build uses doesn't have a lossless mode. HEIC, SVG, and JPEG XL can only be inputs, never outputs, each for a different reason - see converting between formats for exactly why.
Destroys any data hidden in the lowest-order pixel bits. Higher settings visibly soften flat-color images.
All are opt-in.
Unlock
Free: 3 full uses included, no account needed. Unlock unlimited use for $14.99, one-time, whenever you like.
Unlock unlimited use - $14.99Three free Disarm runs per browser, no account. After that, a single Stripe payment link unlocks unlimited use.
No account or password - if that email shows a completed Stripe payment, this browser is unlocked again immediately.
Inspection ticket
Choose a file to begin.
Everything above runs locally in this browser tab via WebAssembly. No image data is uploaded anywhere, and nothing here writes to a database.
* AVIF and HEIC input both work by decoding through the browser itself before the real sanitize pipeline runs - see by format for how each one actually works. Three formats are input-only and can never be chosen as output, each for a different reason: HEIC's HEVC encoding is patent-encumbered with no viable open-source encoder to license; SVG is always rasterized to PNG since there's no safe way to preserve arbitrary embedded code while stripping only "the bad parts"; and JPEG XL has no mature dependency-free encoder yet, so JXL input always becomes PNG on output too. AVIF, by contrast, can now also be a chosen output format (high-quality lossy - the dependency-free encoder this build uses has no true lossless mode). JXL support is enabled in the build but its own threading dependency's WASM behavior hasn't been independently confirmed - if it fails to load, that's the likely reason; every other format here is unaffected either way.