The darkroom · Exif viewer
Exif viewer: every tag, named and decoded
Drop a photo and read everything in it — camera, lens, exposure, dates, serial numbers, the GPS position — tag by tag, directory by directory. The file is read in this tab and goes nowhere.
310 tag names · 38 tables of meanings · EXIF, GPS, XMP, IPTC, ICC · JPEG, PNG, WebP, HEIC, AVIF · 0 bytes uploaded
The tray
Drop them in. Read them. Clean them.
Each photograph gets a card: what the file really is (by its bytes, not its name), its size, and a flag for every thing in it that points at a place or a person. What it says opens the lot, tag by tag. Strip takes the metadata out and leaves the picture exactly as it was; Develop writes a new file in the format and size the developer is set to. Beside the tray, the bench holds the other tools — the Exif viewer, Convert, Resize, Compress and Crop. Several photos at once is the point: the buttons under the drop zone do the whole tray.
The tray
Empty — nothing read yet
Drop photographs hereYour photographs, read here
JPEG, PNG and WebP; HEIC and AVIF where this browser can decode them. Or paste an image. Nothing is uploaded.
The tray is empty. Choose some photographs, drop them anywhere on this page, paste one, or try the sample — a picture drawn by this site whose metadata was written by hand the way a phone writes it.
A batch lives in this tab’s memory until you clear it or close the tab. Nothing is written to the browser’s storage except the developer’s settings.
Exif viewer
What an Exif viewer shows you
Directories of tags
Exif is a small TIFF file stored inside the photo. It is built of directories, and each directory is a list of tags: a number, a type, a count and a value. This viewer walks every directory it finds and prints every tag in it — nothing is summarised away. Open a card’s What it says and then Every tag, raw: each directory is a table of its own, with the tag’s number, its registered name, its type and its value in words.
| Directory | What it holds |
|---|---|
| IFD0 | The picture: make, model, software, artist, copyright, orientation, the date it was changed |
| Exif | How it was taken: exposure time, f-number, ISO, focal length, flash, the lens, serial numbers, the date taken, the maker note |
| GPS | Where: latitude, longitude, altitude, the direction the camera faced, the GPS clock |
| Interop | The interoperability index and version |
| IFD1 | The embedded thumbnail: a second, small picture, shown as a picture |
The viewer names 310 tags: 273 from the TIFF, Exif and DNG registers, 32 GPS tags and 5 interoperability tags. A tag it has no name for is still shown, as an unknown tag with its number and its raw value. 38 tags have a table of meanings, so Orientation 6 reads as a photo on its side and metering mode 5 as a pattern. Exposure time is written as a fraction of a second, aperture as an f-number, and the APEX values are converted. The same tags are also filed in plain words, by what they give away: where, when, the camera and lens, the exposure, people and software.
GPS: coordinates, and a warning
If the file holds a complete position, the card turns red and says so first, as decimal degrees and as degrees, minutes and seconds, with the altitude, the accuracy of the fix, the direction the lens faced and the GPS time where they are there. You can copy the coordinates with one press. There is no map on this page and no link to one: a map would have to fetch tiles for that spot from a map server, and that request would tell the server where your photo was taken. To take the position out, strip GPS from the photo — all the metadata, or the location only.
Beyond Exif
XMP is an XML packet. The viewer lists the properties it finds and shows the packet exactly as it is stored. IPTC fields — caption, credit, city, keywords — live in a Photoshop resource block, and each dataset is listed by its record and number; 39 dataset names are known. The colour profile is read by its header: its description, its version, its class and its colour space. In a PNG the viewer reads tEXt, zTXt and iTXt text, eXIf, pHYs, iCCP and tIME; in a WebP, the VP8X flags and the EXIF, XMP and ICCP chunks; in HEIC and AVIF, the brands, the items, the rotation property and the Exif and XMP items. The last table is the file itself, part by part: every segment or chunk with its offset, its size, and whether a strip would remove it.
What it does not do
The maker note is a block in the camera maker’s own format. The viewer names it, measures it, shows the first characters when they are readable, and does not decode it. JIS-encoded comments are named, not decoded. Extended XMP is named and measured only. HEIC and AVIF items that point into other items are not followed. Where a value points outside its block, or a directory loops back on itself, the viewer says so and reads no further down that path. Every value is written as text: a tag that holds markup shows the markup, and nothing in a file becomes part of this page.
Where the names come from
From your file and nowhere else. The tag names were generated from Pillow 11.3.0’s register; the meanings of values were written for this bench and checked, key by key, against ExifTool’s published tables.
How to check that nothing is uploaded. The page’s own scripts make one request of their own — the sample card, from this site, when you press for it — and none that carries a file. The folder is served with a Content-Security-Policy header that lets the page connect only to this site and to Google’s analytics hosts, so even a mistake here could not send a photo anywhere else: the browser would refuse it. Open the developer tools, choose the Network tab, clear it, then add a photo and run the tool, and watch. Google’s analytics counts the visit and that a tool was used; nothing in this page hands it a file name, a pixel or a tag.
The other tools
One tray, seven tools, a page for each.
Every tool page carries this same tray and opens the bench on its own tool; the tabs switch tools in place, so the photos already in the tray stay where they are. Each page says more about its one job.
- The darkroomThe tray and all seven tools on one page, with the whole method.
- Exif viewerEvery tag in a photo named and decoded — camera, lens, date, the GPS position — with XMP, IPTC and the colour profile.This page
- Remove EXIF and GPSAll the metadata, or only the location, out without re-encoding: the picture’s bytes are copied and read back.
- ConvertTo WebP, JPEG or PNG with the browser’s own encoder — and AVIF where it can write it.
- ResizeFit photos inside a box of pixels, or set an exact size — one or a batch, as one ZIP.
- CompressA quality slider that shows the new size in bytes before you download.
- CropDrag a frame or type exact pixels; hold 1:1, 4:3, 3:2, 16:9 or 4:5.
Method
What is read, what is written, and what is sent: nothing.
Fetched, computed, sent
There is no upstream and no server doing the work. The page loads its own files from this site, and the sample card from this site when you ask for it; your photographs are read from disk into this tab’s memory, worked on there by the page’s own readers and the browser’s own decoders and encoders, and handed back as downloads made in that memory.
The folder is served with a Content-Security-Policy header whose connect-src allows
this site and Google’s analytics and ad-measurement hosts —
*.google-analytics.com, analytics.google.com and
*.analytics.google.com, *.googletagmanager.com, www.google.com
and its country domains, and stats.g.doubleclick.net — and nothing else. The full
method — every format read by hand, every limit, every source — is on
the darkroom’s front page.
Sources for this tool
- ExifTool tag tables — EXIF: what each value means; the value tables were checked against it key by key. Read 2026-09-28.
- ExifTool tag tables — GPS: the GPS directory’s tags and reference letters. Read 2026-09-28.
- ExifTool tag tables — IPTC: dataset numbers and names. Read 2026-09-28.
- ExifTool tag tables — Photoshop: image resource numbers (0x0404 is the IPTC block). Read 2026-09-28.
- ExifTool tag tables — JPEG: which application segment carries what, and the trailers phones append. Read 2026-09-28.
- W3C PNG Specification, Third Edition: chunk types and eXIf. Read 2026-09-28.
- Google — WebP Container Specification: RIFF chunks, the VP8X flags, EXIF, XMP and ICCP. Read 2026-09-28.
- Pillow — PIL.ExifTags: the 310 tag names were generated from it (Pillow 11.3.0). Read 2026-09-28.