How it works
What happens when you use the generator, where the numbers come from, and why some fields stay blank.
Last updated 6 September 2026
Step 1: the trip
Choose one-way, return or multi-city, then search for your airports. The search covers IATA codes, ICAO codes, city names and airport names, and runs against a dataset baked into the site — not a live API — so it responds immediately and works with a poor connection.
Choosing a return trip prefills the second leg with the reverse of the first. Multi-city lets you add as many legs as you need. As soon as two airports are selected the live summary shows the great-circle distance and an estimated flying time.
Airline code and flight number are optional. They are illustrative: entering BA 112
does not check whether that flight exists or flies your route.
Step 2: the passenger
A name and title. Email and phone are optional and display-only. Everything you type stays in your browser — there is no account and nothing is transmitted.
Do not enter passport numbers, payment details or anything else you would not want printed on a demonstration document. The generator has no field for them, deliberately.
Step 3: the preview
The sample renders with the watermark composited into the document itself. You can print it, save it as a PDF through your browser's print dialog, copy a plain-text summary, or take a shareable link.
How the numbers are calculated
Distance is the great-circle distance between the two airports' coordinates, computed with the haversine formula on a sphere of radius 6,371.0088 km. This is the shortest path over the surface — real flight tracks are a few percent longer.
Flying time is an estimate from distance alone: roughly 840 km/h cruise plus a fixed 35-minute allowance for taxi, climb and descent. It is not an airline schedule and takes no account of winds, which is why the same route is genuinely faster eastbound.
Arrival time uses each airport's IANA time zone, resolved for your actual travel date so that daylight saving is handled correctly, and flags any change in the calendar date. The full detail is in methodology.
How sharing works without a server
When you generate a sample you get a link like /itinerary/#1Nq8kW…. The whole
itinerary is compressed and encoded into the part after the #.
That matters for a reason worth stating: browsers never send the fragment of a URL to the server. The itinerary exists only in the link itself and in the browser of whoever opens it. There is no database of generated documents, no retention period to disclose, and nothing for us to hand over or lose. It also means we cannot recover a link you lose — the link is the document.
Generated itinerary pages are marked noindex and excluded from the sitemaps, so they
do not appear in search results.
What the output deliberately omits
The booking reference and e-ticket number print as SAMPLE — NOT ISSUED. There is no
barcode, no QR code, no airline logo and no boarding pass output.
These are not oversights. Those fields are the ones that would make the document checkable, and there is nothing behind it to check. A blank reference costs you nothing if you are planning a trip, and removes the only reason to use the tool dishonestly. The full reasoning is in the PNR guide and acceptable use.
If you need a real document
A held reservation, a refundable fare or a changeable ticket all produce a genuine booking reference and survive verification. See reservation vs ticket for the options and what each costs.