Marathon photography is scale at its extreme: a large field of runners, all wanting their photos, paper bibs folding under sweat and motion, and finish-line frames with several runners at once. Photographers need to identify every bib — even when partially obscured — then deliver galleries fast, top finishers first. RaceTagger reads the bib numbers off your photos and matches them to the runner names in your start-list, so the gallery is searchable without you typing numbers by hand.
- Typical event
- Single day, several hours of shooting
- Photo volume
- A large, high-volume set per event
- Delivery
- Same-day for top finishers, next day for the full field — speed is the competitive edge
- Key challenge
- Multiple runners per frame with folded, sweaty, or rain-damaged bibs at varying distances and angles
The workflow, step by step
- 1
Pre-Event: Prepare Your Start-List and Import to RaceTagger
RaceTagger · A few minutes
Download the official start-list CSV from the race organizer (usually includes bib number, name, age category). This is your lookup table — RaceTagger matches each detected bib number to a runner name in this file. Clean it: remove duplicates, make sure the bib numbers are in their own column, and save it as UTF-8.
Pro tip
Include ALL participants, not just the elites. The recreational field is where most photo demand lives, so a name missing from your CSV is a sale you can't make.
- 2
Shoot: Position Yourself for Clear Bib Visibility
Camera · Event duration
Avoid steep high angles (scaffold positions foreshorten bibs). Shoot at roughly chest height for the flattest bib view. Shoot RAW so you have maximum latitude in post. Plan a few shooting positions across the course (start, halfway, finish) — each gives a different bib angle, and the cleaner the bib in the frame, the better it reads.
Pro tip
At the finish line, a single clean frame per runner is worth more than a burst of near-duplicates. Every photo you analyze costs a credit (1 credit = 1 photo), so one sharp angle beats five blurry ones.
- 3
Ingest: Import Photos and Run Batch Processing
RaceTagger · Runs as an automatic batch in the background
Create an event folder in RaceTagger and drag in your RAW or JPEG files. RaceTagger reads RAW via the embedded preview, so you don't need to convert first. Import the start-list CSV from Step 1, then start the batch — RaceTagger detects bibs and matches them to runner names. A scene-skip step passes over frames with no readable subject so you don't spend credits on empty shots. Each analyzed photo costs 1 credit.
Pro tip
You don't have to wait for the whole set to finish before you start reviewing. Work in batches, and prioritize the photos RaceTagger flagged as low-confidence rather than re-checking everything.
- 4
Review: Confirm and Fix Low-Confidence Detections
RaceTagger · Scales with how many photos get flagged — wet/occluded events flag more
RaceTagger flags photos where it isn't confident in the bib read instead of guessing. For rain-damaged or heavily occluded bibs this is normal and expected. Open the flagged photos in the review panel and either confirm the detection, type the correct number, or mark it as undetermined when the bib genuinely can't be read. Clean, head-on bibs read well and rarely need a look; folded, occluded, and wet bibs are where your attention goes.
Pro tip
Use a runner's position and pacing to sanity-check ambiguous reads. If two similar numbers appear near each other in a finish-line frame, cross-check the start-list before you commit.
- 5
Export: Write Metadata and Prepare for Delivery
RaceTagger + Lightroom · A short pass once analysis and review are done
RaceTagger writes the runner name and bib number into the photo's metadata — EXIF, XMP, and IPTC — so the tags travel with the file. Open your RAW files in Lightroom and the metadata appears in the Keywords panel. Add your photographer credit and copyright, and the images are fully tagged and ready to deliver.
Pro tip
If you deliver through an event gallery platform, check its metadata requirements first. Some platforms auto-populate the runner name from the bib number if it's present, which saves you a separate match step.
- 6
Deliver: Generate and Share Galleries
Lightroom or event platform · Setup once, then automated per upload
Use Lightroom's publish feature or your event platform's uploader to push the tagged images. Because the names and bib numbers are in the metadata, runners can find their photos by searching their name or bib number. Deliver top finishers first to build goodwill, then the full field.
Pro tip
Deliver to the event organizer as early as you can — they'll promote it on their channels, which drives traffic and sales. Being first to deliver is often what wins next year's contract.
Where the numbers get hard
Paper Bibs Folded by Runner Movement and Sweat
Why it's hard. Runners bend at the torso, and paper bibs crease through the middle, distorting digits — a folded '4' can read like a '1'. The fold happens unpredictably from frame to frame.
How we handle it. RaceTagger reads the bib in context rather than character by character, so partially visible digits can still be recognized. When the read is uncertain, it flags the photo for review instead of committing to a guess.
Multiple Runners in Finish-Line Photos (several bibs visible)
Why it's hard. Finish-line frames put several runners at different distances, angles, sizes, and contrast levels in one shot. Each visible bib is its own read.
How we handle it. RaceTagger detects multiple bibs in a single photo and tags that photo to each runner it identifies, so one finish-line frame can land in several runners' galleries.
Bibs Partially Hidden by Hydration Vests, Jackets, and Belts
Why it's hard. Gear covers part of the bib — a vest hides the top, a belt the bottom — leaving only a few digits visible. The visible portion can be ambiguous on its own.
How we handle it. RaceTagger works from the digits it can see and the bib's position, and reads that don't reach confidence are flagged for human review rather than guessed. Heavily covered bibs are genuinely harder and will end up in your review queue more often.
Rain-Damaged Bibs with Running Ink and Curling Paper
Why it's hard. Soaked bibs lose contrast: ink runs, paper curls, and numbers blur into the background. Wet-weather photos are popular with runners but are the hardest to read.
How we handle it. Reading the whole bib region in context holds up better in low contrast than isolated-character OCR. Even so, wet bibs are the toughest case and a larger share will be flagged for manual review — budget extra review time for wet events.
Dual-Bib Systems (Timing Chip vs Printed Number)
Why it's hard. Some marathons use a timing chip on the wrist or ankle plus a printed number on the chest. Only the printed chest bib is visible in photos, so matching against a chip-ID list produces wrong names.
How we handle it. RaceTagger reads the visible printed bib. Make sure your start-list maps the printed bib numbers to runner names (not chip IDs), and the detected numbers will match the names in your CSV.
By hand vs with RaceTagger
By hand
Long — a team works through a high-volume set photo by photo, often into the night
Strong on clean bibs early on, but folded and obscured bibs are error-prone, and accuracy drifts as taggers fatigue over a long session
- —Labor cost: a tagging team eats directly into the event's profit margin
- —Delivery delay: overnight tagging means galleries go live the morning after, while faster competitors deliver same-day
- —Errors concentrate on the hard cases — folded and wet bibs — exactly when taggers are most tired
With RaceTagger
Runs as an automatic batch while you do other work; you review only the flagged photos
Clean, head-on bibs read well; folded, occluded, and wet bibs are harder and get flagged for review rather than guessed
- →Faster turnaround: analysis runs unattended, so galleries can go live the same day instead of the next morning
- →Predictable cost: you spend 1 credit per photo analyzed instead of paying a tagging team by the hour
- →Scales with the field size without hiring more taggers — the workflow is the same for a small race or a large one
A Typical Marathon Event Day with RaceTagger
You shoot a large marathon across a few positions — start, halfway, and finish — and come away with a high-volume set. Back at your desk, you import the start-list CSV, drag your photos into RaceTagger, and start the batch. Scene-skip passes over the empty frames, and the rest are analyzed and matched to runner names while you take a break. When it's done, you spend your review time only on the flagged low-confidence photos — the folded bibs and the rain shots — confirming or correcting them. Then you export the metadata (name and bib number written into EXIF/XMP/IPTC) and upload to the event gallery. Because the tags travel with the files, runners find their photos by searching their name or bib number — no manual typing on your side.
Try RaceTagger on Your Next Marathon
Start with your welcome credits plus a free monthly allowance (1 credit = 1 photo). Upload photos from your last event and see the tags RaceTagger generates — no credit card needed.
Try it free →Questions photographers ask
How does RaceTagger handle multiple runners crossing the finish line in the same frame?
It detects multiple visible bibs in a single photo and tags that photo to each runner it identifies, so one finish-line frame can land in several runners' galleries. Multi-bib detection is the point for mass-participation events — close-together runners are exactly the case it's built for.
What if a runner's bib is completely hidden — say, under a jacket — and we can't see any part of it?
RaceTagger flags it as low-confidence or undetermined rather than guessing. You can skip the photo, or type the number in manually if you can identify the runner another way (position, timing data). If the bib genuinely can't be read, it won't invent one — and neither should you.
Do we need to clean the start-list before importing, or can we dump the raw CSV from the organizer?
Clean it first. Make sure bib numbers are in their own column, remove duplicate or late-entry rows, and confirm it's UTF-8. A few minutes of cleanup prevents a lot of match errors later.
How does pricing work — what does analyzing a photo cost?
RaceTagger uses credits: 1 credit analyzes 1 photo. New accounts get a one-time grant of welcome credits plus a recurring free monthly allowance (both admin-configurable), so you can run a real batch from your own event and see the results before paying for more.
Can RaceTagger read rain-damaged bibs where the ink has bled into the numbers?
Clean bibs read well; rain-damaged ones are the hardest case, and a larger share of them get flagged for manual review rather than read automatically. Plan for extra review time on wet events. The upside is that wet-weather photos are often the most popular with runners, so the effort tends to be worth it.
Keep reading