{µ.toInt(target.data.line.rank, '00')}
{target.boat.getPhotosHtml()}
{target.boat.name}
{target.boat.getSailorsHtml('/')}
{target.boat.comment}
Start {µ.toDate(target.data.boatClass.run.date,"FR:dddd dd mmmm ' at ' HH:MM '(UTC+1)'")}
Total distance {µ.toNumber(target.data.line.dtf," ¤1¤.")} nm
Position {µ.toDate(target.boat.track.currentLocation.timecode*1000,"FR:HH:MM")} (UTC+1)
Heading {target.boat.track.currentLocation.heading} °
Speed {µ.toNumber(target.boat.track.currentLocation.getSpeed()," ¤1¤.")} kts
{µ.toDate(target.boat.track.currentLocation.timecode*1000,"FR:HH:MM '(UTC+1)'")} • {target.boat.track.currentLocation.heading}° • {µ.toNumber(target.boat.track.currentLocation.getSpeed()," ¤1¤.")} kts
Position {µ.toDate(target.data.line.date,"FR:HH:MM")} (UTC+1)
Dist. to finish {µ.toNumber(target.data.line.dtf," ¤1¤.")} nm
Dist. to leader +{µ.toNumber(target.data.line.dtl," ¤1¤.")} nm {µ.toNumber(Math.abs(target.data.line.dtlProgress)," ¤1¤.")} nm
Heading {target.data.line.heading} °
Speed | VMC {µ.toNumber(target.data.line.speed," ¤1¤.")} kts {µ.toNumber(target.data.line.vmg," ¤1¤.")} kts
{µ.TRANSLATIONS['OVER_1_LABEL']} {µ.toNumber(target.data.line.dist1/tracker.over1gap*60," ¤1¤.")} nds {µ.toNumber(target.data.line.dist1," ¤1¤.")} nm
{µ.TRANSLATIONS['OVER_2_LABEL']} {µ.toNumber(target.data.line.dist2/tracker.over2gap*60," ¤1¤.")} nds {µ.toNumber(target.data.line.dist2," ¤1¤.")} nm
Position {µ.toDate(target.data.line.date,"FR:HH:MM'(UTC+1)'")} {target.data.line.heading}° {µ.toNumber(target.data.line.speed," ¤1¤.")} kts
Distances {µ.toNumber(target.data.line.dtf," ¤1¤.")} nm +{µ.toNumber(target.data.line.dtl," ¤1¤.")} nm {µ.toNumber(Math.abs(target.data.line.dtlProgress)," ¤1¤.")} nm
Finish{µ.toDate(target.boat.arrival.date,"FR:dd/mm/yyyy ' à ' HH:MM:ss '(UTC+1)'")}
Racetime{µ.toRacetime(target.boat.arrival.racetime, "[0]d [1]h [2]min [3]s¤[0]h [1]min [2]s¤[0]min [1]s¤[0]s¤¤N/A")}
Penalty{µ.toRacetime(Math.abs(target.boat.arrival.penalty), "[0]d [1]h [2]min [3]s¤[0]h [1]min [2]s¤[0]min [1]s¤[0]s¤¤N/A")}
Bonus{µ.toRacetime(Math.abs(target.boat.arrival.penalty), "[0]d [1]h [2]min [3]s¤[0]h [1]min [2]s¤[0]min [1]s¤[0]s¤¤N/A")}
Official time{µ.toRacetime(target.boat.arrival.jury, "[0]d [1]h [2]min [3]s¤[0]h [1]min [2]s¤[0]min [1]s¤[0]s¤¤N/A")}
Gap to first{µ.toRacetime(target.boat.arrival.gapToFirst, "[0]d [1]h [2]min [3]s¤[0]h [1]min [2]s¤[0]min [1]s¤[0]s¤¤N/A")}
Gap to previous{µ.toRacetime(target.boat.arrival.gapToPrevious, "[0]d [1]h [2]min [3]s¤[0]h [1]min [2]s¤[0]min [1]s¤[0]s¤¤N/A")}
Over orthodromy {µ.toNumber(target.boat.arrival.orthoDistance, " ¤1¤.")} nm {µ.toNumber(target.boat.arrival.orthoSpeed, " ¤1¤.")} kts
Overground {µ.toNumber(target.boat.arrival.overgroundDistance, " ¤1¤.")} nm {µ.toNumber(target.boat.arrival.overgroundSpeed, " ¤1¤.")} kts
Finish{µ.toDate(target.boat.arrival.date,"FR:dd/mm/yyyy ' at ' HH:MM:ss '(UTC+1)'")}
Racetime/span>{µ.toRacetime(target.boat.arrival.racetime, "[0]d[1]h [2]min [3]s¤[0]h [1]min [2]s¤[0]min [1]s¤[0]s¤¤N/A")}
Click on the boat to locate it
on the splittime
«{target.data.line.name}»
Click on the boat to locate it
on the splittime
«{target.data.line.name}»
Pit Stop
Stealth mode
Not localised
Suspend racing
Not yet started
Did not start the race
Did not cross the start line
Did not finish the race
Disqualified
CNS
Retired
{target.getPhotosHtml()}
{target.name}
{target.getSailorsHtml('/')}
{target.comment}

