Every race photographer has had the same daydream: a tool that opens a folder of 5,000 shots, recognises every runner, and tags each photo with a name. Sell them, sort them, send them — done.
The technology exists. We chose not to build it. Here's why.
The legal floor is higher than most people realise
Under the EU's GDPR, a face template — the numeric vector a recognition model extracts from a photo — is biometric data. That puts it in the same category as fingerprints and DNA samples. Processing it for the purpose of uniquely identifying a person requires either explicit consent from every individual in every frame, or a narrow set of legal exceptions that public-event photography does not fall under.
The UK's Information Commissioner has been clear on this. So has the CNIL in France. So has the Garante in Italy. The pattern repeats across jurisdictions that copied the GDPR template — Brazil's LGPD, California's CCPA/CPRA, Illinois' BIPA.
For a small studio handling a regional half-marathon, the practical question isn't "will I be fined?" — it's "can I afford to find out?"
Bibs are different. A bib number is an identifier the runner consented to wear — explicitly, by signing up. It is designed to be readable, public, and disposable. Reading a bib is closer to reading a license plate than scanning a face.
It's not just the runners
Face recognition doesn't only look for the person it's trying to match — to check who matches, it has to scan every face in every photo first. That means spectators, family members cheering from the sidelines, volunteers, other people's supporters: anyone who ends up in frame gets their face processed too, even though they never entered the race, never signed a waiver, and were never asked.
That's biometric processing of people who have no relationship with the event at all. And responsibility doesn't stop with whoever runs the face-matching — the organiser who commissioned it, the photographer who captured the images, and the company providing the technology can all end up jointly responsible. A contract that tries to hand the risk to someone else doesn't change what the law says.
Faces aren't built for this
Race bibs solve a problem race photography keeps running into: high-contrast, high-legibility identification under terrible conditions. Bibs are built to be read at distance, at angle, in low light, while moving. The font is bold, the contrast is high, and the design is regulated by the organiser.
Faces, by contrast, are the worst possible recognition target a race photographer hands an algorithm:
- Half the field is in sunglasses or a cap.
- Heads turn, tilt, and drop at unpredictable angles.
- Motion blur affects facial features more than it affects flat printed numerals.
- A runner's face at km 38 looks meaningfully different from the same runner at km 2.
A model can compensate for some of this. None of it compensates for the fact that the photographer didn't compose the frame to capture a face. They composed it to capture a runner.
Bibs travel. Face data doesn't.
This is the part most "just use AI" arguments skip.
A bib number is a string of digits. It writes cleanly into an image file's standard metadata fields — IPTC keywords, XMP subject tags — fields that every photo management tool built since the early 2000s already understands. Lightroom, Capture One, SmugMug, Pic-Time, PhotoShelter, your own gallery: tag a photo with 1247 and every one of them finds it.
A face recognition result is something else entirely. Every model — FaceNet, Apple Vision, AWS Rekognition, ArcFace, whatever ships next — produces a different numeric vector to represent the same face. They are not interoperable. A FaceNet embedding is gibberish to Apple Vision; an AWS template is gibberish to a self-hosted model. There is no portable, standardised way to attach "this is John" to a JPEG that any tool can later read back.
Even if there were, the moment a face vector is in the file, you've shipped biometric data on every photo. Every download, every email attachment, every backup carries it onward — into systems whose compliance posture you don't control.
In practice, face recognition locks a photographer into one vendor's database, indefinitely. Bib numbers are portable forever.
What this means for our product
Four concrete consequences:
- You don't need anyone's consent to use TagMyRun. The data we read — bib numbers — was placed in the frame by the runner, by signing up. We never extract a face template, never train on faces, never store one.
- There is no opt-out database to manage. Photographers sometimes ask how a runner can request removal. The answer is: there is nothing about them to remove.
- The output is portable. Bibs travel cleanly across platforms — SmugMug, Pic-Time, PhotoShelter, your own gallery. Face data, even if you generated it legally, generally can't.
- The economics don't work in face recognition's favour either. It needs a reference photo of every runner collected up front, plus ongoing infrastructure to manage matches, updates, and deletion requests — costs that only grow as regulation tightens. All of that for a narrow gain: catching the rare runner whose bib is missing entirely, a case we already handle well down to a bib that's folded, angled, or partly hidden.
The trade-off we accepted
Bib reading can't tag a finisher whose bib fell off at km 30. Face recognition could, in theory. We think that's the right trade: an imperfect tool you can deploy worldwide, today, beats a more complete one that puts the photographer one complaint away from a regulatory letter.
If you disagree, we'd genuinely like to hear why — the contact form reaches us directly.