Tags you forgot were still attached
Every JPEG from a 4032×3024 phone capture dated 2024-09-12 can still carry maker notes, orientation, and sometimes coordinates until an export step removes them.
This workspace is for the moment you need the truth inside the file, not the caption on social media.
Who opens the envelope on purpose?
- Support engineers attaching proof images to tickets and needing ISO, lens, and timestamp without asking the reporter to dig through desktop apps.
- Researchers comparing batches of field photos where orientation and capture time must line up with logbooks.
- Designers reconciling color issues after a crop or resize pipeline, checking whether software rewrote tags.
- Anyone about to publish a sensitive location photo who wants to confirm whether coordinates survived the last edit.
What shows up here versus what never will
| Signal | Typical source |
|---|---|
| Shutter, aperture, ISO, focal length | Camera body EXIF from straight-out-of-camera JPEG |
| Date and time strings | Camera clock or phone locale; not always UTC |
| GPS latitude and longitude | Phone cameras when location services were on for the camera app |
| ICC profile name inside metadata | Sometimes absent even when color looks fine on screen |
| Perceptual “dominant color” or brand hex codes | Not part of EXIF; use dominant color or palette extractor for pixels instead |
Hard limits worth stating upfront
EXIF.js walks the binary markers your browser exposes. HEIC support depends on the OS and browser pairing; some builds hand the decoder a raster with no tags attached. Animated GIF and many PNG exports arrive with empty tag maps even when the picture looks rich.
We do not validate legal admissibility, chain of custody, or tamper evidence. For court-grade work you need forensic tooling plus documented hashes. Here you get a fast readout for creative and operational workflows.
Large bursts slow down slightly because the parser reads the whole object you selected. Staying under a few dozen megabytes per file keeps the UI responsive on phones.
Inside the readout, without the engineer voice
You choose a file. The browser hands our script a blob. EXIF.js looks for APP1 segments and other known pockets where manufacturers stash tag dictionaries. When a field resolves, we print the human label you expect from camera menus, not only the raw integer.
Orientation tags explain why a thumbnail looked sideways in one viewer yet upright in another. Software fields name the exporter that touched the file last, which matters when color shifts appear after a round trip through a mobile editor.
GPS blocks arrive as degree-minute-second arrays. We convert them to decimal degrees for maps and label the row so you notice before you paste coordinates into a public thread.
Filters along the top slice the same object different ways so mobile readers do not scroll through fifty unrelated keys. “Everything” remains the honest dump, including odd vendor tags power users recognize from their own bodies.
Workflow mistakes we see in the wild
People screenshot a histogram from a desktop app, send the PNG, then ask why metadata disappeared. The screenshot never carried the original tags. Attach the native JPEG or TIFF when someone needs settings.
Others assume “remove location” in a social app scrubbed EXIF everywhere. Many apps strip GPS yet leave body serial fields alone. Read the file here before you treat silence as safety.
Teams sometimes compare timestamps across time zones without noting EXIF date strings often follow the camera clock, which drifts or stays on daylight rules from another country. Pair tags with your travel log instead of trusting them as legal timestamps.
Why “export JSON” exists
Clipboard copy grabs raw tag keys for Slack or email. Export bundles filename, size, MIME type, ISO timestamp of extraction, plus the tag object so you drop one attachment into a ticket instead of twelve screenshots.
After you confirm metadata, heavy re-encode steps belong in dedicated tools. When file size matters more than tags, run compressor on a duplicate so you keep an untouched original elsewhere.
