Image metadata remover

Remove supported EXIF/GPS, XMP and Photoshop APP13 segments from JPEG, then create a local PNG with orientation applied and output tags checked.

8-bit, three-component RGB JPEG; up to 8 MiB, 4 million pixels and 8192 per side. The format is checked from bytes. PNG output is limited to 24 MiB.

EXIF segments including GPS, standard XMP, and Photoshop APP13 carrying IPTC are removed from a temporary decoding copy before the image is opened. EXIF orientation is applied once, then the image is re-encoded as PNG. ICC profile preservation and matching every camera’s colors are not promised; visible or hidden information in pixels is not removed.

Combined metadata: 256 KiB and 4096 JPEG markers; TIFF: 4 tables, 64 entries per table and 4096 values per entry. XMP: 8 KiB per packet, 128 nodes, 128 attributes and depth 16. One session with a 15-second deadline; small XML parsing is synchronous; PNG CRC and chunk checks run in a terminable worker and cancellation cannot kill the browser’s native codec.

A valid image may be rejected for an unsupported feature: CMYK or grayscale, EXIF thumbnails/next-IFD, Extended XMP, unknown APP1/APP13, or a declared EXIF ColorSpace other than sRGB. This describes processing support, not a malicious file.

How to use

Choose a local JPEG and read the supported profile, then start removal. The parser first checks JPEG, EXIF and XML structure and removes supported EXIF/XMP/Photoshop segments from a temporary copy before decoding. EXIF orientation is applied once and a PNG is created. Review dimensions, preview and removed-segment counts, then download; the original is unchanged.

Try an example

A stored 40×24 image with EXIF orientation 6 becomes a 24×40 PNG. With one EXIF segment containing GPS, one XMP segment and one Photoshop APP13 segment containing IPTC, the counts are 1/1/1 removed segments. Output eXIf and PNG text chunks are checked for absence; an empty metadata object is not the only check.

Support & limits

Re-encoding changes the format and bytes and can increase file size. ICC and other retained segments remain in the decoding copy, but final PNG does not promise to preserve the ICC profile or match every camera color. Visible text and information hidden in pixels are not erased. EXIF/GPS is removed as a whole segment; the tool does not interpret every coordinate or MakerNote. The entire Photoshop APP13 segment is removed, including non-IPTC resources if present. XML 1.1, DTDs, custom entities and duplicate/conflicting orientation are rejected; XMP orientation needs matching EXIF. The 256 KiB cap is cumulative across metadata; 8 KiB applies per XMP packet, with two small synchronous passes for policy and meaning, not an XML parsing worker. A terminable worker checks the complete PNG and each chunk CRC within the same deadline, removes browser-emitted deBG if present and checks again, preserving accepted chunks byte-for-byte. sBIT describes color precision; iCCP is a profile emitted by the encoder, with no profile-privacy guarantee. The 15-second deadline and cancelled output cannot immediately stop native decode/toBlob; the session remains reserved through cleanup. Limits are not a measurement of the browser’s total heap.

Common questions

Does removing tags mean the image has no personal information, or that every JPEG is supported?

No. The profile covers supported segments and checks that output PNG has no eXIf, tEXt, iTXt, zTXt, tIME or unsupported chunks. Browser-generated color/physical-dimension chunks may remain, and information can remain visible or encoded in pixels. Grayscale, CMYK, EXIF thumbnails/next-IFD, Extended XMP, unknown APP1/APP13 and EXIF ColorSpace other than sRGB are unsupported. A rejected file may work correctly elsewhere; rejection means this processing path does not establish preservation of its properties within the stated profile.

Related tools