Start on Saturday 25 October 2025 at 16h30 (UTC+1)
Update every hour
¤{µ.toInt(target.line.rank, '00')}¤
{target.boat.getPhotosHtml()}
{target.boat.getIconHtml()}
{target.boat.name}
{target.boat.getSailorsHtml('/')}
Start : {µ.toDate(target.boatClass.run.date,"FR:dddd dd mmmm ' at ' HH:MM '(UTC+1)'")}
Total distance : {µ.toNumber(target.boatClass.run.length," ¤1¤.")} nm
Time at the gate : ¤{µ.toRacetime(target.boat.splittime.time, "[0]d [1]h [2]min [3]s¤[0]h [1]min [2]s¤[0]min [1]s¤[0]s¤¤N/A")}¤
¤{µ.toNumber(target.boat.splittime.sog," ¤1¤.")}¤ nds
Gap to first : +¤{µ.toRacetime(target.boat.splittime.gap2firstBoat, "[0]d [1]h [2]min [3]s¤[0]h [1]min [2]s¤[0]min [1]s¤[0]s¤¤N/A")}¤
Since previous gate : ¤{µ.toRacetime(target.boat.splittime.time2prev, "[0]d [1]h [2]min [3]s¤[0]h [1]min [2]s¤[0]min [1]s¤[0]s¤¤N/A")}¤
¤{µ.toNumber(target.boat.splittime.sog," ¤1¤.")}¤ nds
Time retained for calculation : ¤{µ.toDate(target.line.date,"FR:HH:MM' (UTC+1)'")}¤
¤{target.line.heading}¤ °
¤{µ.toNumber(target.line.speed," ¤1¤.")}¤ kts
¤{µ.toNumber(target.line.dtf," ¤1¤.")}¤ nm
+¤{µ.toNumber(target.line.dtl," ¤1¤.")}¤ nm
Finished on ¤{µ.toDate(target.boat.arrival.date,"FR:dd/mm/yyyy ' at ' HH:MM:ss '(UTC+1)'")}¤
In ¤{µ.toRacetime(target.boat.arrival.racetime, "[0]d [1]h [2]min [3]s¤[0]h [1]min [2]s¤[0]min [1]s¤[0]s¤¤N/A")}¤
Pit Stop
Stealth mode
Not localised
Suspend racing
Not yet started
Did not start the race
Did not cross the start line
Did not finish the race
Disqualified
CNS
Retired
¤{µ.toInt(target.line.rank, '00')}¤
{target.boat.getPhotosHtml()}
{target.boat.name}
{target.boat.getSailorsHtml('/')}
Waiting to start
Arrived
Racing
In pit stop
In stealth mode
Not localized
Suspends racing
Not yet started
Did not start
Did not cross the line
NDid not finished
Disqualified
CNS
Retired
Route
Date and time of start ¤{µ.toDate(target.boatClass.run.date,"FR:dddd dd mmmm ' at ' HH:MM '(UTC+1)'")}¤
Distance to sail ¤{µ.toNumber(target.line.dtf," ¤1¤.")}¤ nautical miles
Dashboard
N S E W {target.boat.getIconHtml()}
¤{target.line.heading}¤°
20 35 5 25 40 10 15 30 0
¤{µ.toNumber(target.line.speed,'¤1¤.')}¤ kts
¤{µ.toNumber(target.line.vmg,'¤1¤.')}¤ kts
Environment
¤{target.line.windspeed/10}¤ kts ¤{target.line.winddir}¤°
¤{target.line.tempair/10}¤°C
¤{target.line.waveheight/10}¤m
¤{target.line.tempwater/10}¤°C
Distances
¤{µ.toNumber(target.boatClass.run.length - target.line.dtf," ¤1¤.")}¤ nm
¤{µ.toNumber(target.line.dtf," ¤1¤.")}¤ nm
¤{µ.toNumber(target.line.dtl," ¤1¤.")}¤ nm
¤{µ.toNumber(target.line.advance," ¤1¤.")}¤ nm
Over 4 hours ¤{µ.toNumber(target.line.dist4h," ¤1¤.")}¤ nm ¤{µ.toNumber(target.line.dist4h/4," ¤1¤.")}¤ kts
Over ground ¤{µ.toNumber(target.line.dog4h," ¤1¤.")}¤ nm ¤{µ.toNumber(target.line.dog4h/4," ¤1¤.")}¤ kts
Over 24 hours ¤{µ.toNumber(target.line.dist24h," ¤1¤.")}¤ nm ¤{µ.toNumber(target.line.dist24h/24," ¤1¤.")}¤ kts
Over ground ¤{µ.toNumber(target.line.dog24h," ¤1¤.")}¤ nm ¤{µ.toNumber(target.line.dog24h/24," ¤1¤.")}¤ kts
Split times
Results
Finished ¤{µ.toDate(target.boat.arrival.date,"FR:dd/mm/yyyy ' at ' HH:MM:ss '(UTC+1)'")}¤
Race time ¤{µ.toRacetime(target.boat.arrival.racetime, "[0]d [1]h [2]min [3]s¤[0]h [1]min [2]s¤[0]min [1]s¤[0]s¤¤N/A")}¤
Penalty ¤{µ.toRacetime(Math.abs(target.boat.arrival.penalty), "[0]d [1]h [2]min [3]s¤[0]h [1]min [2]s¤[0]min [1]s¤[0]s¤¤N/A")}¤
Bonification ¤{µ.toRacetime(Math.abs(target.boat.arrival.penalty), "[0]d [1]h [2]min [3]s¤[0]h [1]min [2]s¤[0]min [1]s¤[0]s¤¤N/A")}¤
Jury time ¤{µ.toRacetime(target.boat.arrival.jury, "[0]d [1]h [2]min [3]s¤[0]h [1]min [2]s¤[0]min [1]s¤[0]s¤¤N/A")}¤
gap to leader ¤{µ.toRacetime(target.boat.arrival.gapToFirst, "[0]d [1]h [2]min [3]s¤[0]h [1]min [2]s¤[0]min [1]s¤[0]s¤¤N/A")}¤
gap to previous ¤{µ.toRacetime(target.boat.arrival.gapToPrevious, "[0]d [1]h [2]min [3]s¤[0]h [1]min [2]s¤[0]min [1]s¤[0]s¤¤N/A")}¤
Over orthodromy ¤{µ.toNumber(target.boat.arrival.orthoDistance, " ¤1¤.")}¤ nm / ¤{µ.toNumber(target.boat.arrival.orthoSpeed, " ¤1¤.")}¤ kts
Over ground ¤{µ.toNumber(target.boat.arrival.overgroundDistance, " ¤1¤.")}¤ nm / ¤{µ.toNumber(target.boat.arrival.overgroundSpeed, " ¤1¤.")}¤ kts
 
