Relay Legs & Sub-Legs

Platform: 🖥️ Desktop only

See also: Creating & Editing Events, Classes, Courses & Maps, Relay Forking

When you need this

You're setting up a relay event and need to understand how timing flows between legs. Each class in a relay has a defined number of legs, and the leg structure determines how start times, finish times, and changeovers are calculated. If your relay uses sub-legs — where multiple runners go out simultaneously on different courses — the timing rules become more complex and this page explains exactly how they work.

Normal Legs

Your relay has a straightforward structure where each leg has one runner following the previous one. The first leg runner gets the team's start time, and each subsequent leg's start time is set to the finish time of the previous leg (changeover). The leg time is the time the runner spent on their leg.

Each leg (Leg 1, Leg 2, Leg 3, etc.) has one runner. The first leg runner gets the team's start time, and each subsequent leg's start time is set to the finish time of the previous leg (changeover).

Sub-Legs

Your relay has a leg position where multiple runners need to go out simultaneously on different courses. Sub-legs let you split a single leg position into parallel tracks. For example:

  • Leg 1: one runner
  • Leg 2.1 and 2.2: two runners go out at the same time on different courses
  • Leg 3: one runner

How sub-legs affect timing:

  • Start time for sub-leg runners: Each sub-leg runner's start time comes from the corresponding finisher of the previous leg. If the previous leg also had sub-legs, the first finisher's time goes to sub-leg 1, the second finisher's time goes to sub-leg 2, and so on.
  • Leg time calculation: A single sub-leg can have multiple runners (e.g. two runners on leg 2.1). The fastest finisher from each sub-leg counts. The leg time is calculated from the last start time to the moment when every sub-leg has its fastest runner at the finish.
  • Next leg start time: The next leg starts when all sub-legs have at least one finisher. The start time is the finish time of the last sub-leg to complete.

Examples

The following examples illustrate how timing flows through different relay configurations.

Example 1: Standard 3-leg relay

A simple relay where each runner hands off to the next in sequence.

Leg Runner Start time Finish time Leg time
1 Runner A 10:00:00 10:32:15 32:15
2 Runner B 10:32:15 11:05:40 33:25
3 Runner C 11:05:40 11:38:55 33:15

Each runner's start time equals the previous runner's finish time. Team total time: 1:38:55.

gantt
    title Standard 3-leg relay
    dateFormat HH:mm:ss
    axisFormat %H:%M
    section Legs
    Leg 1 (A)     :a1, 10:00:00, 10:32:15
    Leg 2 (B)     :a2, 10:32:15, 11:05:40
    Leg 3 (C)     :a3, 11:05:40, 11:38:55

Example 2: Sub-legs (legs 1, 2.1, 2.2, 3)

Two runners go out in parallel on leg 2, each on a different course.

Leg Runner Start time Finish time Leg time
1 Runner A 10:00:00 10:32:15 32:15
2.1 Runner B 10:32:15 11:01:30 29:15
2.2 Runner C 10:32:15 11:05:40 33:25
3 Runner D 11:05:40 11:38:55 33:15

Sub-leg runners 2.1 and 2.2 both start at leg 1's finish time (10:32:15). They run simultaneously on different courses. Leg 3 starts when BOTH sub-legs have a finisher — the later finish time (11:05:40 from Runner C on 2.2) becomes leg 3's start time.

gantt
    title Sub-legs
    dateFormat HH:mm:ss
    axisFormat %H:%M
    section Legs
    Leg 1 (A)       :a1, 10:00:00, 10:32:15
    Leg 2.1 (B)     :a2, 10:32:15, 11:01:30
    Leg 2.2 (C)     :a3, 10:32:15, 11:05:40
    Leg 3 (D)       :a4, 11:05:40, 11:38:55

Example 3: Two runners on the same leg

Sometimes a single leg has multiple runners (e.g. for mass-start legs). The fastest runner determines the next leg's start.

Leg Runner Start time Finish time Leg time
1 Runner A 11:00 12:00 1:00:00
2 (runner 1) Runner B 12:00 12:30 0:30:00
2 (runner 2) Runner C 12:00 13:00 1:00:00
3 Runner D 12:30 14:00 1:30:00

Both runners on leg 2 start at the same time (12:00). The FASTER runner (B, finishing at 12:30) determines when leg 3 starts. Runner C's slower time (13:00) does not affect the next leg.

gantt
    title Two runners on the same leg
    dateFormat HH:mm
    axisFormat %H:%M
    section Legs
    Leg 1 (A)            :a1, 11:00, 12:00
    Leg 2 - runner 1 (B) :a2, 12:00, 12:30
    Leg 2 - runner 2 (C) :a3, 12:00, 13:00
    Leg 3 (D)            :a4, 12:30, 14:00

