Remove JPG metadata: the APP segments, and a recorded before and after
Remove JPG metadata: the APP segments, and a recorded before and after?
A JPEG keeps its metadata in marker segments before the image data. This page names them, shows what the Metadata Cleaner removed from a GPS-tagged test photo, and lists the two side effects of the method: a re-encode and a baked-in rotation.
C2PA: Coalition for Content Provenance and Authenticity; C2PA specification 2.4
Last updated
A JPEG keeps its metadata in marker segments before the image data. This page names them, shows what the Metadata Cleaner removed from a GPS-tagged test photo, and lists the two side effects of the method: a re-encode and a baked-in rotation.
Evidence checked 2026-10-18
Where a JPEG keeps metadata
| Segment | Holds | Privacy relevance |
|---|---|---|
| APP1 “Exif” | EXIF tags, thumbnail, GPS IFD | Capture time, camera and lens, serial numbers, coordinates. |
| APP1 XMP | XMP packet, sometimes extended XMP | Edit history, creator tool, ratings, rights text. |
| APP13 | Photoshop resources, IPTC | Caption, byline, credit, keywords. |
| APP11 | JUMBF boxes | C2PA Content Credentials. See Content Credentials. |
| APP2 ICC_PROFILE | Color profile | Color only. |
| COM | Free-text comment | Whatever the writing tool put there. |
References: the CIPA EXIF standard, the ExifTool EXIF tag list, and the C2PA specification for how manifests embed in JPEG.
A recorded run on a GPS-tagged photo
Browser run on 2026-10-02 in Chrome/154.0.8037.92, using the live Metadata Cleaner on the homepage. The block table below was computed afterwards by this site's own parser on the input and output files, which are published with the metadata removal report.
The input was a 1,156-byte synthetic JPEG with EXIF (image description, software, orientation 6), a GPS position, and an ICC profile. The output was 771 bytes.
| Block | Before (bytes) | After (bytes) | Result |
|---|---|---|---|
| EXIF (APP1) | 380 | — | Removed |
| ICC color profile (APP2) | 498 | 474 | Kept |
| JFIF header (APP0) | — | 18 | Written by the export |
Fields the viewer read before and not after: Image description = Synthetic public landmark fixture; Orientation = Rotate 90 CW; Software = cpk-media-corpus; GPS latitude = 48.858400; GPS longitude = 2.294500; Pixel width = 48; Pixel height = 32; Width = 48; Height = 32. The output carries a JFIF header the export wrote. Independent decode of the cleaned JPEG found no GPS IFD and no EXIF segment. An ICC profile is still present. Input ICC is 480 bytes c56e1685d888f5edb92fe07f2750f387f8fe8e91b32ff8fb0b56bfbbb9458353. Output ICC is 456 bytes 12afb4d9953adee0607d347daee5b78b18d6b3cab2d572b88970703f5edb37bc. Stored input pixels were 48x32 orientation 6. Cleaned pixels were 32x48 orientation none.
Two side effects to know about
Re-encoding. Every clean is a fresh JPEG at quality 0.95. One pass is rarely visible. Cleaning the same file again and again compounds loss, so keep the original and clean a copy once.
Orientation. A phone photo often stores landscape pixels plus an orientation tag. After the clean the tag is gone and the pixels are rotated, as the recorded run shows. A viewer that ignored the tag before will show a different picture than it did for the original.
Pixels are untouched. The removal benchmark fixture MR-JPG-008 has a date stamp burned into the picture and an EXIF time. The EXIF time goes. The stamp stays, and the benchmark scores that case partial.
Confirm it on your file
Clean a copy with the Metadata Cleaner, then compare original and copy in Verify metadata removed. Location only: remove GPS from a photo and does removing EXIF remove GPS.
Related: EXIF remover, JPEG EXIF lab, what EXIF is.
FAQ
Does cleaning a JPG re-compress it?
Yes. The cleaner draws the image on a canvas and exports it with toBlob at quality 0.95 (see public/js/metadata-cleaner.js). That is a new lossy encode, not a byte-for-byte copy with the segments cut out.
What happens to EXIF orientation?
The browser applies the orientation when it decodes the image. In the recorded run the input stored 48×32 pixels with orientation 6, and the output stored 32×48 pixels with no orientation tag. The picture looks the same and the rotation now lives in the pixels.
Is an ICC profile removed?
No. The recorded output still had an ICC profile segment (474 bytes after, 498 before). The browser writes its own. The sealed report marks this case partial for that reason, and an ICC profile describes color, not a person.
Is a lossless metadata strip possible?
Cutting segments out of the file leaves the compressed image data alone, and tools such as ExifTool do that. This page covers the in-browser canvas method only.
More tools
Metadata Cleaner · Verify metadata removed · Image Metadata Viewer · Removal benchmark