MotoGP photography is deceptively harder than single-class road racing. You're covering three championship classes (MotoGP, Moto2, Moto3) across a weekend, with overlapping rider numbers, fairing numbers swung away from the camera at extreme lean, and wet sessions where spray buries the number entirely. With rounds running from spring into autumn, this is a workflow you repeat all season, so it pays to make it repeatable.
- Typical event
- 3-day weekend (Friday practice → Saturday practice and qualifying → Sunday races across 3 classes)
- Photo volume
- A high-volume weekend across practice, qualifying, and race sessions for all three classes — enough that tagging by hand becomes the bottleneck
- Delivery
- Per-class delivery is often expected shortly after each class finishes, rather than waiting for all three — which is why separate tagging batches per class matter
- Key challenge
- Lean-angle occlusion — at extreme lean the fairing twists toward the ground and the side-panel number rotates out of view. Corner-apex frames are the hardest to read; entry and exit are cleaner.
The workflow, step by step
- 1
Pre-Event: Prepare All Three Start-Lists
RaceTagger · A few minutes before the weekend
Get the three official entry lists (MotoGP, Moto2, Moto3) and save each as its own CSV. You'll match each class's photos against its own start-list, so keeping the three lists separate from the start avoids cross-class confusion later.
Pro tip
Name your CSVs clearly — motogp-round-x.csv, moto2-round-x.csv, moto3-round-x.csv — so when you tag each session you load the right list for the class you're processing.
- 2
Shoot and Cull by Session
Camera · Varies with how heavily you cull
Shoot each session independently. After a session, ingest with your editor (Photo Mechanic, Lightroom, or Capture One), cull heavily, then point RaceTagger at just that session's keepers. Working session by session keeps each batch small and fast to review.
Pro tip
For cleaner number reads, favor corner entry and exit over the apex. Apex frames at extreme lean look great editorially but the number is often rotated out of view — plan which corners you shoot if you also want clean tags.
- 3
Batch Tag Against the Right Start-List
RaceTagger · Runs as a batch in the background while you keep working
Run RaceTagger on the culled session folder, matched against that class's start-list CSV. It detects the race numbers it can read and matches them to the riders on your list. Because you process one class at a time against its own list, the results stay cleanly separated by class.
Pro tip
Process each session right after the shoot instead of saving everything for end-of-day — you'll want the early classes tagged and ready for delivery while later sessions are still running.
- 4
Review the Flagged Reads
RaceTagger · A focused pass over the flagged subset, not the whole set
RaceTagger flags low-confidence detections — rain, extreme lean, backlit frames — instead of guessing and writing a wrong number. You review only those flagged frames and confirm or correct them, rather than checking every photo by hand.
Pro tip
Wet sessions produce more flags than dry ones — budget a little more review time when it's raining, and less when conditions are clean.
- 5
Write Metadata and Organize by Class
RaceTagger · A quick export step once review is done
RaceTagger writes the matched rider details into each photo's metadata (EXIF/XMP/IPTC) and can organize the output into folders. Keep each class in its own export — MotoGP, Moto2, Moto3 — so each gallery is ready to hand off on its own.
Pro tip
Keeping a separate catalog or folder per class makes next-round lookups and season archives much easier to navigate.
- 6
Import, Edit, and Deliver Per Class
Lightroom · Your normal editing time, minus the manual tagging
Bring each class folder into your editor separately. Because the rider details are already in the metadata, you can filter by rider name, pick your best frames per rider, edit for a consistent look, and deliver each class gallery as it's ready — without waiting for the whole weekend to finish.
Pro tip
Per-class delivery wins repeat work — organizers and agencies remember who had a class gallery up first.
Where the numbers get hard
Extreme lean angles hiding the fairing number
Why it's hard. At extreme lean the bike compresses visually and the fairing twists toward the ground, so the side-panel number rotates away from the camera. Apex frames often show the underside of the bike rather than the painted number.
How we handle it. When the number is partially visible, RaceTagger can still read it and match it to your start-list. When the read is genuinely uncertain, it flags the frame for your review instead of writing a guess.
Overlapping numbers across MotoGP, Moto2 and Moto3
Why it's hard. The three classes reuse numbers, so the same number can belong to a rider in any class. The number alone doesn't tell you which class a photo is from.
How we handle it. You resolve this by workflow, not magic: process each class against its own start-list (Step 1–3). Matching a session's photos to the correct class CSV keeps the right rider attached to the right number — no cross-class mix-ups.
Frames where the number isn't visible at all
Why it's hard. When a rider is trailing another bike or the machine is mostly out of frame, the number may simply not be in the photo. There's nothing on the fairing to read.
How we handle it. RaceTagger doesn't invent an answer when the number isn't readable — it flags the frame so you can identify it yourself or set it aside. Honest 'can't read this one' beats a confident wrong tag.
Rain and spray obscuring the number
Why it's hard. Wet-weather MotoGP throws up heavy spray, and droplets on the lens plus spray off other bikes can drop number visibility close to nothing on wide straights.
How we handle it. In heavy spray RaceTagger is conservative: rather than guessing and creating false matches, it flags the low-confidence frames for manual review, so wet sessions cost you review time but not wrong data.
Dust and debris on the fairing
Why it's hard. After an off-track moment a rider can return with gravel dust caked across the fairing, partly obscuring or blurring the number in a distant frame.
How we handle it. When the core digits are still legible, RaceTagger reads a partially dirty number and matches it. When the dirt hides too much, it falls back to flagging the frame rather than guessing.
By hand vs with RaceTagger
By hand
A long, end-of-weekend slog — every class, every session tagged by hand
Reliable on clean dry frames, but harder and more error-prone in rain and at extreme lean
- —Juggling three separate start-lists across many sessions is easy to get wrong
- —Rain sessions roughly double the manual effort because numbers are hard to read even by eye
- —You can't commit to a class gallery until you've eyeballed every frame, so per-class early delivery slips away
With RaceTagger
Batch tagging runs in the background per session; your hands-on time is mostly reviewing the flagged frames
Strong on clean, well-lit numbers; rain and extreme lean are harder, and those frames are flagged for review rather than guessed
- →Per-class delivery — tag and hand off each class as it finishes instead of waiting for the whole weekend
- →Rain sessions handled calmly — the AI flags the hard frames so you review only those
- →Time goes back into editing and rider-specific curation instead of manual data entry
A typical MotoGP race weekend
It's Sunday at the circuit. Practice wrapped this morning and you've already saved the three start-list CSVs. You shot a practice session, culled hard in Photo Mechanic, then ran RaceTagger on the keepers matched against the MotoGP list. While the next class is on track, you review just the handful of flagged frames — a few wet-weather reads the AI wasn't sure about — confirm them, and export the gallery with rider details already written into the metadata. As each class finishes you repeat the loop: cull, tag against that class's list, review the flagged frames, export. By the time competitors are still scrolling through an undifferentiated pile of RAWs, your earlier classes are already filtered by rider and ready to hand off.
Try RaceTagger on your next MotoGP weekend
Free credits to start, no credit card required (1 credit = 1 photo). Tag a practice or qualifying session, match it to your start-list, and see how it handles lean angles and spray.
Try it free →Questions photographers ask
How does RaceTagger keep MotoGP, Moto2 and Moto3 photos separated?
By workflow, not by guessing the class from the bike. You prepare one start-list CSV per class and process each session's photos against the matching class list. RaceTagger detects the race numbers it can read and matches them to the riders on that list, so each batch stays cleanly tied to one class. There's no separate per-sport model — it's the generic number-detection-plus-CSV-match working on one class at a time.
What should I expect in rain races where spray obscures the numbers?
Clean, dry numbers read well. Heavy spray is genuinely hard — and rather than guess, RaceTagger flags the low-confidence frames for you to review. Plan for more manual review in wet sessions than in dry ones. The win is that you only review the frames the AI wasn't sure about, not the whole set.
Can I deliver one class at a time instead of waiting for all three?
Yes, and it's the recommended approach. Tag each session against its class start-list as it finishes, review the flagged frames, and export that class gallery. You don't have to wait for the full weekend to package a delivery.
How does extreme lean angle affect detection?
At extreme lean the number rotates away from the camera and can compress or partially disappear. When enough of the number is visible, RaceTagger reads it and matches it to your list. When the read is uncertain, it flags the frame for your review instead of writing a guess. Corner entry and exit frames are generally cleaner to read than the apex.
Do I need a separate plan for each class?
No. One account covers all three classes — RaceTagger runs on credits, where 1 credit analyzes 1 photo, whatever the class. You process each class against its own start-list and export per class. There's no per-class subscription.
Keep reading