Example 4: Consecutive sub-legs

When sub-legs follow sub-legs, each finisher feeds the corresponding next sub-leg in order.

Leg Runner Start time Finish time Leg time
1 Runner A 11:00 12:00 1:00:00
2.1 Runner B 12:00 12:30 0:30:00
2.2 Runner C 12:00 13:00 1:00:00
3.1 Runner D 12:30 14:00 1:30:00
3.2 Runner E 13:00 13:30 0:30:00
4 Runner F 14:00 15:00 1:00:00

Sub-leg 2.1 finishes first (12:30) → its finish time becomes sub-leg 3.1's start time. Sub-leg 2.2 finishes second (13:00) → its finish time becomes sub-leg 3.2's start time. Leg 4 starts when BOTH 3.1 and 3.2 have finished — the later time (14:00 from 3.1) determines leg 4's start.

gantt
    title Consecutive sub-legs
    dateFormat HH:mm
    axisFormat %H:%M
    section Legs
    Leg 1 (A)     :a1, 11:00, 12:00
    Leg 2.1 (B)   :a2, 12:00, 12:30
    Leg 2.2 (C)   :a3, 12:00, 13:00
    Leg 3.1 (D)   :a4, 12:30, 14:00
    Leg 3.2 (E)   :a5, 13:00, 13:30
    Leg 4 (F)     :a6, 14:00, 15:00

Example 5: Sub-legs from sub-legs

A complex configuration where sub-legs feed into further sub-legs, showing how the first-finisher rule cascades.

Leg Runner Start time Finish time Leg time
1.1 Runner A 11:00 12:00 1:00:00
1.2 Runner B 11:00 12:30 1:30:00
2.1 Runner C 12:00 13:00 1:00:00
2.2 Runner D 12:00 12:30 0:30:00
3.1 Runner E 12:30 14:00 1:30:00
3.1 Runner F 12:30 13:30 1:00:00
4 Runner G 13:30 15:00 1:30:00

Sub-legs 1.1 and 1.2 start simultaneously. The first finisher (1.1 at 12:00) determines the start time for sub-legs 2.1 and 2.2. Sub-leg 2.2 finishes first (12:30) → feeds sub-leg 3.1's start time. Sub-leg 3.1 has two runners — the faster one (F, 13:30) counts. Leg 4 starts based on the fastest 3.1 runner's finish time (13:30).

gantt
    title Sub-legs from sub-legs
    dateFormat HH:mm
    axisFormat %H:%M
    section Legs
    Leg 1.1 (A)   :a1, 11:00, 12:00
    Leg 1.2 (B)   :a2, 11:00, 12:30
    Leg 2.1 (C)   :a3, 12:00, 13:00
    Leg 2.2 (D)   :a4, 12:00, 12:30
    Leg 3.1 (E)   :a5, 12:30, 14:00
    Leg 3.1 (F)   :a6, 12:30, 13:30
    Leg 4 (G)     :a7, 13:30, 15:00

Example 6: Changeover closure and restart

A runner doesn't arrive at the changeover in time, so the system applies a restart time.

  • Changeover closure time is set to 11:00:00
  • Restart time is set to 11:02:00
  • Leg 1 runner finishes at 11:03:00 (after closure)
  • Since the calculated start time (11:03:00) is after the closure time, the system uses the restart time (11:02:00) instead
  • The leg 2 runner gets start time 11:02:00 and status changes to "In forest"

Restart times can also be set manually from the monitoring Restart Times tab.

Changeover Closure Time

You need to handle situations where a runner is late to the changeover and the next runner must start anyway. For relay events, you can set a Changeover closure time on each class. If a runner hasn't started their leg by this time, they can be given a restart time instead. This is configured in the class settings under Restart times. See Example 6 above for a concrete scenario.

See also: Monitoring — Restart Times Tab, Relay Forking

Putting it together: Setting up a 4-leg relay with sub-legs

You're organizing a relay where legs 2 and 3 each have two parallel sub-legs. Here's how the full setup flows:

  1. Create a relay event and add a class (e.g. H21 Relay)
  2. Set the number of legs to 4 in the class settings
  3. Configure legs 2 and 3 to have sub-legs (2.1, 2.2 and 3.1, 3.2)
  4. Assign courses to each leg and sub-leg in Classes, Courses & Maps
  5. Set up relay forking if runners on the same sub-leg need different course variants
  6. If needed, configure a changeover closure time and restart time for the class
  7. During the event, monitor changeovers in the Event Monitor — the system calculates all start times automatically based on the rules above