Standards · IATA Bar-Coded Boarding Pass

What's encoded in a boarding-pass barcode?

Almost everything an airline knows about your trip. The 2-D barcode (QR, Aztec, or PDF417) on your boarding pass carries your full name, your six- or seven-character booking reference, the carrier and flight number, route, departure date, seat, compartment class, check-in sequence, and any frequent-flyer number on file. Together, your name plus that booking reference is enough to log into the airline's website and access your booking — which is why a photo of a boarding pass posted publicly is a genuine security hazard.

Verify your boarding pass → All standards →

What's the format

The standard is IATA Resolution 792, maintained by the International Air Transport Association as part of the Passenger Services Conference Recommended Practices. It defines a fixed-width text encoding that fits inside a 2-D barcode and contains everything the gate agent's scanner needs to confirm your booking.

The container is symbology-flexible — most carriers use QR codes today, European high-speed-rail and SBB use Aztec, and a few legacy carriers still ship PDF417. The encoded TEXT is identical across all three; only the visual encoding differs. Our scanner reads all three symbologies and applies the same decoder to the resulting text.

The mandatory portion of every boarding pass is exactly 60 characters: a 2-character header (format code "M" + segment count) followed by 20 characters of passenger name, 1 character of electronic-ticket indicator, then 37 characters of segment data. Multi-segment connections add another 37 characters per segment. The conditional section (after the mandatory 60) typically carries the frequent-flyer number, fare basis, source of check-in (web / kiosk / agent), and any security data the carrier appended.

The full field layout

Header (2 chars)

Format code "M" + number of segments (1-4). A multi-segment ticket — e.g. SFO → JFK → LHR — has segment count 2 and carries two segment records back-to-back.

Passenger name (20 chars)

"LASTNAME/FIRSTNAME" left-justified, padded with spaces. Long names get truncated; the on-screen name printed on the pass is always the source of truth.

Electronic-ticket indicator (1 char)

"E" for an electronic ticket (every modern pass) or " " for a paper one (essentially never seen).

Per-segment (37 chars each)

  • PNR / record locator (7 chars) — the booking reference.
  • From / to airports (3 chars each) — IATA three-letter codes.
  • Carrier (3 chars, left-justified) — operating-airline IATA code.
  • Flight number (5 chars, zero-padded).
  • Date of flight (3 chars) — Julian day-of-year (e.g. "250" = day 250 = September 7).
  • Compartment (1 char) — Y / W / J / F / etc. (booking class).
  • Seat (4 chars, zero-padded).
  • Sequence number (5 chars, zero-padded) — your check-in order.
  • Passenger status (1 char) — 1=baggage required, 2=lounge access, 3=bypass security, F=boarded, G=gate-checked, etc.
  • Conditional length (2 hex chars) — bytes of conditional data after this segment.

Conditional section (variable)

After every segment, an optional run carrying the airline-specific extras: frequent-flyer number, fare basis code, baggage allowance, airline-specific security data, and a few less common fields. The frequent-flyer number is the most privacy-sensitive item here — it's a long-lived identifier tying every flight you've taken to a single account.

Security section (variable, optional)

Some carriers append a signature so the pass can be verified offline at the gate. Few enforce it. The presence of the signature does not change what's in the body.

Why posting a boarding-pass photo is risky

The combination of passenger name + PNR (the 7-character booking reference) is functionally a password on most airlines. "Manage my booking" lookups accept those two fields as identity proof. With them, an attacker can:

Several airlines have responded to past incidents by adding multi-factor identity proof to the manage-my-booking flow. Many haven't.

The mileage-redirect attack has been documented multiple times. Passengers who tweeted or Instagrammed a boarding-pass photo have lost upgrades, had bookings moved, and been targeted with itinerary-matched phishing within hours.

What our scanner surfaces, and how PNR is masked

Visible by default

Passenger name (first last), carrier + flight number (zero-stripped, e.g. "AA123"), route (SFO → JFK), date in ISO format (Julian day expanded with smart year-rollforward), seat (zero-stripped, e.g. "12A"), compartment class, sequence number, status (with human label — "Boarded", "Lounge access", etc.). Multi-segment passes get per-segment row labels.

Sensitive (tap-to-reveal)

The PNR is masked behind the same tap-to-reveal component we use for passwords and 2FA secrets. A screenshot of the verdict without tapping the reveal button doesn't leak the booking reference. Frequent-flyer number, when present in the conditional section, is not extracted at all by the server analyzer — it's a stable identity tying multiple trips together, and surfacing it on a verdict page would defeat the privacy posture.

Verifying your own boarding pass

Three legitimate reasons people scan their own:

The scanner runs in your browser; only the decoded text reaches our server (not the image). The verdict masks the PNR by default. If you screenshot the verdict for your records, the PNR stays masked unless you explicitly reveal it before the screenshot.

Related

Try it on your boarding pass

Photograph the barcode (or use the camera on the scanner page) and drop it in. Verdict shows every segment of your itinerary with the PNR masked.

Open scanner →