August 14, 2026

Your camera's serial number is in every photo you've posted

Location data gets all the attention, and it deserves some of it. But GPS tells someone where one photo was taken. A serial number tells them which photos belong together — and that's a far more durable problem, because you can't fix it by being careful about where you shoot.

The tags

EXIF has standard fields for it:

TagWhat it holds
BodySerialNumber (0xA431)The camera body's serial number
LensSerialNumber (0xA435)The lens's serial number
InternalSerialNumberManufacturer-specific, inside MakerNotes
ShutterCountTotal actuations, in MakerNotes on many bodies

Check one of your own files:

exiftool -a -G1 -SerialNumber -BodySerialNumber -LensSerialNumber -ShutterCount photo.jpg

One accuracy note up front, because plenty of articles get this wrong: phones generally do not write a body serial number. If you shoot on an iPhone or a Pixel, this specific tag is usually not your exposure — your exposure is GPS and the software fingerprints. This is predominantly a dedicated-camera issue: Canon, Nikon, Sony, Fujifilm, and most other interchangeable-lens and higher-end compact bodies write serials, frequently into their proprietary MakerNotes even when the standard EXIF field is empty.

So check rather than assume, in both directions.

Why a serial number is worse than a location

GPS is per-photo. A serial number is per-camera, and it is stable for the life of the body. That difference is the whole point.

Consider a normal situation. You have a portfolio site under your real name. You also post in a hobby forum under a handle, sell prints on a marketplace, and occasionally upload to a stock site. Four contexts you think of as separate.

Same camera. Same serial in all four sets of files. Anyone who collects images from those places and reads the EXIF can group them with a single string comparison — no clever analysis, no machine learning, just grep. The handle is now linked to the real name.

That's a correlation attack, and it's cheap. This isn't hypothetical: services have existed specifically to index camera serials scraped from publicly posted photos, originally built to help people trace stolen cameras. The mechanism works exactly as well for de-anonymising a photographer as for recovering a body.

Add ShutterCount and you get a rough timeline of your shooting, ordered independently of whatever timestamps you edited.

Why most EXIF removers miss it

This is the part worth internalising.

InternalSerialNumber typically lives inside MakerNotes — a proprietary binary blob each manufacturer structures its own way, nested inside the EXIF block. It's not a normal tag. Reading it requires format-specific knowledge of Canon's layout, or Nikon's, or Sony's.

Plenty of tools that advertise "remove EXIF" iterate over the standard tag list and delete what they recognise. MakerNotes is one opaque field to them, and a common behaviour is to preserve it — sometimes deliberately, since it carries lens-correction data that editors want. The result is a file that reports clean on a casual inspection while still carrying a serial number inside a blob nobody looked in.

Worse, some tools blank the standard BodySerialNumber field and leave the MakerNotes copy untouched. A quick check then shows an empty serial and you conclude you're fine.

Check properly:

exiftool -a -G1 -MakerNotes:all photo.jpg | head -40

If that prints anything at all after you've "removed the EXIF", your tool did a partial job.

What actually clears it

Re-encoding from pixels. When a decoder reads a JPEG it produces a bitmap — a grid of numbers with no room for EXIF, MakerNotes, or anything else. Encode a new file from that bitmap and every one of those structures is simply absent, including the blobs the stripping tools couldn't parse:

const canvas = document.createElement("canvas");
canvas.width = img.naturalWidth;
canvas.height = img.naturalHeight;
canvas.getContext("2d").drawImage(img, 0, 0);
canvas.toBlob(blob => { /* no EXIF, no MakerNotes, no serial */ }, "image/jpeg", 0.95);

The advantage over tag-by-tag deletion is that it requires no knowledge of what's in the file. There's no list to keep current as manufacturers add fields, and no proprietary format to parse. Everything outside the pixel grid is gone because nothing outside the pixel grid was ever loaded.

That's what the metadata cleaner does, locally. The tradeoff is honest: JPEG re-encodes once at high quality, and if you need the original bytes preserved you should keep an untouched master and clean only the copy you publish.

Verify it

Run the full dump on a cleaned file:

exiftool -a -G1 clean.jpg

A properly cleaned JPEG shows file-level basics — dimensions, bit depth, color components, the encoder's own JFIF header — and nothing else. No Make, no Model, no SerialNumber, no MakerNotes group, no GPS group.

Do the same check on the original first. If your before-and-after look identical, you're testing the wrong thing.

The browser equivalent is the image metadata viewer, which lists every field it finds, MakerNotes included, without uploading the file.

What to do about photos already posted

Honestly: not much, and it's worth being direct about that rather than implying otherwise.

Files you've already published were published with their metadata. Platforms that strip EXIF strip it from the copy they serve going forward; anyone who downloaded the original has the original. Deleting the post doesn't recall the copies.

What you can do is stop adding to the set. Clean everything from here, and if you maintain deliberately separate identities, consider that a camera body is a shared identifier across all of them — which is an argument for a different body, not a better cleaning routine.

The short version

Serial numbers are stable, per-camera, and mostly a dedicated-camera problem rather than a phone one. They link every photo from a body to every other photo from that body, across accounts and pseudonyms. The copy inside MakerNotes is the one partial EXIF removers routinely leave behind, so check -MakerNotes:all rather than the standard field, and prefer a full re-encode over tag-by-tag deletion.

Related: which platforms strip EXIF for what each service does with the copy it serves, and why iPhone photos keep location with GPS off for the phone-side equivalent.