Missed runners are missed sales. On a mass-participation event, a single finish-line frame can contain a dozen or more participants. If your tagging captures only one of them, every other runner in that photo is invisible to your gallery search. The whole revenue model of marathon photography is letting each runner find every frame they appear in — and that only works if you read every visible bib, not just the dominant one.
Understanding the problem
Multi-subject bib detection is the ability to identify and read several race numbers in a single photograph, where runners are at different distances, angles, and partial occlusions. This is fundamentally different from single-subject tagging: instead of reading the one dominant bib, the system has to find and read every bib visible in the frame and tie each one to a participant.
Marathon photography is a high-volume business, and the revenue model depends on every participant being able to find and buy the photos they appear in. A dense finish-line or mid-course frame often contains many runners at once. If the workflow only tags the leader in a crowded shot, every other runner in that frame is unmatched — the photo never surfaces in their gallery search, and that sale is lost. Reading all the visible bibs is what turns one crowded frame into a photo that's findable by many runners.
In this sport specifically
Marathon events are uniquely challenging for multi-subject detection: mass-start formats mean many runners are visible at once in a single frame; finish-line compression packs runners together as they cross within seconds of each other; varied body types and clothing occlude bibs differently; paper bibs fold and shift as runners move; and the sheer density of the field makes each individual bib smaller and harder to isolate. The same combination of crowding, occlusion, and small bib size that makes these frames valuable also makes them the hardest to tag.
Where it shows up
A finish-line frame with many runners crossing together, their bibs at distances ranging from very close to far back in the shot. · very common
Single-subject tagging identifies the nearest runner, whose bib is clearly visible, and matches the photo to that one participant. The other bibs — visible but smaller, at angles, or partially obscured — are ignored. The gallery shows the photo against one runner only, even though many appear in it.
A wide mass-start shot with a large group of runners visible, bibs at varying sizes and clarity. · very common
Basic OCR locks onto the largest, clearest bib and gives up on the rest, and manual tagging of a crowded frame is so slow that photographers tag only the 'primary' runner. Most of the runners in the frame go unmatched.
A mid-race pack photo where several runners are bunched together with bibs overlapping and at different angles. · common
Bibs partially overlap in the frame. Traditional systems struggle to separate overlapping subjects — they either read one bib and miss the rest, or return a garbled read. Heavily overlapped bibs are exactly where confidence should drop and a human should look.
A water-station frame with runners at various distances and directions — some front-facing, some angled away — so bibs appear at very different angles. · common
A mix of clear front-facing bibs and distorted, side-on or away-facing bibs in one frame. Single-subject systems pick the clearest one and miss the rest, so the angled bibs in the frame go undetected.
Traditional approaches, and why they fall short
Manual tag-to-primary-subject only — read the closest bib and move on
A crowded multi-runner frame takes much longer to tag fully by hand than a single-runner frame, so in practice it gets tagged to one runner and the rest are skipped · Reliable for the one primary subject; the other runners in the frame are simply not tagged at all
Doesn't scale. Fully tagging every runner in every crowded frame by hand is unrealistic on a mass-participation event, so most photographers tag only the first or closest runner — leaving the majority of runners in dense frames unmatched and their sales lost.
Batch keyword tagging — apply one set of bibs to all photos from a time window
Quick per batch, but the output isn't individually reliable · Produces both false positives (tagging runners to photos they aren't in) and false negatives (missing runners who are)
Creates database junk. Runners find photos they're not actually in, and runners who are in a photo still go untagged. Not usable for precise, sellable delivery.
Timing-chip cross-reference only — match chip times to the runner database and skip visual tagging
Depends on timing-system integration and post-race processing · Works for checkpoint photos at fixed timing points, but doesn't help for mid-field and finish-line frames full of multiple runners
Doesn't solve the visual identification problem. A photo of several runners mid-course can't be matched to specific names without actually reading the visible bibs in the frame.
How RaceTagger handles it
RaceTagger processes the whole scene rather than just the dominant subject: it detects the people in the frame, locates the bib region on each, and reads each number independently. A crowded frame therefore produces multiple bib reads, and each read is matched against the start-list CSV you upload (bib, name, age group, and any other columns you include), so a single photo gets tied to every participant whose bib it could read — not just the closest one. It reads both JPEG and RAW files (via the embedded preview) and writes the matched results into each photo's metadata (EXIF/XMP/IPTC), so the tags travel with the files into Lightroom, Photo Mechanic, Capture One, or your gallery and delivery tools.
Key advantage
It reads the visible bibs across the whole frame in one pass, not just the biggest or closest, so a crowded finish-line photo can surface for many runners instead of one. When a bib is too overlapped, distorted, or distant to read with confidence, RaceTagger flags it for review rather than guessing — so the confident matches stay trustworthy and your review time goes only to the uncertain ones.
- Good conditions
- Front-facing, well-lit bibs at a readable size — typical of runners near the camera at the finish line — read reliably.
- Challenging
- Mixed distances, side-angle bibs, and partial occlusion by other runners are harder; uncertain reads in a crowded frame are flagged for review rather than silently mis-tagged.
- Worst case
- Heavy overlap, extreme distance variation, and strong motion blur are the hardest cases — RaceTagger flags low-confidence reads for review instead of guessing, so the harder a bib is to read, the more likely it lands in your review queue rather than the wrong runner's gallery.
Import your start list once (bib, name, age group, and anything else you want carried through). Point RaceTagger at a folder of finish-line or pack frames and run the batch. For each photo it reads the bibs it can and matches them to named participants, writing the tags into the file's metadata for import into your editor or gallery tool; it can also organize the tagged files into folders by number, name, or category. Crowded frames naturally produce more flagged, low-confidence reads, so review those first, fix the few that need it, and deliver.
Manual vs OCR vs AI vision
| Metric | Manual | Basic OCR | RaceTagger |
|---|---|---|---|
| How many runners per frame get tagged | In practice, usually just the primary runner — fully tagging a crowded frame by hand is too slow | Typically only the largest, clearest bib | Reads the visible bibs across the whole frame and matches each to a named participant from your start list |
| Primary-subject reads | Reliable when fresh; declines with fatigue over a long shift | Workable on the clearest single bib | Strong on clear, front-facing bibs; uncertain ones flagged for review |
| Secondary runners in the same frame | Mostly skipped — too slow to tag everyone by hand | Largely missed | Read when the bib is visible enough; harder ones flagged for review rather than mis-tagged |
| Crowded frames with many runners | Possible but extremely slow to tag fully | Not reliable beyond one or two bibs | All readable bibs detected in one pass; low-confidence reads surface for a human |
| Cost model | Labor cost that scales with team size and shift length | Cheap to run but produces output you can't sell individually | Credits per photo analyzed (1 credit = 1 photo), with the repetitive identification automated |
Practical tips
- 1
Shoot a continuous burst at the finish line and let the batch sort which frames read which bibs.
With runners crossing in quick succession, a burst captures several angles and moments of the same group. Across the burst, a bib that's occluded in one frame is often clear in another, so running the whole sequence as a batch gives you more chances at a confident read than betting on one perfect moment.
- 2
Position for chest-level, front-facing bibs rather than shooting top-down or from behind.
Front-facing bibs are the easiest to detect and read. A ground-level position roughly perpendicular to the finish line puts more bibs in clear view per frame. Top-down angles from a bridge or platform foreshorten bibs and make multi-bib reads harder.
- 3
Split shooting roles: one photographer works the bib-readable zone, others shoot wide for emotion and editorial.
For multi-subject accuracy, dedicate one position to angles that maximize bib visibility close to the finish line. Other photographers can shoot wide for atmosphere. The bib photographer's job becomes maximizing how many readable bibs land in each frame, rather than composition.
- 4
Handle crowded multi-runner frames as their own review pass, separate from single-runner shots.
A single-runner frame needs only a quick glance to confirm. A crowded frame needs longer to verify every read. Grouping the dense frames for their own review pass keeps the easy single-runner shots moving quickly while you give the crowded ones the attention they need.
- 5
Use the low-confidence flags to drive your manual review — start with the bibs RaceTagger wasn't sure about.
Because uncertain reads are flagged rather than guessed, you can trust the confident matches and concentrate on the flagged ones — the overlapped, distant, or distorted bibs in crowded frames. That focuses your review time where it actually changes the outcome instead of re-checking the whole batch.
Tag every readable runner in your finish-line frames
Start with your free monthly credits (1 credit = 1 photo). Point RaceTagger at a folder of finish-line photos and see how it reads the visible bibs, matches them to your start list, and flags the hard ones for review.
Try it free →Questions photographers ask
Does multi-bib detection work when runners are bunched together and bibs overlap?
It reads bib regions independently, so overlapping bodies don't automatically prevent a read. But when a bib is heavily obscured by another runner, that read is flagged as low-confidence for review rather than guessed. Expect more flagged reads on tightly bunched frames than on spread-out runners — which is exactly where you'd want a human to look.
If a runner appears in many photos across the event, how is that handled?
RaceTagger tags each photo independently to the bibs it reads in that photo. So a runner who appears in many frames is matched in each of those frames, and all of them show up in that runner's gallery. That's the intended behavior — every frame a runner appears in is a valid photo for them to browse and buy.
What if a bib is hard to read — folded, printed poorly, or partly hidden?
When a read is uncertain, RaceTagger flags that photo for review instead of committing to a guess. You upload your start-list CSV, and matching against the actual entry list helps rule out numbers that aren't in the race. The uncertain reads land in your review queue so you can confirm them quickly rather than discovering a mis-tag later.
For very crowded frames with many runners, is the result still useful?
Yes. Denser frames are harder, so they produce more low-confidence reads — but the system still surfaces the bibs it can read, and the uncertain ones are flagged for a quick human check. The review step is what keeps a crowded frame's tagging trustworthy enough for commercial delivery.
Keep reading