How EXIF stripping works
A JPEG file is a sequence of tagged segments called APP markers, starting right after the two-byte SOI signature (0xFFD8). EXIF data lives in APP1, GPS lives inside the same APP1 block as a sub-IFD, and IPTC lives in APP13. The stripper walks every marker, identifies the ones carrying metadata, removes them, and reassembles the remaining payload into a valid JPEG.
- Parse APP markers. The tool reads the raw ArrayBuffer and walks the JFIF marker sequence byte by byte. Each two-byte marker tag identifies a segment type: APP0 (the JFIF header), APP1 (EXIF and XMP), APP13 (Photoshop and IPTC), and so on through APP15. The parser records the offset and byte length of each segment in a small table before touching anything, so the original buffer stays intact in memory.
- Decode EXIF tags. The APP1 payload is a mini TIFF structure with four Image File Directories: 0th IFD (main image attributes), Exif SubIFD (exposure, lens, focal length, ISO), GPS IFD (latitude, longitude, altitude, direction), and 1st IFD (the embedded thumbnail). Each tag carries a numeric code, a data type (byte, short, long, rational, ASCII string), and a value. The tool maps numeric codes to human-readable names using piexifjs’s tag dictionary, then renders them in the metadata panel grouped by IFD.
- Flag GPS tags. Any tag in the GPS IFD is highlighted with a red privacy badge. Latitude and longitude are stored as three rational numbers (degrees, minutes, seconds) plus a reference direction (N or S, E or W). The tool converts them to signed decimal degrees with six digits of precision (~11 cm at the equator) and shows the result in the GPS panel alongside an OpenStreetMap link. No tile request goes out — the link is generated locally and only opens if you click it.
- Strip metadata. For JPEG files the default path uses piexifjs to remove the APP1 segment entirely, returning a new dataURL with the pixel data untouched. When "Keep orientation" is on, the tool rotates the image on a
<canvas>to match the originalOrientationtag value (1–8) before stripping, so the visual result matches what your camera intended — the rotation is baked into the pixels instead of relying on a metadata flag. - Canvas re-encode path. When "Keep ICC color profile" is turned off, the tool draws the image to a hidden
<canvas>and callscanvas.toBlob('image/jpeg', quality). This path strips everything (EXIF, XMP, IPTC, ICC profile, thumbnail) and lets you control the JPEG quality slider from 60 to 100. The default is 92, which produces files within a few percent of the original size at quality indistinguishable from the source on most photos. - Download the clean file. The cleaned blob is offered as a download named
<original-name>-stripped.jpg. The tool re-parses the result and confirms the EXIF GPS section is empty before the download link appears, so you never get a file labelled "stripped" that still carries a location tag. PNG and WebP files don’t carry EXIF in the first place; the tool shows a "No EXIF" message and skips the strip step for those formats.
Why strip EXIF before sharing
- Location privacy. Smartphones embed precise GPS coordinates in every photo by default. A JPEG from a restaurant, an office, or a home carries that address in its metadata at roughly five-meter accuracy. Strip the GPS tag before posting to social media, emailing a stranger, or attaching a screenshot to a public support ticket and you remove that location fingerprint completely.
- Anonymity in publications. Journalists, activists, and whistleblowers strip EXIF before submitting photos because the camera serial number, the lens firmware version, and the creation timestamp can all be cross-referenced against other published images to identify the photographer. Removing those tags is a baseline operational-security step for anyone whose byline shouldn’t be tied to a specific physical device.
- Smaller file size. A typical smartphone JPEG carries 5 to 15 KB of metadata in its APP1 segment, including the 160 × 120 embedded thumbnail. That’s small relative to a 5 MB photo, but stripping it across a batch of 1,000 product images saves 5 to 15 MB per upload round-trip — useful when you’re trimming a product catalogue, a stock-photo library, or a Pinterest export.
- Remove camera fingerprint. Camera make, model, firmware version, lens identifier, and shutter-actuation count form a fingerprint that can link photos across separate uploads even when EXIF is otherwise unremarkable. If you’re sharing images without revealing your hardware (a bug report, a competition submission, an anonymous portfolio), the Exif SubIFD is where that identifying information lives. Strip it and the link is broken.
Common applications
EXIF stripping comes up any time a photo changes hands and the metadata it carries could cause problems for the sender or the subject.
- Social-media uploads: most platforms strip EXIF server-side anyway, but stripping client-side first means the original coordinates are never transmitted to the platform’s servers at all. If their pipeline ever leaks (or gets subpoenaed), the original GPS isn’t in their logs because it was never sent.
- Journalism and documentary photography: wire services and photo desks require clean metadata so byline attribution and caption data are controlled by the desk, not the camera. Photo editors at AP, Reuters, and AFP all run incoming images through a metadata-scrub step before they hit the wire.
- Property and product listings: real-estate agents and e-commerce sellers routinely upload photos taken at the property or warehouse address. Stripping GPS before upload prevents the listing from inadvertently publishing a precise business address in the file — useful when the warehouse is a private residence or the property is still occupied.
A worked example
A 3.5 MB JPEG shot on a recent iPhone carries around 12 KB of APP1 metadata: GPS coordinates with bearing and altitude, the capture timestamp down to the millisecond, the camera model and lens identifier, white-balance settings, and a 160 × 120 embedded thumbnail. After stripping with the default piexif path, the file lands at 3.488 MB. That’s 12 KB lighter, pixel-identical to the original, and free of the location ping. The GPS panel above will show exactly which coordinates were removed before you download.
What is EXIF metadata?
EXIF (Exchangeable Image File Format) is a standard defining how digital cameras and smartphones store metadata inside image files. A typical smartphone JPEG carries the camera make and model, lens focal length, shutter speed, ISO, the precise GPS location (down to a few meters), the creation timestamp, and a small embedded thumbnail — all invisible in the rendered image itself but readable by any EXIF-aware application, including the OS file browser and most photo-editing tools.
Why should I strip EXIF before sharing a photo?
The GPS tag exposes where the photo was taken, down to a few meters. Share a photo without stripping it and you share that location with everyone who receives the file. Camera serial numbers and lens identifiers can also fingerprint the photographer across separate uploads, which matters for anyone publishing pseudonymously. Stripping removes all of this before the file leaves your device.
Does this affect image quality?
The default piexif path removes the APP1 segment without touching image pixels, so quality is bit-identical to the original. The canvas re-encode path (used when "Keep ICC color profile" is off, or when "Keep orientation" is on for a rotated image) re-encodes the pixels at the selected JPEG quality slider value — set the slider to 95 or higher to keep the visible result close to the source on most photos.
What about HEIC files from iPhones?
HEIC stripping depends on your browser’s native HEIC support. Safari 13+ decodes HEIC natively; Chrome and Firefox do not. If your browser can’t display the HEIC, use your phone’s "Export as JPEG" option first (in iOS Photos: Share → Options → Most Compatible), then upload the JPEG here. The strip step on the converted file works the same way as any other JPEG.
Every strip runs locally in your browser. The original photo never reaches any server, and the cleaned file is produced entirely from the ArrayBuffer loaded into memory at upload time. Drop a photo above, inspect the metadata, and download the stripped copy.