Triathlon photography is uniquely complex because a single participant moves through three different identification systems in one race. The swim usually shows no bib (numbers on caps, backup ID via body marking). The bike displays a helmet number and frame-mounted race number. The run returns to a chest bib, often twisted on a race belt. Few sports ask a photographer to manage three separate numbering systems for the same athlete in one event.
- Typical event
- Sprint distances run a few hours; full Ironman events can span most of a day
- Photo volume
- A large RAW set spanning swim start, transitions, bike portions, and run finish
- Delivery
- Often a same-day finishers gallery, with the full event gallery to follow
- Key challenge
- Three disciplines means three different bib positions. Matching photos across all three to the same participant needs a deliberate tagging strategy, not just number detection.
The workflow, step by step
- 1
Pre-Event: Import Your Start-List and Organize by Discipline
RaceTagger · A few minutes
Export the official start-list as a CSV (bib numbers, names, and any backup discipline numbers). Upload it into RaceTagger as the roster RaceTagger matches detected numbers against. Create three separate project folders — 'Swim', 'Bike', 'Run' — so you can organize photos by discipline and run detection on each set on its own.
Pro tip
Ironman events often publish both bib numbers and chip numbers. Keep a spreadsheet mapping bib-to-chip-to-name. Body markings and helmet numbers sometimes differ from printed bibs — having the chip cross-reference on hand saves manual review time.
- 2
Swim: Shoot Caps and Body Markings (and Plan to Tag This Leg by Hand)
Camera · Varies with field size
Photograph swimmers at the start and exit. Swim caps carry small printed numbers (visible from above) plus colored tape, and body marking on a calf or arm is the usual backup ID. Both are for your eyes, not ours — RaceTagger has no swimming profile and does not detect either — so treat the swim set as manually tagged, leaning on the start list and swim-exit times to place athletes.
Pro tip
Shoot from two angles: directly above the swim start (overhead caps) and at the exit ramp (body marking, cap number, and face visibility). Exit shots are your most reliable — swimmers are slowed down and markings are visible — and because you're reading these yourself, legibility to the human eye is the whole game.
- 3
Transitions: Capture Dual Identification
Camera · Varies per transition
T1 (swim-to-bike) and T2 (bike-to-run) are chaos. Athletes are stripping wetsuits and grabbing gear. Shoot the transition zone wide to capture multiple athletes. Each athlete shows a chest bib (or bib on a race belt), a bike number on helmet or frame, and sometimes body marking still visible. This is where the most identifying detail is on screen at once — so file these wide transition frames with your run set rather than the bike set: the running profile reads across the whole frame, while the cycling one favors the closest subject.
Pro tip
Wetsuit legs often cover the chest bib during T1. The bike number on helmet or frame becomes your primary ID. Body marking (on legs, arms, sometimes chest) is visible when the wetsuit is peeled back. Photograph that moment — it's your best chance for a positive ID.
- 4
Bike: Match Helmet Numbers and Frame Numbers
Camera · Continuous shooting across the bike leg
Bike numbers appear in multiple places: printed on the helmet, on the frame, sometimes on the seat tube. Frame numbers are smaller but often more readable at distance. On the bike, the chest bib is hidden under a race jersey — so the helmet or frame number is your primary identifier. When more than one number is visible in a frame, you have a better chance of a clean read.
Pro tip
Shoot helmet numbers head-on when possible — they're larger and more readable than frame numbers at a distance. On the run, athletes remove helmets, so the chest bib becomes the primary ID again. Note which discipline-specific photos you've collected.
- 5
Batch Tag with RaceTagger (Discipline by Discipline)
RaceTagger · Batch processing runs unattended while you do other work
Run detection on the Bike and Run folders, each on its own. RaceTagger reads visible numbers in each photo and matches them against the start-list CSV you uploaded — helmet and frame numbers in the Bike set, chest bibs in the Run set. Running each discipline as a separate batch keeps each set's number placement consistent and makes the flagged-for-review pile easier to work through. Leave the Swim folder out of detection: there's no swimming profile, so spend that time on the timing cross-reference instead.
Pro tip
Process the largest dataset (usually the bike leg) first. Clean, well-lit numbers tend to read reliably; busy transitions and shallow-angle frames are harder, and RaceTagger flags the reads it isn't confident about instead of guessing — so you review those rather than trust a false match.
- 6
Manual Review: Cross-Reference Discipline Photos and Build Participant Galleries
RaceTagger / Lightroom · Scales with how many photos get flagged
RaceTagger flags low-confidence detections on the bike and run sets. Review these first — especially transition photos with several subjects in frame. Then work the swim set by hand, matching a swim → T1 → bike → T2 → run sequence for the same participant using the official split times. Build final galleries organized by bib number rather than by discipline, so each athlete's gallery spans all three legs.
Pro tip
Use the finishing times from the official results to cross-reference. Match swim exit time to T1 photos, the bike segment to bike photos, and the run segment to the finish line. This temporal cross-check helps where two athletes have similar bib numbers or where a body marking is illegible.
Where the numbers get hard
Swim: no visible bibs, tiny cap numbers, body marking as backup ID — and no detection support
Why it's hard. Swimmers wear wetsuits that cover any chest bib. Cap numbers are printed small and curved across a rounded surface. Body marking (a race number or colored bands on legs/arms) is visible but often in motion and water-obscured. Underwater portions show no numbers at all.
How we handle it. Honestly: it doesn't. There is no swimming profile in RaceTagger, and cap numbers and body marking are not identifiers we detect. The swim set is the one leg you tag by hand — shoot the exit ramp where athletes are slowest and most legible, then match on the start list and the official swim-exit times. Detection starts earning its keep once the helmet number or chest bib appears, from T1 onward.
Bike: Multiple number locations (helmet, frame, sometimes seat tube), bibs hidden under jerseys
Why it's hard. Unlike running, the chest bib is covered by a race jersey on the bike. Helmet numbers are large but often at a shallow angle to the camera. Frame numbers are smaller but clearer. Some age-group events lack consistent number placement across all bikes.
How we handle it. When a clear number is on screen — helmet or frame — RaceTagger reads it and matches it to the roster. A frame with more than one visible number gives a better chance of a confident read. Where the number is occluded or angled away, the read is flagged for you to confirm.
Transitions: Chaos with several athletes visible, wetsuits being removed, numbers going from hidden to visible
Why it's hard. Transition zones are crowded. Athletes move in different directions, partially dressed, with bibs covered or uncovered as they strip down. Body marking becomes visible as wetsuits come off. Helmet numbers are visible only on those already on bikes; chest bibs only as athletes finish suiting up.
How we handle it. On the running profile RaceTagger reads the numbers it can see across a crowded frame and matches them to your start-list, without assuming one clean subject per photo. Run the same frame under the cycling profile and it favors the closest subject and caps the read at three numbers, so put your wide transition frames in the run folder if you want everyone in them tagged. Where a number is partially obscured, it flags the read so you can resolve it with temporal or roster-matching logic rather than a confident-but-wrong tag.
Run: Chest bibs twisted on race belts, partially covered by hydration vests, several runners in frame
Why it's hard. After hours of exercise, athletes are fatigued. Bibs twist and fold. Hydration vests, race belts, and supporters running alongside can obscure the bib. Finish-line photos can have many finishers visible, all with bibs at different angles.
How we handle it. When enough of the digits are legible, RaceTagger reads the bib and matches it. Clean, front-on finish frames read best; twisted, folded, or partly hidden bibs are harder and get flagged for review rather than guessed.
Wetsuit covering bib identification in the early swim and T1
Why it's hard. Wetsuits completely obscure chest bibs during the swim and early transition. Without a visible chest bib, you rely on cap numbers (small, on a curved surface) or body marking (often submerged in the swim, becoming visible only at exit). The same athlete can be nearly unidentifiable between the swim and bike leg if photographed from the wrong angle.
How we handle it. For as long as the wetsuit is on, this is manual: no chest bib means nothing for us to detect, and cap numbers and body marking are outside what we read. Photograph the moment the wetsuit peels back and the bib or helmet number appears — that frame is where automated matching can pick the athlete up again, and you can use it to anchor the earlier swim frames by time.
By hand vs with RaceTagger
By hand
Manually tagging a full triathlon set across three disciplines takes many hours
Hand-typing bib numbers is error-prone, and mistakes compound across swim → bike → run sequences
- —Discipline-switching forces mental context shifts (cap numbers → helmet numbers → chest bibs), which invites matching errors
- —Transition photos with multiple subjects need manual disambiguation — is this athlete #247 the one on the left or the right?
- —Correcting a mismatch across all three disciplines means re-tagging photos you thought were done
With RaceTagger
Batch detection runs unattended, so your hands-on time is mostly the flagged-for-review pile
On the bike and run sets, clean well-lit numbers read reliably while occluded or twisted ones are flagged rather than guessed; the swim set is manual, because there's no swimming profile and cap numbers aren't detected
- →Running the bike and run legs as separate batches keeps number placement consistent within each set
- →Detected numbers are matched against your uploaded start-list CSV, not typed by hand
- →Low-confidence reads are surfaced for review, so you spend your attention where the detector is unsure — and on the swim leg, which stays manual
A full-distance Ironman event
You've shot across the swim start, T1, a long bike leg through several checkpoint stations, T2, and the marathon run. You ingest and organize into three folders — Swim, Bike, and Run. You run RaceTagger on the Bike set first; frame and helmet numbers that are clear and front-on read well and match against your start-list, while shallow-angle or occluded ones get flagged. You run the Run set next; clean finish-line bibs read cleanly, twisted or vest-covered ones are flagged. The Swim set you don't run at all — there's no swimming profile, and cap numbers and body marking aren't identifiers we detect — so that leg is yours: you use the official swim-exit times and the start list to place athletes, anchoring on the T1 frames where a bib or helmet number finally appears. By the time you build galleries, each finisher's set can pull from all three disciplines.
Try RaceTagger on your next triathlon
Start with free credits when you sign up — 1 credit = 1 photo, no credit card required. Upload a sample from your bike and run sets to see how detection and start-list matching handle them.
Try it free →Questions photographers ask
How do I tag athletes across all three disciplines with different bib positions?
Organize your photos into Swim, Bike, and Run folders and run RaceTagger on the Bike and Run sets. RaceTagger reads the numbers visible in those photos — helmet and frame numbers, chest bibs — and matches them against the start-list CSV you uploaded. The swim set is different: we don't have a swimming profile, and cap numbers and body marking are not something we detect. Tag the swim leg by cross-referencing the official results and timing data to place athletes in the swim → bike → run sequence. Where identification is ambiguous on the bike or run — multi-subject transitions especially — RaceTagger flags the photo so you can resolve it manually rather than risk a wrong match.
What if the wetsuit covers the bib in the swim and T1?
Wetsuits are expected to cover the chest bib, so plan around it: shoot cap numbers (from swim start/exit) and body marking (on legs/arms, visible as the wetsuit comes off in T1). Body marking is why those identifiers exist at all: the chest bib is unreachable under a wetsuit, so the number goes somewhere the water can't cover. Check the athlete guide for the specific event you're shooting — marking practice varies by organizer, and it's the kind of thing worth confirming rather than assuming. Be clear on what that means for tooling, though: those are identifiers you read, not ones we detect — RaceTagger has no swimming profile, so swim and early-T1 frames are matched by hand against the start list and timing data. Detection picks up once the chest bib or helmet number is on screen.
Does RaceTagger handle multiple subjects in transition photos?
It depends which profile the folder runs under. On the running profile it reads every number it can see across the frame, so a transition photo can carry more than one matched number. The cycling profile is set up differently — it works from the closest subject forward, sets background athletes aside, and returns up to three numbers per frame — so a wide transition shot run under the bike set will not tag everyone in it. Crowded frames with overlapping athletes and partial occlusion are genuinely harder — those reads are more likely to be flagged for your review, which is the honest tradeoff versus guessing.
How well does detection work across bike numbers and run bibs — and what about the swim?
It depends heavily on the photo. Clean, well-lit, front-on numbers — a front-on finish-line bib, a head-on helmet number — read reliably. The hard cases are shallow-angle bike numbers and twisted or occluded run bibs; RaceTagger doesn't resolve those on its own — it puts them in the review queue with their candidates attached. Be clear on what the flag is and isn't: it marks the frame in the queue, but the candidate number and name are still written into the file's metadata without a marker, so the queue is something you clear before you deliver, not a filter that holds those frames back. The swim is not a detection problem we solve at all: there is no swimming profile, and small curved cap numbers and water-obscured body markings are not detected. Plan for the swim leg to be manual, matched on timing and the start list.
Can I use RaceTagger's metadata output with Lightroom for Ironman?
Yes. RaceTagger writes the matched number and name into the image metadata (EXIF/XMP/IPTC), so in Lightroom you can filter and organize by bib number or name and build athlete-specific galleries that pull from all three race legs. Set up your import preset once and reuse it for every triathlon.
Keep reading