← Blog

What is EXIF — the invisible notebook inside every photo

A JPEG is a sequence of marker segments — EXIF lives in APP1 right after the SOI SOI FF D8 APP1 — EXIF FF E1 + "Exif\0\0" + TIFF IFD cameras, GPS, timestamps, lens APP2 — ICC color profile DQT quant tables DHT/SOF huffman, frame SOS … scan data A typical EXIF block dumps about 50 fields: Make: Apple Model: iPhone 14 Pro Software: 17.4.1 DateTimeOriginal: 2024:08:15 14:32:18 SubSecTimeOriginal: 437 FNumber: 1.78 ExposureTime: 1/120 ISO: 100 Flash: off FocalLength: 6.86 mm FocalLengthIn35mmFormat: 24 mm WhiteBalance: Auto ExposureMode: Auto MeteringMode: Pattern

Every photo from a modern camera or phone carries a hidden block of structured data describing how the picture was taken. Camera body, lens, shutter speed, aperture, ISO, white balance, the exact second the photo was captured, often a GPS coordinate, sometimes the camera's serial number. This block is called EXIF — the Exchangeable Image File Format, originally specified by JEIDA in 1995 and updated through the 2010s.

It is invisible. Open the photo in a viewer, you see pixels. Open it in our viewer, you see the notebook the camera kept while you weren't looking.

Where it lives in the file

A JPEG is a sequence of marker segments — two-byte tags starting with FF followed by their payload. The first marker is always FF D8 (SOI, Start Of Image). Right after it, most cameras emit an FF E1 marker — APP1 — whose payload begins with the literal six-byte string "Exif\0\0" followed by a complete TIFF Image File Directory. That TIFF IFD is the EXIF data.

The EXIF block is internally structured exactly like a small TIFF file: an 8-byte header, then a numbered list of tagged fields, each carrying a type (byte, short, long, rational, ASCII string), a count, and a value or offset to the value. Sub-IFDs branch off for camera-specific data (the SubIFD), GPS coordinates (the GPS IFD), and interoperability info.

The fields nearly every photo has

Optional but very frequent

How our viewer reads it

You drop a file onto the page. The browser hands it to a Web Worker that runs a WASM-bundled metadata reader entirely on your device. The worker walks the JPEG marker chain, finds APP1, parses the embedded TIFF IFD, walks any sub-IFDs (EXIF, GPS, Interop, MakerNotes), groups the results, and posts them back to the main page where they fill the table you see. The original file never leaves your browser.

The same reader handles HEIC, PNG, WebP, AVIF, GIF, MP4/MOV, and PDF — each of those formats has its own container, but the metadata structures inside (TIFF-style IFDs, XMP packets) are largely the same once you find them.

Why any of this matters

EXIF is harmless when you control where the photo goes. It is sensitive when you don't. A real-estate photographer's portfolio leaks the camera's serial number with every upload — every photo you've ever published is linkable to every other through that number. A "leaked" anonymous source's screenshot reveals their phone model, OS version, and timezone. A protest photo carries the GPS coordinate of the moment it was taken. None of this is hypothetical — see the OSINT literature for case studies.

Reading what's there is the first step. Stripping what shouldn't be there is the second; we have a separate tool for that.