Monorepo for parsing airline boarding pass barcodes and QR codes that conform to the IATA Bar Coded Boarding Pass (BCBP) standard (Resolution 792, Version 8).
| Package | Path | Install |
|---|---|---|
| Swift | packages/swift |
Swift Package Manager / CocoaPods |
| Node.js | packages/node |
npm install boarding-pass-kit |
- Parse IATA BCBP v8 ASCII payloads (single and multi-leg)
- Extract bag tags, frequent flyer info, and security data
- Convert Julian day-of-year to calendar dates (with year inference)
- Configurable trimming and empty-string handling
- Built-in demo data for testing
BoardingPassKit/
βββ packages/
β βββ swift/ # BoardingPassKit Swift library
β βββ node/ # boarding-pass-kit npm package
βββ apps/
β βββ BoardingPassKitDemo/
βββ Package.swift # Root SPM manifest (backward compatible)
βββ IATA_COMPLIANCE.md
- iOS 15.0+ / macOS 10.15+
- Swift 5.7+
Swift Package Manager β add the repository URL in Xcode or Package.swift:
dependencies: [
.package(url: "https://github.com/anomaddev/BoardingPassKit.git", from: "2.1.2")
]CocoaPods:
pod 'BoardingPassParser'import BoardingPassKit
let decoder = BoardingPassDecoder()
decoder.debug = false
let pass = try decoder.decode(code: barcodeString)
print(pass.passengerName)
print(pass.boardingPassLegs.first?.origin ?? "")
// Julian day-of-year β calendar date
if let flightDate = pass.boardingPassLegs.first?.flightDate() {
print(flightDate)
}BCBP stores flight date as a 3-digit day-of-year (001β366). Use JulianDateConverter or BoardingPassLeg.flightDate():
// Explicit year
let date = try JulianDateConverter.toCalendarDate(dayOfYear: 14, year: 2025)
// Infer year from scan date (handles year-boundary flights)
let date = try JulianDateConverter.toCalendarDate(dayOfYear: 14, relativeTo: Date())See packages/node/README.md for full documentation.
import { BoardingPassDecoder, DemoData, julianToCalendarDate } from 'boarding-pass-kit';
const decoder = new BoardingPassDecoder();
decoder.debug = false;
const pass = decoder.decode(DemoData.Simple);
console.log(pass.passengerName);
const flightDate = pass.boardingPassLegs[0]!.flightDate();
// or: julianToCalendarDate(14, 2025)# Node.js
npm install
npm run build
npm test
# Swift
swift build
swift test
# or
npm run test:swiftBoth packages include the same test fixtures: Simple, Historical, MultiLeg, and International.
MIT β see LICENSE.
Justin Ackermann