{target.name}
{µ.toOrdinal(target.data.rank)} • {µ.toDate(target.data.timecode*1000,"FR:dd/mm/yyyy ' à ' HH:MM:ss '(UTC+1)'")}
{µ.toRacetime(target.data.time, "[0]d [1]h [2]min [3]s¤[0]h [1]min [2]s¤[0]min [1]s¤[0]s¤¤N/A")}
{µ.toNumber(target.data.dog," ¤1¤.")} nm • {µ.toNumber(target.data.sog," ¤1¤.")} kts
{µ.toRacetime(target.data.time2prev, "[0]d [1]h [2]min [3]s¤[0]h [1]min [2]s¤[0]min [1]s¤[0]s¤¤N/A")}
{µ.toNumber(target.data.dog2prev," ¤1¤.")} nm • {µ.toNumber(target.data.sog2prev," ¤1¤.")} kts

Standard mode

Standard mode displays the progress of boats by class and according to their position, updated hourly. The class is selected in the left-hand column.

Information about the boat, such as position, speed in knots (1 kn = 1.852 km/h), heading, and distance to the finish in nautical miles (1 nm = 1.852 km), can be viewed by clicking directly on the boat or by clicking on the pair in the left-hand column.

Expert mode

In addition to standard mode, expert mode displays meteorological data such as wind strength and direction, wave height, and currents.

Over 4 hours Over 24 hours Parc Eolien du Calvados Parc Eolien de Saint Brieuc DST Casquets DST Ouessant Tri Artillerie DST Scilly south DST Finisterre TSS Cabo de Roca TSS Cabo Sao Vincente DST Canaria East DST Canaria West Forbidden area Mauritania ZI South America 20 5
Race tracker www.geovoile.com
CalculationsRené Boulaire