How GAP Scoring Works
A guide to competition scoring for paragliding and hang gliding pilots
What is GAP?
FAI S7F §2GAP is the scoring system used by most paragliding (PG) and hang gliding (HG) cross-country competitions in the world. It is maintained by FAI/CIVL, the international body for free-flight sports, and fully defined in Section 7F of the FAI Sporting Code.
The name comes from the three people who designed it in the early 2000s: Gerolf Heinrichs, Angelo Crapanzano and Paul Mollison. CIVL has refined it many times since.
The core idea: a perfect task is worth 1000 points. GAP splits those points into four categories (distance, time, leading and arrival), and each pilot earns a share of each depending on how they did against the rest of the field. A day that falls short of ideal, because few pilots launched or nobody got far, is worth less than 1000.
How a Task Works
FAI S7F §6If you've never flown a competition task, here's how one is put together.
The task committee sets a route as a series of turnpoints. Each is a GPS position with a cylinder around it, and pilots must fly into each cylinder in order. A typical task has these parts:
- Launch: where pilots take off. You must launch to get a score.
- Start of Speed Section (SSS): where your timed run begins. In a race, your clock starts at a fixed start gate time: the last gate at or before you crossed. In a time trial (also called elapsed time), it starts when you cross the cylinder.
- Turnpoints: the waypoints in between, tagged in order by flying into their cylinders. Radii are usually 400 m to 2 km.
- End of Speed Section (ESS): the finish line for timing, where your clock stops. It is often the last turnpoint before goal.
- Goal: the final turnpoint. Reach it and you've completed the task. In PG you must reach goal to get any time points; ESS alone isn't enough. A task can also set an elevated goal, which is the ESS as well.
A turnpoint can also have altitude limits ( §6.2.1 ). A crossing then counts only if your altitude is within them, give or take 5 m ( §9.2.1 ); the report card tells you when one didn't count. Goal can't have altitude limits.
Your speed section time runs from crossing SSS to reaching ESS. Your flown distance is measured along the optimised route, through the turnpoints you reached.
Task Validity
FAI S7F §10Not every day deserves the full 1000 points. If conditions were poor and most pilots landed near launch, the day should count for less in the competition. GAP handles this with task validity: a multiplier between 0 and 1 that scales the points on offer.
Task validity is the product of three separate validities:
Launch Validity
Launch validity drops when fewer pilots launch than expected. It is 1.0 when more than 96% of the pilots present launch (the specification's "nominal launch"), and falls steeply if, say, half the field stays on the ground. A task only a few pilots flew can't be worth much.
"Pilots present" means everyone not marked Absent: pilots who flew and uploaded a track, plus pilots who were there but marked Did Not Fly. Organisers set these on each task's roll call.
Distance Validity
Distance validity drops when pilots don't get far compared with the expected task distance. It looks at the spread of distances the whole field flew. If most pilots landed near launch, the task probably wasn't a fair test, and it is worth less.
Time Validity
Time validity drops when the fastest time is much shorter than the expected task duration, the "nominal time" (usually 90 minutes). A very short winning time suggests the task was too easy or conditions were unusual.
Overall task validity is:
and the points available for the task are:
On a good day, task validity is close to 1.0 and the task offers nearly 1000 points. On a poor day it might offer only 200 to 400.
The Four Scoring Components
FAI S7F §11GAP splits the available points four ways. The split depends on the fraction of pilots who made goal, called the goal ratio.
- Distance Points reward how far you flew. They are always the largest share.
- Time Points reward how fast you flew the speed section. They are worth more when many pilots make goal.
- Leading Points (also called "departure points") reward pilots who flew at the front and showed the way. On by default; a competition can turn them off.
- Arrival Points reward reaching ESS early. Hang gliding only. On by default for HG; a competition can turn them off.
When nobody makes goal, most of the points go to distance. As the goal ratio rises, more go to time and leading: if everyone finished, the question is who was fastest, not who flew furthest.
A polynomial sets the distance weight from the goal ratio. With nobody in goal, distance takes 90% of the points; with half the field in goal, about 42%.
One exception: in hang gliding, if nobody reaches the end of the speed section, the task has no time or arrival points at all. Distance and leading keep their usual shares, and the rest simply isn't awarded. No pilot's score changes, since nobody could have earned either without crossing ESS, but the scoreboard and report card then show what was really on offer. The report card says so in its day-quality section and beside the time and arrival components.
That caps such a day. With nobody in goal, the distance weight is 0.9 and the leading weight is 0.0175, so even a perfect day offers at most 900 points for distance and 18 for leading, 918 in total.
Distance Points
FAI S7F §12.1Every pilot who launches earns distance points, which is why they make up most of a typical score. In paragliding, they are simply proportional to the distance you flew:
The pilot who flew furthest gets all the distance points, and everyone else gets a share in proportion. In hang gliding, only half the points work this way; the other half come from a "difficulty" measure, described below.
Minimum Distance
There is a minimum scored distance, usually 5 km. Launch and land after 1 km, and you're still scored for 5 km. Pilots call these "bomb-out points". They give everyone a reason to launch and fly the task rather than stay on the ground.
The one exception is a tracklog that isn't a flight of this task, such as a flight on a different day or at a different site. It isn't evidence that the pilot took off, so it scores zero, not the minimum, and the page says why. See how track validity checks work.
Distance Difficulty (hang gliding only)
In hang gliding, distance points come in two halves ( S7F §12.1.1 ):
- The linear half is the same proportion of the best distance as above.
- The difficulty half depends on where the other pilots landed. A stretch of the course is "harder" the fewer pilots got past it, so flying past a cluster of landed gliders earns more, and gliding a little further into a field where everyone else already landed earns less.
The rulebook gives two reasons. For safety and retrieves, pilots shouldn't be tempted to scrape a few extra metres past a group that has landed. And a pilot who lands usually struggled just before, so the final glide into a landing field is "easy" distance. Pilots who reach goal always get full distance points. The report card shows the linear and difficulty halves separately.
Difficulty does not apply to paragliding. A competition can also turn it off and score hang gliding with the linear formula alone.
Where distance is measured from
Some tasks have a separate take-off turnpoint before the start (SSS), and rulebooks disagree on whether the take-off→start leg counts towards scored distance. Each competition picks one of two settings:
- Take-off (default): distance is measured from the take-off point, through the start cylinder, to goal. This follows the FAI CIVL GAP and PWCA rules, and matches most scoring software, including AirScore.
- Start cylinder: distance is measured from the edge of the start cylinder, so the take-off→start leg is not scored. This follows the wording of some national hang gliding rules, such as Australia's HGFA/SAFA, and matches the "Move Origin" option in the Davis/SeeYou scoring toolchain.
The two differ by the distance from the route's first point to the edge of the start cylinder. With a take-off turnpoint, that's the take-off→start leg. When the route begins at the SSS, the FAI rule still measures from the start cylinder's centre, so the two differ by the start radius. Neither setting changes the speed section (SSS→ESS), so time and leading points are unaffected.
Time Points
FAI S7F §12.2Time points reward pilots who fly the speed section quickly. Who can earn them:
- Paragliding: you must make goal ( §13.2 ). This removes any reason for a fast final glide low to the ground.
- Hang gliding: you must reach ESS, and goal then validates your time. By default, a pilot who crosses ESS but lands short of goal keeps only 80% of their time and arrival points ( §13.2 ). Each competition can change this under Advanced scoring settings. It doesn't affect distance or leading points.
If you qualify, your time points depend on your speed fraction, a number between 0 and 1 for how close you came to the fastest time:
Here is how much slower you were than the best time, and is the best time, both in hours. The 5/6 exponent is fixed by the 2026 specification for both sports.
The best time ( §9.4.1 ) is the fastest time of any pilot in goal for paragliding, and the fastest time of any pilot to reach ESS for hang gliding, whether or not they then made goal.
The curve is forgiving. Pilots close to the fastest time get nearly full points, and the drop-off is gradual, so finishing 10 minutes behind the winner still earns a large share.
In a race with start gates, your clock runs from the start gate you took ( §9.2.4.1 ): the last gate at or before your start-cylinder crossing, not the crossing itself. If the gates are at 13:30 and 13:50 and you cross at 13:49, your clock starts at 13:30.
A time trial uses your actual crossing time. Either way, the report card shows the gate you took and when you crossed.
Elevated goal ( §6.2.3.2 , §13.1 )
A task can set goal at a height above the goal turnpoint's altitude: 300 m as
standard, 1000 m at most. The task file gives it in XCTrack's
finishAltitude field, and an elevated goal is also the end of the speed
section. Crossing at any altitude still reaches goal, but crossing below the set
height costs you some of your time points. Your other points are unaffected.
The factor is 0.8 at or below the goal turnpoint's altitude and 1 at or above the set height, and your time points are multiplied by it. For example, crossing 60 m above goal under a 300 m elevated goal gives an AR of 0.2, and you keep about 90% of your time points. GlideComp applies an elevated goal only when the goal turnpoint has an altitude, since otherwise there's nothing to measure the height from.
Leading Points
FAI S7F §12.3Leading points, also called "departure points", reward pilots who take the risk of flying at the front of the gaggle and showing the way to goal. Without them, the best tactic would be to hang back in thermals and let others find the way.
The Leading Coefficient
Each pilot gets a leading coefficient (LC), which measures how much time they spent near the front and close to ESS. It is the area under a curve of remaining distance to ESS over time, with distance measured along the course and time from when the first start gate opens.
A "ratchet" keeps your best progress: the distance only ever decreases as you get closer to ESS, so flying away from ESS never undoes progress you've made. This is the same leading coefficient CIVL GAP and AirScore use.
The 2026 specification defines a different LC for each sport ( §12.3.1 ). Hang gliding uses the classic squared-distance area. Paragliding uses a weighted area in which the middle of the course counts for more, computed as the specification's exact weight-envelope integral since the 2025 edition. Each sport gets its own variant; it isn't a setting. The report card names the variant used.
A lower LC means you spent more time at the front. The pilot with the lowest LC gets full leading points.
Pilots who land out
A pilot who lands before ESS has no more track to measure, but their curve still has to cover the rest of the day. GlideComp holds them at the best distance they reached and extends the curve to maxTime ( §12.3.1 ):
That is, whichever came later, the last pilot landing out or the last pilot reaching ESS, but never after the task deadline. In a stopped task, the curve ends at the task stop time, because nothing after the stop is scored.
maxTime is the same for the whole class, not set per pilot. So a pilot who stays up long after the winner is home adds a little to the leading coefficient of everyone who landed out. Your report card shows the maxTime your curve used and what set it.
How Points Are Awarded
Leading points follow a curve shaped like the time-points curve, using LC values in place of times:
The pilot with the best (lowest) LC gets full leading points, and everyone else gets less the further their LC is from the best.
Leading points are on by default for both sports, as in the FAI formula, and a competition can turn them off. Paragliding gives leading more weight than hang gliding, because it has no arrival points competing for the non-distance share.
How much weight goes to leading
The 2026 specification uses one formula for both sports ( §11 ): leading gets the task's Leading Time Ratio of the non-distance weight. The ratio can be set anywhere from 0% to 26%; the default is 26% for paragliding and 17.5% for hang gliding.
Paragliding has one extra rule: if nobody makes goal, leading gets all of the non-distance weight, since no one can earn time points without goal. Hang gliding has no such rule. With nobody in goal the distance weight is 0.9, so leading at the default ratio gets 0.0175: the 18 points of the 918-point ceiling above.
Earlier editions let paragliding competitions choose between three generations of leading weight. GlideComp scores every task, historical competitions included, with the 2026 formula, and each scores page names the edition it was scored under (see Differences from the Official Specification).
Arrival Points
FAI S7F §12.4Hang gliding only. Arrival points reward the order in which pilots reach ESS. The first to arrive gets the most, and each later pilot gets less.
Except Class 2. A hang gliding class flying FAI Class 2 (rigid wings with movable aerodynamic surfaces) gets no arrival points: its arrival weight is 0, and that share goes to time ( §11 ). The organiser marks which classes fly Class 2 in the competition's scoring settings.
The order comes from the clock at ESS, not from speed. Pilots are ranked by the time of day they crossed the end of the speed section. So a pilot on an earlier start gate can arrive ahead of a faster pilot on a later gate and earn more arrival points. That surprises people, but it's intended: arrival points reward getting there first, which is what makes racing at the front worth the risk. Time points already reward speed.
The first pilot to arrive gets 100% of the available arrival points, and everyone who reaches ESS gets at least about 20% (the constant term in the curve below). In between, the curve falls quickly at first: arriving ahead of half the field is worth about 33%, not 50%.
Here ArrivalRatio is the fraction of the pilots reaching ESS that you arrived ahead of:
The four coefficients add up to exactly 1, so the first arrival gets the full points. Each pilot's report card shows their position, ESS time and the arithmetic, and the ESS column of the task's scores table shows the arrival order for the whole field.
Arrival points are on by default for hang gliding, and a competition can turn them off. They never apply to paragliding.
Your Total Score
FAI S7F §12Your task score is the sum of your four components, rounded to one decimal place ( S7F §12 ). Penalties are subtracted before rounding ( §13.5 ), so rounding is always the last step:
A score never goes below zero, however large the penalty. Pilots are ranked by total, highest first, and a tie goes to the pilot who flew further. The scoreboard shows whole points, but ranking and tie-breaks use the one-decimal value.
Practical Example
Take a paragliding task on a good day: task validity 0.95, 20% of pilots in goal, and leading points turned off. The task offers 950 points, split roughly like this:
- Distance: ~600 points (63% weight)
- Time: ~350 points (37% weight)
The fastest pilot in goal scores 600 + 350 = 950. A pilot who flew 80% of the best distance but didn't make goal scores about 480 + 0 = 480, because in paragliding there are no time points without goal.
Stopped Tasks
FAI S7F §13.4If the weather turns, the safety committee can stop a task mid-flight. The organiser records when the stop was announced, and GlideComp applies the specification's stopped-task rules automatically. Each affected pilot's report card shows how.
The task stop time ( §13.4.1 )
So that nobody close to a scoring milestone has a reason to keep flying in dangerous conditions, the task is scored back to a task stop time before the announcement: 15 minutes earlier for hang gliding, 5 minutes for paragliding. Both are fixed by the specification.
Can the task be scored at all? ( §13.4.2 )
In hang gliding, a stopped task counts only if it ran long enough: at least min(1 hour, half the nominal time), measured from the race start with one start gate, or from the last start any pilot took with several gates or in a time trial. A task stopped sooner scores zero for everyone, and the scores say why.
Paragliding has no minimum. Instead, a stopped task whose winner scored under 50 points (task validity below 0.05) is left out of the competition total ( §15 ). It still shows on its own scores page.
Stopped-task validity ( §13.4.3 )
A fourth validity joins launch, distance and time. If anyone reached the end of the speed section, it is 1, because the race had a result. If nobody did, it lowers the day's value depending on how spread out the field was and how many pilots had already landed at the stop.
What part of your flight counts ( §13.4.4 )
Nobody earns points for flying after the task stop time. In a race with one start gate, every pilot is scored from the start to the stop time. With several gates, or in a time trial, everyone gets the same amount of flying time: as much as the last pilot to start had before the stop, counted from each pilot's own start. A turnpoint tagged after your window doesn't count, and your distance is measured only up to the end of it.
Time points ( §13.4.5 )
If nobody was in goal at the stop, the task has no time points. If someone was, every goal pilot's time points are reduced by the same amount, and that amount is added to the distance points on offer instead. The amount is the time points the best of the pilots still between ESS and goal would have earned had they made goal. If nobody was between ESS and goal, it is what a pilot reaching ESS exactly at the stop would have earned.
The altitude bonus ( §13.4.6 )
A pilot still in the air at the stop could have turned their height into more distance, so they get an altitude bonus. Their height above goal at the stop time is multiplied by a fixed glide ratio, 5:1 for hang gliders and 2.5:1 for paragliders (on GNSS altitude), and added to the distance they had covered at that moment. If the result beats their best distance so far, it is used for their distance points, including the difficulty calculation in hang gliding.
The bonus never takes a pilot past goal, and it doesn't affect time or leading points. A pilot who landed before the stop gets no bonus.
The task page marks a stopped task and shows its stop time, and the competition's public audit log records the stop. Each pilot's report card shows their scored window, any crossings that no longer counted, their altitude bonus, and any reduction to their time points.
Series scoring & Fixed Total Validity
FAI S7F §15–16A competition's overall results combine each pilot's task scores. There are two ways to do it, and each competition picks one in its scoring settings.
Sum of task scores
Your competition score is the total of all your task scores. Most hang gliding competitions and short series work this way. Pilots on the same total share a place, which S7A §5.2.5.4 allows.
FTV — Fixed Total Validity ( §16 )
The usual paragliding method, and the default for new paragliding competitions. FTV counts your best tasks rather than all of them, so one bad day costs you less. A fixed fraction of the competition's total validity is dropped: 20% for a competition of 6 tasks or fewer, 25% for 7 or more.
Each task has a validity, roughly its winning score divided by 1000. GlideComp sorts your tasks from your best performance down, then adds up your scores, and the tasks' validities, until the kept validity reaches the limit. The task that crosses the limit counts in part, and the tasks after it are dropped. A pilot who flew too few tasks to reach the limit keeps them all.
On an FTV competition's scores page, each pilot's dropped tasks are struck through, and "(part)" marks a task that counts in part. Open a pilot's total for the full breakdown: which tasks counted, which were dropped, and the arithmetic.
Default Competition Settings
FAI S7F §5When you create a competition, you only choose hang gliding or paragliding. GlideComp then applies the official CIVL GAP defaults for that sport, taken from the current FAI Sporting Code Section 7F, so a new competition scores like a standard FAI/AirScore event with no further setup. You can change any default under Advanced scoring settings in the competition's Settings, which you'd only need to do if your event runs local rules with different values, such as Australia's SAFA.
Most values are the same for both sports. Where they differ, it's because the specification scores the two differently: arrival points and distance difficulty are hang gliding only, and paragliding gives leading more weight because it has no arrival points.
| Setting | Default | What it means |
|---|---|---|
| Nominal distance | Auto | The expected task distance, used for distance validity. "Auto" uses 70% of each task's optimised distance; a fixed value applies to every task in the competition. |
| Nominal time | 90 min | The expected winning time. A much faster winner makes the task worth less (time validity). |
| Minimum distance | 5 km | The distance a pilot who launched is scored for, even if they land sooner ("bomb-out points"). |
| Leading points | On | Reward flying at the front. On for both sports, as in the FAI formula. |
| Leading time ratio | 26% / 17.5% | The share of the non-distance weight that goes to leading points ( §11 ), from 0% to 26%. The defaults are the specification's: 26% for paragliding, 17.5% for hang gliding. |
| Distance origin | Take-off | Scored distance is measured from the take-off point, through the start (FAI CIVL GAP / PWCA). "Start cylinder" leaves out the take-off→start leg (HGFA/SAFA). |
A few values that used to be settings are now fixed by the 2026 specification: nominal launch (96%), nominal goal (30%), the stopped-task score-back time, the 5/6 time-points exponent, and each sport's leading-coefficient variant.
Hang gliding (HG)
- Arrival points: on. HG scores the order of arrival at ESS ( §12.4 ).
- Distance difficulty: on. HG distance points are half linear, half difficulty ( §12.1.1 ).
- Leading coefficient: classic (squared-distance), the 2026 specification's hang gliding formula ( §12.3.1 ).
- Jump-the-gun (early start, §13.3 ): 1 penalty point for every 2 s before the gate, up to 300 s. A pilot who starts more than 300 s early is scored for minimum distance only.
- ESS but not goal ( §13.2 ): the pilot keeps 80% of their time and arrival points. This is the specification's recommended default, and local rules can change it.
Paragliding (PG)
- Arrival points: off. The specification gives paragliding none.
- Distance difficulty: off. Paragliding distance is always the linear proportion.
- Leading coefficient: weighted (weighted-area), the 2026 specification's paragliding formula ( §12.3.1 ).
- Early start ( §13.3 ): scored for the launch→start distance only. There is no jump-the-gun penalty, which is for HG only.
- ESS but not goal ( §13.2 ): 0%, so no time points without goal. The specification fixes this for paragliding, to discourage fast final glides low to the ground.
GlideComp Implementation Notes
GlideComp implements the core GAP formulas of the 2026 edition of the CIVL Sporting Code Section 7F, and scores every task with them, including historical competitions flown under earlier rules (those pages carry a notice that their scores are indicative). We check its results against real competition scores published by AirScore. The validity polynomials, weight split and points formulas follow the official specification. GlideComp doesn't implement every feature of the specification, and in a few places it deliberately, or for now, behaves differently; the next section lists every difference.
The tables below group features by FAI competition category. Section 7F is written for Category 1 events, the FAI World and Continental championships. Organisers of Category 2 and non-sanctioned events, which includes most local and club competitions, may score however they like ( S7F §1.1 ). GlideComp has everything a Category 2 or local competition needs; all it lacks are the Category 1 championship sub-rankings.
All competition categories
| Feature | Status |
|---|---|
| Task validity (launch, distance, time) | Implemented |
| Distance, time, leading, arrival points | Implemented |
| Weight distribution | Implemented |
| PG and HG scoring differences | Implemented |
| Leading coefficient (ratchet mechanism) | Implemented |
| Minimum distance floor | Implemented |
| Penalties — absolute points ( S7F §13.5 ) | Implemented. Entered by the scorekeeper and recorded in the audit log. |
| Penalties — percentage ( §13.5 ) | Not implemented. Tracked in issue #265; add your voice there if you need it. |
| Early starts & jump-the-gun ( §13.3 ) | Implemented. PG is scored launch→start. HG gets 1 point for every X s early, up to Y s, where X and Y are configurable (defaults 2 and 300). |
| ESS but not goal ( §13.2 ) | Implemented. PG keeps 0% of time points. HG keeps 80% of time and arrival points, configurable. |
| Start gates / race start times ( §6.3.1 , §9.2.4.1 ) | Implemented. The start snaps to the last gate at or before the crossing. The LC clock runs from the first gate ( §12.3.1 ). |
| Goal lines ( §6.2.3.1 , §9.2.3 ) | Implemented. The line is perpendicular to the final leg, with the control semi-circle behind it, and must be crossed in the direction of the last leg. |
| Line tolerance ( §9.1.2 ) | Implemented for the goal line: the same 5 m band as a cylinder, so a crossing just past the end of the line still counts. |
| Line control zones at intermediate turnpoints ( §6.2.2 , §9.2.2 ) | Not implemented. Every turnpoint before goal is a cylinder; the task file can't describe a line anywhere but goal, so no task can ask for one. Tracked in issue #359. |
| Open distance task type | Removed from GAP in the 2025 edition, which covers only Race and Time Trial tasks. GlideComp's open-distance format is the classic free-flight format, a separate scoring format outside GAP. |
| Task deadline enforcement ( §9.2 , §12.1 ) | Implemented. A crossing after the goal deadline doesn't count, and a landed-out pilot's distance is measured only up to the deadline. |
| Launch window ( §9.3 ) | Partly implemented. A start crossing before the window opens can't validate a start. See below. |
| Stopped tasks (weather calldowns, §13.4 ) | Implemented: score-back, minimum duration, stopped validity, scored time window, time-points reduction and altitude bonus. See Stopped Tasks. |
| Multi-task series scoring | Implemented. Competition totals per class, with top 3 per task and team scores. See the competition scores pages. |
| FTV (fixed total validity) for series | Implemented as an optional series method, and the default for new paragliding competitions. It drops a fixed fraction of the total validity (20% for 6 tasks or fewer, 25% for 7 or more) and scores each pilot on their best tasks. See Fixed Total Validity. |
FAI Category 1 (World & Continental championships) only
These sub-rankings only appear at FAI Category 1 championships, which have national team entries and a separate women's category. GlideComp deliberately leaves them out: Category 2 and local competitions don't use them, they're defined in Sporting Code Section 7A §5.2.4–5.2.5, and they don't change anyone's score, since each is just a filtered list of the same task scores.
| Feature | Status |
|---|---|
| Female sub-ranking (S7A §5.2.4.2, §5.2.5.2) | Deliberately not implemented. It re-lists the female pilots with their overall scores, and needs gender data GlideComp doesn't collect. |
| Nation sub-ranking / national teams (S7A §5.2.4.3, §5.2.5.3) | Deliberately not implemented. It ranks nations by the sum of their best three pilots (two at the Women's Worlds), and needs national-team entries. It's not the same as GlideComp's team scores, which any competition can use. |
A new competition starts with the official CIVL GAP settings for its sport: leading points on for both, and arrival points and distance difficulty on for hang gliding, so its scores match a standard FAI/AirScore event. See Default Competition Settings for the full list. You can change any of them under the competition's Advanced scoring settings.
The scoring engine is open source on GitHub. Every change to how a flight is scored is written up in the scoring changelog, with what moved and who it affects. A change rescores every competition, including ones that have already finished.
Differences from the Official Specification
We compared GlideComp's scoring engine line by line with FAI Sporting Code Section 7F (2026 edition) and with the source code of AirScore, the CIVL-approved scoring software, most recently in August 2026. The table compares the three on each part of the formula, and the notes below it explain the notable differences. Section numbers (§) refer to the 2026 edition and link to the right page of the official PDF .
The AirScore column describes its current GAP presets, which are GAP2023 unless another generation is named. AirScore's older generations behave differently where the table says so.
| Feature | FAI S7F (2026) | GlideComp | AirScore |
|---|---|---|---|
| Task validity ( §10 ) | Launch, distance and time validity from the specification's cubic polynomials. | As the specification. | As the specification in GAP2020 and later. Editions before 2025 printed the launch-validity linear coefficient as 0.027; the 2025 edition corrected that decade-old typo to 0.028, which AirScore's library always used, so all three now agree. |
| Weight split — hang gliding ( §11 ) | DistW = 0.9 − 1.665·GR + 1.713·GR² − 0.587·GR³. Arrival is (1−DistW)/8. Leading is 1.4·(1−DistW)/8 at the default ratio. | As the specification. | As the specification, and the same in every generation. |
| Weight split — paragliding ( §11 ) | Leading gets LeadingTimeRatio (default 26%) of the non-distance weight, or all of it when nobody makes goal. | As the specification, for every task. The pre-2026 leading-weight generations (GAP2016/2018, the PWC weights of 2020–2022) are no longer implemented; historical competitions are rescored with the 2026 formula and their pages say so. | The gap2023 preset is the specification. The gap2020, gap2021 and gap2022 presets use the PWC-derived S7F 2020–2022 weights: distance 0.838 at 0% goal, otherwise 0.805 − 1.374·GR + 1.413·GR² − 0.484·GR³, with leading fixed at 0.162. |
| Time-points curve ( §12.2 ) | SF = 1 − (Δt/√tbest)5/6, both sports. | 5/6 for every task. The older 2/3 curve is no longer implemented. | 5/6 in GAP2020 and later; 2/3 in GAP2016/2018. |
| "Best time" ( §9.4.1 ) | HG: the fastest pilot to ESS. PG: the fastest pilot who also reached goal. | As the specification. | The same rule (GAP2020 and later, pilot_speed). |
| ESS but not goal ( §13.2 ) | PG keeps 0% of its time points. HG keeps 80% of its time and arrival points by default. | As the specification. | Reduces time and arrival points by the factor, as the specification does. |
| Leading coefficient ( §12.3.1 ) | HG: classic squared-distance area. PG: weighted area. Clock from the first start gate. | Both variants, fixed per sport as the specification sets them. No "integrated" variant. | Classic, weighted, and the PWC 2023 "integrated" variant. |
| Leading-points curve ( §12.3 ) | LF = 1 − ((LC − LCmin)/√LCmin)2/3. | As the specification. | As the specification. |
| Arrival points ( §12.4 ) | By position only (HG). | By position only. | By position by default, with an old OzGAP time-of-arrival option at double weight. |
| HG distance difficulty ( §12.1.1 ) | 100 m slots. Look-ahead max(30, 30·BestDist/PilotsLandedOut). Cumulative relative difficulty. | As the specification, reproducing AirScore's sub-slot interpolation. | As the specification. |
| Stopped task: score-back ( §13.4.1 ) | Fixed: announcement − 15 min (HG), − 5 min (PG). | As the specification. | A per-competition score-back time, defaulting to 5 min for PG and 15 min for HG: the values the 2026 edition fixed. |
| Stopped task: time-points reduction ( §13.4.5 ) | Every pilot is scored only to the stop. The reduction is the time points the best pilot between ESS and goal would have earned; it is subtracted from each goal pilot and added to the available distance points. | As the specification. | Subtracts it from every ESS pilot's time points, and adds it to the available distance points. |
| Stopped task: altitude bonus ( §13.4.6 ) | Glide ratio 5 (HG) and 2.5 (PG), from the pilot's position at the stop time. GNSS altitude. | As the specification. | 4 (PG) and 5 (HG) by default, configurable, over every track point. GPS altitude for PG, but barometric (QNH) altitude for HG by default. |
| Cylinder tolerance ( §9.1.1 ) | Fixed: 0% relative + 5 m absolute, for every competition. | As the specification. A tolerance declared in the task file is ignored; every task uses the fixed band. | 0.1% + 5 m by default in GAP2020 and later; 0.5% in GAP2016/2018. |
| Jump the gun ( §13.3 ) | HG only: 1 point for every X s early (default 2 s), up to Y s (default 300 s). PG is scored launch→SSS. | As the specification, with X and Y configurable. | As the specification, expressed as 0.5 pt/s. |
| Penalties ( §13.5 ) | Applied in order: jump-the-gun, percentage, absolute. Minimum 0. | Jump-the-gun and absolute penalties. No percentage penalties (issue #265). | All three, plus negative (bonus) penalties. |
| Score rounding ( §12 ) | The component sum is rounded once, to one decimal, after penalties. | As the specification. Ranking and tie-breaks use the rounded value. | Full precision internally, rounded for display only: task results to 1 decimal in GAP2020 and later, competition totals to whole points. |
| Distance computation ( §4.2 ) | WGS84 ellipsoid. | WGS84 Vincenty inverse and direct, one of the three algorithms §7.1.4 allows. Routes are optimised with the §7.1.3 PathFinder algorithm over the §7.1.2 local projection, then corrected back onto the control-zone boundaries ( §7.1.7 ). | WGS84 Karney geodesics (geographiclib). Routes differ by metres, which causes small differences in absolute points. |
| Series scoring / FTV | Task ranking and competition totals, optionally with FTV (§14–16). | Competition totals as a sum of task scores or with FTV (S7F §16), ranked per class (S7A ties), with top 3 per task and teams. FTV is the default for new PG competitions. | Implemented. FTV is the PG preset default, with factor 0.75. |
Features GlideComp doesn't implement are listed in the previous section. These are the other places where it departs from the letter of the specification:
Start gates: placeholder midnight gates are ignored ( §6.3.1 )
Otherwise, start gates work as the specification says. Each pilot's start time is the last gate at or before their start-cylinder crossing ( §9.2.4.1 ), and a crossing before the first gate can't validate a start ( §9.2 ). With one gate, the start is the first crossing after it, and a later crossing doesn't replace it. With several gates, the start is the last crossing before the pilot carried on along the course, so a pilot can go back for a later gate ( §9.2.4 ). Early starts follow §13.3 : paragliders are scored launch→start, and hang gliders get the jump-the-gun penalty. The leading-coefficient clock runs from the first gate ( §12.3.1 ).
The one difference: if the only gate of a race is exactly 00:00:00 UTC, GlideComp treats the task as having no gates and times it as a time trial. Some tools write a single midnight gate just to satisfy the file format's rule that the gate list can't be empty, and a real gate at midnight UTC doesn't happen in practice.
One leading-weight formula, for every competition ( §11 )
The 2026 specification sets the leading weight from a per-task Leading Time Ratio, in both sports. GlideComp applies this formula to every competition, including historical ones first published under an earlier generation. Those pages carry a notice that their scores are indicative. This is the one place a GlideComp score can differ from an old published score by design rather than by mistake.
A competition sets its Leading Time Ratio (0% to 26%) in its scoring settings. The defaults are the specification's own: 26% for paragliding, 17.5% for hang gliding.
Line control zones are only supported at goal ( §6.2.2 , §9.2.2 )
GlideComp scores a goal line as the specification defines it: through the goal waypoint, perpendicular to the final leg, with the semi-circular control zone behind it, the goal-line tolerance of §9.1.3 , and crossed in the direction of the last leg. Goal is the only place GlideComp understands a line. The specification also allows one at an intermediate turnpoint, but the .xctsk task format can't describe it, so no task can ask for one and every turnpoint before goal is treated as a cylinder. Tracked in issue #359; add your thoughts there if it matters for your competition.
"Open distance" means the classic format, not a GAP task type
GlideComp's open-distance competitions use the classic free-flight format: one take-off, pilots fly as far as they can, and the score is the straight-line distance from the edge of the take-off cylinder. Earlier editions of the specification also had an open distance task within GAP, but the 2025 edition removed it, and the 2026 edition covers only Race and Time Trial tasks. A GlideComp task with control zones always scores as a Race.
Launch window: only provable violations are enforced ( §9.3 )
The specification counts a pilot's turnpoints only if they launched inside the
launch window. GlideComp enforces the half of this rule a tracklog can prove. A
start-cylinder crossing before the window opens
(takeoff.timeOpen in the task file) shows the pilot was airborne
before launch was allowed, so that crossing can't validate a start, and the
report card says why.
A tracklog alone can't prove when someone launched, so GlideComp won't catch a pilot who launched early but started the course after the window opened, or one who launched after it closed. Launch time isn't part of scoring; the scorekeeper decides these cases and can add a penalty by hand.
Smaller details
- The two-fix rule is not a second way to reach a goal line ( §9.2.2 ): §9.2.2 also accepts a line crossing from two consecutive fixes on opposite sides of it, if flying around the end of the line would have needed more than 120 km/h. GlideComp doesn't use this as an extra way to reach goal. A pilot whose straight path between two fixes passes outside the end of the line went around it at their own speed, so the test says nothing about them; on its own it would award goal to a pilot who crossed the line's extension a kilometre past the end. The case the test is meant for, a crossing so close to the end that measurement could put it either side, is already covered by the line tolerance. A goal line is reached by crossing it ( §9.2.3 ) or by a fix in the control zone behind it.
- Mis-set task deadlines are ignored ( §9.2 ): the goal deadline otherwise applies as the specification says: a crossing after it doesn't count, and a landed-out pilot's distance is measured only up to it ( §12.1 ). The one guard is for task-setting mistakes that would give every pilot zero: a deadline at or before the first start gate, or a launch window that opens at or after the deadline. GlideComp treats such a deadline as unset, as it does a missing SSS or ESS. If the deadline changed a pilot's score, the report card shows the cutoff time and each crossing it ignored.
- Hang gliding goal lines use the paragliding semi-circle rule ( §9.2.3 ): in the specification, entering the control semi-circle behind the goal line counts as a crossing only in paragliding; in hang gliding only crossing the line itself counts. GlideComp applies the paragliding rule to both sports. The direction of crossing is checked for both, so a pilot who crosses the wrong way doesn't reach goal. The effect is tiny, because a pilot who gets behind the line has almost always entered the semi-circle. Tracked in issue #359.
- Leading coefficient: track points after the deadline ( §12.3.1 ): the specification counts a track point recorded after the task deadline as if it were at the deadline. GlideComp counts it at its own time, which makes the leading coefficient slightly worse than the specification would for a pilot who kept going. It only affects a pilot still flying towards ESS after the deadline, who earned no more distance for it anyway. The end of the curve itself follows the specification.
- Times carry fractions of a second ( §9.4 ): the specification's smallest unit of time is one second. GlideComp interpolates each crossing between the two nearest fixes, so a speed-section time can include a fraction of a second. That's more precise, but time points can differ by a fraction of a point from a scorer that works in whole seconds. Tracked in issue #586.
- Optional leading and arrival points: the specification always has a leading weight, and an arrival weight for hang gliding classes 1 and 5. GlideComp follows the FAI formula by default (leading on for both sports, arrival on for hang gliding), but a competition can turn either off, as is common in club scoring. A competition that does so departs from the specification.
- Distance origin: the optional "start cylinder" distance origin deliberately departs from the specification's launch-to-goal task distance ( §7.2 ), to match the wording of some national rules such as HGFA/SAFA. The default "take-off" setting follows the specification.
- Distance precision: distances are computed on the WGS84 ellipsoid, as the specification requires ( §4.2 ), and the route optimiser uses the specification's own algorithms ( §7.1 ): the local projection, the PathFinder crossing and reflection constructions with the 0.1 m threshold, and the projection correction back onto the control-zone boundaries. One internal difference remains: the reflection case is solved by numeric search rather than the referenced paper's closed form, which finds the same point a different way. So the optimised route isn't bit-identical to another tool's, such as AirScore, and a landed-out pilot's points can differ slightly. This affects absolute points more than rankings.
If one of these differences matters for your competition, or you find one this page doesn't list, open an issue on GitHub. Transparent scoring is the whole point of this project.
Official References
-
CIVL Sporting Code Section 7F — XC Scoring (2026 Edition)
The definitive specification, with every formula, coefficient and rule, including penalties, stopped tasks and series scoring. -
FAI/CIVL — International Hang Gliding and Paragliding Commission
The governing body that maintains the GAP rules and runs the World and Continental championships. -
FAI Sporting Code
The full set of FAI sporting codes for all air sports. Section 7 covers hang gliding and paragliding.