What this is
IGC is the plain-text file written by FAI/IGC flight recorders and
soft-loggers (XCTrack, FlySkyHy, Flymaster, LXNAV…). It is the primary upload
format for we-fly — every flight in the logbook starts as an .igc file, and
the upload endpoint (POST /api/v1/flights/upload) accepts
exactly this. If you build anything that produces or reads flights for we-fly,
this is the format you're speaking.
Interactive specification
We maintain a self-contained, interactive spec you can read and test right in the browser:
→ IGC format — interactive specification
It includes a live barograph (paste a file, watch the altitude trace draw itself), a B-record column ruler, a live decoder that converts every line to plain English, and a filterable record explorer — no upload, nothing leaves the page.
The format in one screen
- Line-oriented. The first character of each line is the record type — a
single letter
A–L. The rest is fixed-width and/or delimited data. - The
Brecord is the track. A 35-byte fix: UTC time, latitude, longitude, fix validity, pressure altitude and GNSS altitude — repeated many times a minute. - Coordinates are degrees + minutes + thousandths-of-a-minute (WGS84), not
decimal degrees:
5052197N→ 50°52.197′ → 50.86995°. - Altitudes are metres. Pressure altitude is on the 1013.25 hPa datum; GNSS altitude is WGS84-ellipsoid height.
| Record | Role |
|---|---|
A | Recorder id (first line) — X-prefix = soft-logger |
H | Header: pilot, glider, date, hardware |
I / J / K | Fix extensions (FXA, SIU, ENL…) and periodic data |
C | Declared task (start, turnpoints, finish) |
B | Position fixes — the track |
E / F / D | Events, satellites, DGPS |
G | Security signature (FAI-validated via vali.fai-civl.org) |
L | Free-text comments |
Parsing notes
- Dates are day-first (
DDMMYY), and come in two forms — currentHFDTEDATE:DDMMYY,NNand legacyHFDTEDDMMYY. Accept both. - Slice
Brecords by column, not whitespace — there is none; extensions are byte-positional per theIrecord. Gmay be absent on soft-loggers: that means "unvalidatable," not "invalid." We-Fly parses uploads withigc-parser; follow its tolerant behaviour over the strict manufacturer spec.
Sources
The interactive spec reconciles the FAI/IGC Technical Specification, the FAI/CIVL FVU standard (the validation contract we call), and Ian Forster-Lewis's developer guide.