IGC FAI — gliding flight log format: international FAI standard
IGC FAI (.igc) is the text-based flight-recording format for gliders, paragliders, and hang gliders, standardized by the International Gliding Commission under the auspices of the Fédération Aéronautique Internationale. One 5–15-hour flight turns into a 100–300 KB ASCII file with fixes every one or two seconds: latitude, longitude, barometric and GPS altitude, timestamp. A distinctive IGC feature is the mandatory G-record cryptographic signature at the end of the file, which makes the record unforgeable. Without a signature the flight result is not counted in the international competitive system. For gliding, this is the JPEG of aviation: the single format in which the entire industry lives — from personal GPS loggers to national federations.
History: from stopwatches to G-record
IGC's history starts with a trust problem. Before the 1990s gliding records and competitions were verified with film cameras: a pilot photographed turnpoints from the air, and judges on the ground used the geometry of shadows and the horizon to determine whether the glider actually passed the required point. The process was labor-intensive, slow, and not error-free.
In the early 1990s the first GPS receivers compact enough for glider installation appeared. The International Gliding Commission, the FAI committee for gliding sports, set the goal: standardize flight recording so it could be automatically verified. In 1995 the first edition of the "IGC GNSS Flight Recorder Approval Document" was released, defining:
- The text format of the file written by the Flight Recorder (FR) during flight.
- A cryptographic signing procedure (G-record), tied to the FR's serial number.
- A certification procedure for FR manufacturers — device and firmware undergo IGC audit, after which they receive "IGC approval" and may be used for records and competitions.
The first certified FRs were Volkslogger (German company), LX Navigation Colibri (Slovenia), Filser/LX, Garrecht. Over the years Naviter (Slovenia, the main SeeYou stack), FlyTec (Switzerland, paragliding), SkyDrop (Czechia, affordable models for paragliders), and later ColibriX and the LX9000 series joined.
In the 2000s the IGC format penetrated online communities of cross-country gliding. XContest and Online Contest (OLC) became public platforms where pilots upload their IGC files for cross-country kilometer scoring. The XContest seasonal rating broke through the 30,000-active-pilot barrier worldwide in the 2010s.
In parallel free software appeared — XCSoar (open-source flight computer for Android and Linux), which writes legitimate IGCs with G-record on an ordinary smartphone. The paragliding community got democratic access to competitive participation without buying specialized hardware for €500–€1500.
By 2026 the IGC format continues to be the only global standard for competitive gliding. Parallel formats (KML with altitude, GPX with extensions) are used only for viewing — for official results, only a signed IGC works.
What's inside an IGC file
IGC is plain ASCII text without BOM, line terminator CRLF (historically — Windows tools). Each line starts with a record-type identifier letter. Line length is fixed for each type.
A-record — first line of the file. Manufacturer ID (3 chars) + Flight Recorder Serial Number (3 chars) + optional flight number. Example: AXLK00112SeeYou v9.2 — device by manufacturer LXNav (XLK), serial 001, additional info.
H-record — header lines. Several H-lines in sequence contain: flight date (HFDTE), pilot name (HFPLT), glider model (HFGTY), registration (HFGID), GPS settings (HFGPS), datum types (HFFTY). Example: HFDTE140523 — date May 14, 2023, HFPLTPILOT:Ivan Petrov, HFGTYGLIDERTYPE:LS-8.
I-record — extension definition. Declares which additional fields will be in B-records (heart rate, true airspeed, chosen accuracy metrics, etc.). One line, near the top after H-records.
B-record — the primary fix points, the file's core. One B-record = one track point. Fixed structure: B, time HHMMSS UTC, latitude DDMMmmm (degrees, minutes, decimal minutes), hemisphere N/S, longitude DDDMMmmm, hemisphere E/W, validity (A valid, V not valid), pressure altitude (PALT) in meters, GPS altitude (GALT) in meters, then I-record extensions. Example: B1024005045123N01411456EA0102501050 — 10:24:00 UTC, 50°45.123′N 14°11.456′E, valid, barometric altitude 1025 m, GPS altitude 1050 m.
B-record frequency: 1–2 seconds in modern FRs, which gives 10–20 thousand records for a 5-hour flight.
K-record — extended data, parallel to B-record but with a different field set. More commonly used for turbulence, wind, temperature.
G-record — final file section, the digital signature. From 1 to several dozen lines of 75 characters each, containing the base64-encoded MD5/SHA-1 hash of all preceding file content, encrypted with a private key known only to the certified FR. No one (including the manufacturer at a fresh device) can produce a valid G-record without knowing this specific device's private key. G-record verification runs in FAI utilities (IGC verification tools) and automatically on XContest/OLC upload. Valid signature = authentic file.
Who needs IGC: five roles
Competitive glider pilot. A pilot flies a cross-country task — 300–800 km with turnpoints. After landing, takes the SD card out of the Flight Recorder, copies .igc to a computer, uploads to XContest. The system algorithm detects the task structure (start, turnpoints, finish), counts qualifying kilometers per current-season rules, awards points to national and world ratings.
OLC paraglider pilot. Online Contest is the main cross-country paragliding platform in Europe. Any flight >30 minutes with >100 m gained is counted in the seasonal table. SkyDrop or FlyMaster in the harness pocket writes .igc; after landing it uploads to OLC via USB. The paraglider pilot can fly solo without judges or a task — the system itself detects the best triangle, free distance.
Coach and flight analysis. SeeYou Mobile and SeeYou Cloud show the flight trajectory over a topographic map, altitude graphs over time, thermal columns (rising air pillars) with climb-rate calculations, glide ratio on glide segments. Post-flight analysis is the main coaching tool for route-planning practice and thermalling-centering technique.
FAI Badge candidate. To earn the silver/gold/diamond gliding badge specific flights are required: 5-hour duration, 50 km distance, 1000 m altitude gain, 300 km cross-country, etc. Each qualifying flight is documented as an .igc with valid G-record, which goes through National Aero Club to FAI verification. Without IGC — no badge. This path has been closed off for over 25 years.
Safety and incident investigation. In gliding accidents the .igc is extracted from the Flight Recorder to reconstruct the final flight minutes. Precise trajectory, altitude, time-stamping allow establishing causes — flutter, stall, mid-air collision. National aviation commissions (CAA, BFU) include IGC in the standard post-incident data set.
Software for IGC: seven programs
SeeYou Cloud + SeeYou Mobile. The main gliding stack, developed by Naviter (Slovenia). SeeYou Cloud is a web portal for storing .igc, analyzing flights, syncing across devices. SeeYou Mobile is an Android/iOS app that acts as a full-featured flight computer (instead of standalone hardware FR), recording valid IGCs. Paid. naviter.com
XCSoar. Open-source flight computer software for Android, Linux, Windows. Free, legitimately IGC-certified for paragliding and microlight FAI-badge levels. Writes IGC with G-record on a smartphone with GPS. Used as entry-level FR by thousands of paragliders. xcsoar.org
CompeGPS Air. Spanish product for task planning and flight analysis. Supports IGC plus Garmin/Magellan formats. Strong side — task editor with FAI rules engine, validating cross-country tasks before flight. compegps.com
GpsDump. Free Linux/Windows utility from a Norwegian developer. CLI and GUI. Reads .igc, converts to KML/GPX, verifies G-record. Indispensable in Linux environments where SeeYou isn't available. gpsdump.no
LX Navigation software. Vendor tools for the LX-series FRs (LX9000, LX9050, ColibriX). Configure the device, upload logs, check firmware. Windows. lxnav.com
XContest and Online Contest (OLC) web platforms. Not desktop software but online services, central to working with IGC. Upload your .igc, get automatic analysis: distance by FAI rules, seasonal-rating points, track visualization on OSM/Google. xcontest.org onlinecontest.org
pyigc (Python). Open-source library for programmatic IGC processing. Parses A/H/I/B/K/G records, validates G-record (optional), yields numpy arrays of coordinates and altitudes for further analysis in Jupyter. Ideal for research tasks and data-science automation. github.com/marclaurens/pyigc
Pitfalls and tips
G-record cannot be regenerated. If an .igc file has been edited by even one character (e.g., fixing a typo in the pilot name in H-record), the G-record becomes invalid — XContest and OLC immediately reject the file with "G-record verification failed". If the file written by the FR contains a header error, it can only be fixed by re-recording on the same FR via manufacturer software, which signs anew.
Barometric vs GPS altitude. Two altitude fields in B-record: PALT (barometric, by pressure, typically set to standard atmospheric QNH=1013.25 hPa) and GALT (GPS, by WGS-84 ellipsoid). For FAI records barometric altitude is used — it alone is not subject to GPS jitter. But SeeYou's altitude chart usually shows GPS altitude — more stable at low altitudes near ground.
Records in UTC, not local time. Time in B-records is always UTC. Visualization in SeeYou applies the time zone automatically by launch geolocation. But comparing to the launch log at the airfield (where time is local) — account for the offset.
Validity flag. In B-record the A (valid) or V (not valid) field is the GPS-fix status from the antenna. A flight may contain minutes with V (signal loss under cloud, in mountain shadow); SeeYou usually filters these visually, but they remain in the file and may affect statistics.
File size. One hour of flight = ~3600 B-records = ~25 KB. A 10-hour cross-country = ~250 KB. A 24-hour wave flight in the Andes — 500–800 KB. That's a lot for XContest upload over mobile internet in the mountains — plan upload upon arrival home.
Antimeridian. Flights crossing the 180th meridian (e.g., a Kamchatka-to-Alaska theoretical scenario) have no special IGC handling. Coordinates are written as-is, and on SeeYou visualization the track may "jump" across the whole map. Rare, but for arctic flights plan viewing in Google Earth, which handles antimeridian.
Multi-day flights. B-record contains only HHMMSS — no date. If flight crosses UTC midnight, the date must be manually set in H-record (HFDTE) on launch day, and parsers detecting time-rollover (hours go back) understand the next day arrived. >24-hour Andean wave flights — a corner case not all parsers handle correctly.
Free FR via smartphone. If the entry budget is tight, XCSoar on any Android smartphone with GPS chip writes legitimate IGCs with G-record, accepted by XContest and OLC. Not suitable for FAI world records, but for personal records, parahawking badges, regional soaring contests — full quality.
How to prepare a task via osm2cdr.ru
osm2cdr.ru doesn't perform direct .igc export — IGC is always recorded by the Flight Recorder during flight, never simulated. But osm2cdr.ru plays an important role in the task-planning phase — picking turnpoints and cross-country corridors.
Step 1. On osm2cdr.ru select a regional bbox — for cross-country gliding typically 200×200 km or larger (e.g., southern Germany, Austrian Alps, Caucasus). Step 2. In the format dropdown choose GPX. Step 3. Download — it contains waypoints of type peak (mountain summits — classic turnpoints), airport, aerodrome (start/finish points), tower (TV/water towers — visible landmarks). Step 4. Open SeeYou Mobile (or SeeYou Cloud), import GPX via File → Open. Step 5. In Task Editor create the task: choose Start, sequence of Turnpoints, Finish. SeeYou automatically validates geometry by FAI rules (minimum leg angles, observation zone sizes). Step 6. Export the task in the format your Flight Recorder understands (LX format, Naviter task format, or generic task XML). Transfer to the FR via SD/USB.
Step 7. After the flight, extract the recorded .igc from the FR and upload to XContest/OLC.
For programmatic work — pyigc-style parsing with coordinate output:
from datetime import datetime
import re
class IGCFix:
def __init__(self, line):
# B-record: B HHMMSS DDMMmmmN DDDMMmmmE A PPPPP GGGGG
self.time = datetime.strptime(line[1:7], '%H%M%S').time()
lat_deg = int(line[7:9])
lat_min = int(line[9:11]) + int(line[11:14]) / 1000
self.lat = lat_deg + lat_min / 60
if line[14] == 'S':
self.lat = -self.lat
lon_deg = int(line[15:18])
lon_min = int(line[18:20]) + int(line[20:23]) / 1000
self.lon = lon_deg + lon_min / 60
if line[23] == 'W':
self.lon = -self.lon
self.valid = line[24] == 'A'
self.alt_baro = int(line[25:30]) # pressure altitude meters
self.alt_gps = int(line[30:35]) # GPS altitude meters
# Parse the file
fixes = []
with open('flight.igc') as f:
for line in f:
if line.startswith('B'):
fixes.append(IGCFix(line))
print(f"Loaded {len(fixes)} fixes, "
f"flight time {fixes[-1].time} - {fixes[0].time}")
This code extracts coordinates for further analysis — FAI triangle construction, thermal-climb calculation, GeoJSON export.
Related formats and resources
- GPX — universal text format for GPS data
- FIT — Garmin Flexible and Interoperable Data Transfer
- TCX — Training Center XML
- KML — Google Earth and geolocated data
- Garmin IMG — vector maps for Garmin devices
- GPX landing page
Sources
- IGC GNSS Flight Recorder Approval Document, FAI / International Gliding Commission — fai.org/page/igc-documents
- IGC File Format Specification, technical reference — fai.org/sites/default/files/igc_fr_specification_with_al6_2016-4-10.pdf
- XContest official rules and IGC requirements — xcontest.org/world/en/rules
- Online Contest (OLC) regulations — onlinecontest.org/olc-3.0/gliding/index.html
- XCSoar IGC logger documentation — xcsoar.org/discover
- pyigc Python parser — github.com/marclaurens/pyigc