Free boarding pass generator

Build a synthetic IATA BCBP barcode and download a boarding pass image to test a boarding pass scanner.

For testing only. Every value on this page is randomly generated sample data and each pass is stamped SPECIMEN. No live reservation system is involved. The output is not a valid travel document, will not pass an airport check, and must not be used to travel or to impersonate anyone. Use it to test a scanner.

Pass setup

A printed pass uses PDF417, which is what Resolution 792 originally specified. Version 7 opened the same payload up to Aztec Code, QR Code and Data Matrix for mobile and 2D printed passes, so choosing one of those raises the version to 7.

Passenger

The passenger name is written as SURNAME/GIVEN NAME and left-justified in 20 characters. A baggage tag is 13 digits: a 10-digit licence plate followed by a 3-digit count of consecutive bags. The first three tags fill item 23; a fourth and fifth become the non-consecutive items 31 and 32.

Optional data (the conditional sections)

BCBP has no field tags: the optional items are written in a fixed order and only the trailing ones may be dropped. Leaving an early field empty while filling a later one is therefore not expressible, and the validator reports it instead of quietly padding a gap with filler. Leave security data empty to omit the whole security section — the official examples do include one, so it is worth trying.

Flight legs

Pass preview

Generating…

Encoded BCBP payload

This is the exact string the barcode encodes. Positions 1–23 are the unique mandatory section, 24–58 the repeated section, then the two hexadecimal characters of item 6 and the leg's variable field. Every leg repeats the 35-character block plus its own size field, so a two-leg pass is longer than twice a one-leg pass.

Expected scanner output

Read this table back as the test oracle: it is produced by parsing the payload that was just generated, so it states what the bytes contain, not what the form says. The offset column is the 1-based position of the field in the payload, which is what makes a mismatch with a scanner easy to localise.

Scope and limitations

This generator implements the linear data layout of IATA Resolution 792 — the payload a scanner reads out of the symbol. It does not sign anything: a BCBP payload is plain text, so a valid-looking pass proves only that the data is well formed. Real airlines protect a pass with their own digital signature, verified against a public key, and nothing on this page reproduces that. A parseable boarding pass is therefore never evidence that a passenger holds a real reservation.

Aztec, QR Code and Data Matrix are only standard for a printed pass from version 7 onwards. Older readers may accept the symbol but expect PDF417, which is why PDF417 remains the safe choice for a printed pass and the default here.

The flight date carries no year. BCBP stores a Julian day of the year, so a scanner has to infer the year from the issue date or from the current date. A pass issued at the turn of the year can therefore be ambiguous through no fault of the data.

Airline names, numeric codes and airport cities come from a short built-in reference table so that sample data reads realistically. It is not an authoritative IATA dataset, and the decoded labels are for readability only.