User guide
Connect airports, compare alternatives and draw range circles. Draw them by hand, or describe a whole Map in a readable link.
01 / Draw legs
Your first Path
Write an expression
Type an expression in the Draw legs field and press Enter or the arrow button. Every resolved Leg is added to the active Path.
HEL-JFK
HEL-(JFK,LAX)
OUL-HEL-LHR
HEL@200nmExpressions accept ICAO and IATA codes in any case. A hyphen makes one Leg for each adjacent pair, so OUL-HEL-LHR is two Legs. A return such as HEL–ARN–HEL is two Legs as well.
Comma-separated alternatives in parentheses expand into one Leg per alternative. The whole expression is resolved first: an unknown or ambiguous code changes nothing.
While you type, the field suggests airports for the code under the cursor. Each hyphen, opening parenthesis or comma starts a new search, so you can also type a name or city such as Helsinki-new york. Larger airports come first, and an exact code match stays in the first two suggestions. A city code such as LON or NYC suggests that city’s airports.
While you type a name or a partial code, the best match is preselected, so Enter takes it; tap a suggestion or use ↑ / ↓ to choose another. The choice replaces the typed text with the airport code. When the code under the cursor already matches one airport, Enter draws the expression.
Use a Leg card
Build one Leg at a time from an empty card:
- In an empty Leg, type an airport code, name or city, for example
EFHK,HELorHelsinki. Results appear after two characters. - The best match is preselected, so Enter takes it; pick another with the mouse, or with ↑ / ↓ and Enter. The airport appears as a chip.
- Add the second airport. Orthodrome draws the Leg along the great circle and shows its distance.
- Choose Add leg for another Leg in the same Path, or New path for a separate Path with its own colour.
Pick airports on the map
Click an airport to fill the active Leg. When both airports are set, the next click starts a new Leg from its arrival airport. Click a chip to replace it; Reverse swaps the two.
Import your flights
Choose Import flights in the top bar, in the phone menu or in Commands, then pick a CSV export from Flighty or my.flightradar24. Orthodrome reads the file in your browser and never uploads it. Canceled flights are left out, a diverted flight ends at the airport where it landed, and rows with an unknown airport are listed as skipped.
- Choose One path per Month, Year or Trip. A Trip ends when you land at your Home airport, or after 30 days without flights; Orthodrome suggests the airport where you spend the most time between flights. Each Trip is named after the place you stayed longest and the month it began.
- Narrow the Years if needed. A Map holds up to 100 Paths and 500 Legs, and the preview says when the import would not fit.
- Keep Merge repeated routes on to draw each airport pair once per Path, whichever way it was flown. Turn it off to keep every flight as its own Leg.
- If the Map already has Legs, choose Replace current map or Add to current map, then Import. The imported Paths start collapsed in the dock.
02 / Map & settings
Map controls
The settings sit in the map’s top-left corner. On phones and tablets they open from Map settings and close with Esc or the same button, so they do not cover the map while you work.
- Globe / Mercator / Equal Earth
- The default globe; a flat Mercator map that repeats across the date line and cannot show the poles; or a flat Equal Earth map that keeps areas true to scale and shows the whole world, both poles included. All three draw the same great-circle Legs.
- Range winds: Still air / Winds / Both
- Still air draws each Range circle as a plain radius. Winds redraws it as the reach along direct routes in the mean winds of the chosen period. Both draws them together, with the still-air circle as a reference line in the opposite line style. Legs between two airports keep their geometry; only their time estimates follow the winds.
- Wind period
- Which mean winds to use: the annual mean by default, or one month. It appears next to the switch while Winds or Both is on.
- km / mi / nm
- Show distances in kilometres, statute miles or nautical miles; speeds follow as km/h, mph or knots. Changing the unit never changes a Leg or a Range radius.
- All / IATA / Major / Hide
- Show every airport, only airports with an IATA code (default), only major airports (those with at least 15 million passengers a year), or no background airports. Your Legs stay visible.
- ICAO / IATA
- Which code to prefer in map labels, Leg titles and examples. IATA is the default when opening the site. Airports without an IATA code fall back to ICAO. This changes labels, not the airports you chose.
- Filter airports
- Narrow the background airports by code, name, city or country. The count in the corner reports matches. The filter combines with All / IATA / Major / Hide and does not limit Leg search. Clear it with ×.
- Fit paths
- Zoom the map to every visible Leg. Each Leg card also has its own Fit action.
- Share
- On phones and tablets the Share button in the map’s lower-left corner opens a sheet with a ready Story and Post image, a Video preview, Copy link, Edit image and Edit video; see section 07.
- + / − · Show my location · Reset map view
- Zoom in steps, centre the map on your device location after a browser permission prompt, or return to the default view. Your location is never added to a Path or a link.
Drag to pan; scroll or pinch to zoom. The map stays north-up: it cannot be tilted or rotated in any projection. In Equal Earth, dragging sideways turns the central meridian instead of panning. Hover an airport for its code and name. Click a Leg on the map to see its Path, its title and distance or radius, and to open its card.
03 / Dock, paths & legs
The dock and the top bar
On desktop the dock holds Draw legs, the Path list and the dock actions. It is 360 px wide by default and can be dragged between 260 and 460 px; the browser remembers the width. The Path list scrolls while the actions stay at the bottom.
On a phone, the route field sits above a large map. Scroll below the map to edit Paths and Legs or open Compare. The field still suggests airports as you type and shows any input errors.
Top bar
On a phone, the top bar shows Orthodrome, the Highlighted maps star, Theme and Open menu. The menu starts with Import flights, then Guide, Updates, Info and Privacy, followed by Our socials with Bluesky, Instagram and X links. On larger screens, the social links are in the top bar. A box-and-arrow icon marks links to external pages, licence files or a new tab. Shortcuts and Commands also appear when using a mouse; keyboard shortcuts still work with an external keyboard. To copy a link on a phone, open Share in the map’s lower-left corner and choose Copy link.
- Guide · Info · Privacy
- Open this guide, the data sources with licences and terms, or the privacy policy as a dialog over the map. Each dialog also offers Open as a page for sharing or printing.
- Shortcuts · Commands
- The keyboard reference and the searchable command palette; see section 06.
- Theme
- Switch between Midnight (dark) and Frost (light). The choice is remembered in your browser and used on every page.
- Import flights
- Turn a Flighty or my.flightradar24 CSV export into Paths, one per month, year or trip; see section 01.
- Share
- On desktop the top bar has a Share menu with Image (S), Video and Copy link; see section 07.
- Copy link
- Copy every Path and completed Leg, with names, colours, line styles and aircraft families, plus the wind setting and the Map’s default aircraft family, as a link; see section 08. Hidden Legs are included and open visible. If the clipboard is blocked, a text box lets you copy manually. The address bar follows your edits, so copying the browser address gives the same Map.
Dock actions
- New path
- Create an empty Path with the next palette colour and make it active.
- Hide all / Show all
- The eye hides every Path on the map or shows them all again. Hide all first, then use the eye on a Path header to bring Paths back one at a time.
- Collapse all / Expand all
- The double chevron collapses every Path’s Leg list in the dock or opens them all again. Like the chevron on a Path header, it changes nothing on the map.
- Clear all
- Remove every Path and Leg and start again with one empty Path.
- Compare
- Open or close the comparison below the map; see section 05.
Path header
- Active path
- Click the number badge or the name to make a Path active. New Legs, Draw legs and map clicks go to the active Path.
- Name
- Paths are unnamed by default. Choose + name on the header, or Rename path in the menu. Names appear in the dock and in shared links.
- Totals
- The number of completed Legs and their total great-circle distance. Ranges count as Legs but add no distance. Hidden Legs are included.
- Hide / Show
- The eye toggles the Path on the map. A hidden Path and its Legs are struck through in the dock; they stay in the dock and in shared links.
- Menu (…)
- Rename, change colour, add a Leg, hide or show the Path, switch between solid and dashed lines, or delete the Path. The last remaining Path cannot be deleted.
- Collapse
- The chevron hides the Leg list in the dock. Collapsing does not hide anything on the map.
Leg card
- Title
- Computed from the two airports or the Range. A
leg.namein a link is kept as metadata but is not shown or editable. - Open card
- Click the title to open or close the editor. The active card shows Fit and Hide/Show icons and, for a Leg with two airports, a Reverse button between the chips.
- Menu (…)
- Reverse or duplicate the Leg, Hide from map or Show on map, set its line style, move it up or down, move it to another Path, or delete it. With a card focused, Alt + ↑ / ↓ also reorders it.
- Line style
- Legs inherit the Path’s solid or dashed style unless set to Solid or Dashed individually. Switching the Path’s style resets those overrides to Inherit.
04 / Range circles
An airport and a radius, or a flight time
In an empty Leg, type EFOU@200nm and pick the result. Orthodrome draws a circle 200 nautical miles from Oulu. Draw legs accepts the same form, but a Range cannot be combined with a chain in one expression.
EFOU@200km
EFOU@200nm
EFOU@200mi
EFOU@12.5km
EFOU@4h30
EFOU@45minIn the search field the radius may use a decimal point or comma and a space before the unit; without a unit it uses the current display unit. In a link the radius uses a decimal point and defaults to kilometres. The radius must be positive and smaller than half the Earth’s circumference, about 20 015 km.
Time-based Ranges
Write a time instead of a distance and the Range becomes the reach of the Path’s aircraft family. For example, EFOU@4h30 uses four and a half hours.
Accepted forms are 4h30, 4h, 4:30, 4.5h and 45min. The value is stored in minutes and shown as 4h30, under 100 hours.
The family’s taxi, climb and descent allowance comes off the top; the rest is flown at cruise speed. Change the family in the Path and the circle changes with it. A time shorter than that allowance draws nothing.
Edit a Range
A Range occupies a whole Leg and its card shows two chips. It has no time estimate of its own and cannot be compared.
- Click the centre chip to clear the Range and choose a new centre.
- Click the value chip to edit its radius or flight time. Enter applies; Escape cancels.
- Use colour, line style, visibility and Fit as for other Legs. Changing the display unit keeps the same physical radius.
What winds change
In wind mode, Orthodrome turns the typed still-air radius into a cruise time. It flies that time along direct great-circle routes through mean winds. Downwind the circle reaches further; upwind it reaches less.
The Range’s Path supplies the aircraft family and typical altitude. Two Paths can therefore draw different reaches from the same centre and radius. Click a circle to see its period, family, altitude and shortest and longest reach.
Turn on winds
- Set Range winds to Winds or Both in Map settings.
- Use Wind period for the annual mean or one month. The annual mean is the flatter starting point; a month shows seasonal patterns such as the winter jet stream.
Read the results
- Boundary
- It shows direct routes in mean winds, not the largest reachable area. A detour could find better winds. Treat it as a climate comparison, not a forecast or flight plan.
- Time estimates
- Leg times in the dock, Compare and map popup use the same winds and aircraft. In Both, the estimate also shows the difference from still air. Taxi, climb and descent are added as before.
- Both
- Keeps the still-air circle as a reference in the opposite line style. Switching mode, period or aircraft animates the shape unless reduced motion is enabled.
- Unreachable directions
- When wind is stronger than cruise speed, the circle pinches towards its centre and shows the count. If wind data cannot load, circles stay in still air and the map says so.
Open an annual-mean wind-corrected circle Open January against still air
05 / Compare
Every Leg on one distance or time axis
Compare in the dock, or C, opens a panel below the map. Every completed Leg is a dot on a shared axis, so rows stay comparable even when you hide a Path. Ranges and empty Legs are left out.
The Axis switch places dots by distance or estimated time. Hidden Paths and Legs leave the axis; the axis itself does not move. Your choices stay while the panel is closed.
Until you resize it, the panel follows its rows and stops at two fifths of the window. On desktop, drag the divider or focus it and use ↑ / ↓. Home and End select the smallest and tallest allowed height. The browser remembers it. On phones and tablets the panel follows the page and has no divider.
- Rows
- Choose Path, Destination or Origin. Path rows can draw a single Leg or an unbroken chain at its running distance. A ring marks the total and a detour percentage compares it with the direct route.
- Aircraft · speed
- Path rows show the family and cruise speed, with a selector for that Path. Destination and Origin rows summarise the families among their Legs.
- Time
- Path rows show the estimate for the Path’s family. Destination and Origin rows show the number of Legs when more than one is present.
- Axis
- Distance runs from zero to the longest distance in the Map. Time runs to the longest estimate, using each Path’s own aircraft family and, while a wind mode is on, the mean winds of the chosen wind period — so the same Leg can move along the axis when you change an aircraft or the period. A Leg that cannot be flown in those winds has no dot on the time axis, and a chain stops at it.
- Sort and filter
- Order rows by total distance, total time, number of legs, shortest or longest leg, or name. The filter matches a Path name, a Leg title, an airport code, a city or an aircraft family.
- Aircraft family
- Compare’s field sets the Map’s default family, which links carry. Type to search, choose with ↑ / ↓ and confirm with Enter; Escape keeps the current family. The list includes generic, commercial, regional, turboprop, business, general aviation and historic families.
- Time allowances
- Each family has a typical cruise speed and a per-Leg allowance for taxi, climb and descent: 24 minutes for jets, 18 for turboprops, 12 for piston aircraft, 9 for early airliners, 6 for helicopters, the earliest aircraft and airships, and 36 for supersonic aircraft. Speeds use your display unit.
- Set a Path’s family
- A Path without its own family uses the default. Pick a family in its ⋯ menu or in the Aircraft column; that Path’s estimates then follow it.
Click a dot to pin that Leg: it becomes the active Leg in the dock and a vertical line marks its distance across every row. Hover or focus another dot to read the difference in distance, per cent and minutes. Click a row name to make that Path active and highlight its row; in Destination and Origin rows it filters by that airport instead.
In still air, estimated time is distance ÷ cruise speed plus the family’s per-Leg allowance. Wind modes use the selected mean winds. Neither accounts for current weather, operational routing or airspace; see the terms of use.
06 / Keyboard & commands
Shortcuts and the command palette
Commands in the top bar, or ⌘/Ctrl + K, searches every action, including those for the active Path and Leg: rename or recolour the Path, replace a Leg’s airport, change its line style or move it to another Path. Type to filter, ↑ / ↓ to choose, Enter to run. Shortcuts, or ?, shows the reference below.
- G D / G M
- Focus Draw legs / focus the map settings.
- N / A
- New path / add a Leg to the active Path.
- C / T / F
- Compare / switch theme / fit paths.
- S
- Make image: draw an image of the Paths shown on the map.
- R / H
- Reverse / hide or show the active Leg.
- Alt + ↑ / ↓
- Reorder the focused Leg within its Path, or the focused scene in the video studio.
- Esc
- Close the open tooltip, menu, dialog or map settings. A closed dialog returns focus to where you were.
- Tab / Shift + Tab
- Move between controls; tooltips describe the focused control. Enter on an open, completed Leg card adds a new Leg.
Letter shortcuts pause while you type in a field or use a menu; ⌘/Ctrl + K always works. Commands also offers Focus map (arrow keys pan, + and − zoom), Resize path dock (← / →, Home / End) and, while the comparison is open, Resize comparison (↑ / ↓, Home / End). On phones and tablets, the Map settings and Filter airports commands open the settings before moving focus.
08 / Links & syntax
Readable links, from one Path to hundreds
Choose Copy link to share your work, copy the address bar, or write the part after # yourself. The address bar follows your Map as you edit, so reloading the page keeps your work and the browser address is always a shareable link. Opening a link replaces the whole Map; an invalid link leaves the current Map intact.
/#v=2&path=Nordic&leg=HEL-ARN&leg=ARN-OSLRead left to right: path= starts a Path and each following leg= belongs to it until the next Path. A leg= before any path= starts an unnamed first Path, so the shortest Map is #v=2&leg=HEL-ARN. #v=2 alone opens an empty Map. Only v2 links are accepted.
Path expressions
| Expression | Result |
|---|---|
path=Nordic&leg=HEL-ARN | A Path named Nordic with one Leg. |
path=Nordic&leg=HEL-ARN&leg=ARN-OSL | One Path with two independent Legs. |
path=Ranges&leg=OUL@200nm | A Range centred on Oulu. |
path=Nordic&leg=HEL-ARN&leg.name=Outbound | A Leg with optional metadata; its title stays computed. |
wind=jan&path=Jets&path.aircraft=a320&leg=HEL@3000km | A Range drawn in January’s mean winds for an A320. |
wind=jan,both&path=Jets&leg=HEL@3000km | The same Range with the still-air circle kept as a reference. |
wind=year&path=Jets&path.aircraft=a320&leg=HEL@3000km | The same Range in the annual mean winds, the default period. |
leg= is atomic. A Leg has exactly two airports, or it is a Range written as airport@radius or airport@time. Empty Legs stay in the editor and are left out of links.Open one Leg Open a two-Leg Path Open expanded alternatives Open a Range
ICAO and IATA codes can be mixed and are case-insensitive. Links use exact codes, not names or cities. If a code is ambiguous, write icao:EFHK or iata:HEL; when several airports share an IATA code, use their ICAO codes. Whitespace around codes and separators is ignored.
All URL parameters
v=2- Required first parameter. A repeated version parameter is rejected.
highlight=2026-09-15-lapland-christmas-flights- Optional. Marks the link as a highlighted map so the map names it and shows its description above the canvas. Only the links on the Highlighted maps page carry it; Copy link never writes it.
wind=year- Optional. Draw range circles in mean winds: year for the annual mean, or one month as jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov or dec. Add
,both—wind=jan,both— to keep the still-air circle beside the wind-corrected one. Copy link writes it only while a wind mode is on; without it the map opens in still air. aircraft=a350- Optional. The Map’s default aircraft family by its id, used by every Path without its own
path.aircraft. Copy link writes it only when the default is not the single-aisle jet; without it the map opens with that default. Unknown ids fall back to the default. path=Nordic- Start a Path and optionally name it. The first Path may be left implicit: a
leg=before anypath=starts an unnamed Path with the default colour. path.color=blue- Colour of the current Path: yellow, blue, green, pink, purple, orange or six hex digits without #. Without it, Paths take green, pink, yellow, blue, purple and orange in order, then repeat.
path.style=dashed- Line style of the current Path: solid or dashed.
path.aircraft=b777- Aircraft family of the current Path by its id, for example a350, b777 or concorde; omit it to inherit the Map default. Unknown ids fall back to the default.
leg=HEL-ARN- Add one Leg to the current Path.
leg=OUL@200nm- Add one Range. The radius uses a decimal point and an optional km, nm or mi suffix; without a suffix it is km. A flight time such as
OUL@4h30orOUL@45mindraws the reach of the Path’s aircraft family instead; links write it as4h30. leg.style=solid- Line style of the current Leg: solid, dashed or inherit.
leg.name=Outbound- Optional Leg metadata; the title shown is computed from the content. Copy link writes it only when it differs from the computed title.
Property parameters apply to the current Path or the most recent Leg, so leg.name and leg.style need a preceding Leg. If a property repeats, the last value wins. Parameter names are case-sensitive; colour and style values are not.
A complete Map
Three Nordic Legs and two dashed Ranges:
/#v=2
&path=Nordic
&path.color=blue
&leg=HEL-ARN
&leg=HEL-OSL
&leg=HEL-CPH
&path=Ranges
&path.color=orange
&path.style=dashed
&leg=HEL@200nm
&leg=OUL@200nm
Line breaks are for readability; the real URL is one line.
Open this MapNames and special characters
Names can contain Unicode. Encode a space as %20, an ampersand as %26, a plus as %2B, a hash as %23 and a percent sign as %25; an unescaped + is also read as a space. For example, path=Summer%20%26%20winter names a Path “Summer & winter”. Copy link encodes names for you.
What a link preserves
A link preserves Path and Leg order, airports, radii, names, colours and line styles, including Inherit, as well as each Path’s aircraft family, the Map’s default aircraft family and the wind setting.
Copy link writes an unambiguous IATA code where one exists, otherwise ICAO. It writes radii in kilometres with enough precision to keep their size, and includes only properties that differ from defaults. Opening the short link gives the same Map.
Not stored are camera position, projection, display unit, theme, other Compare choices, airport filters, your location, and hidden or collapsed states. An opened link shows every Path and fits the view to every Leg. A fresh page uses default settings.
Changing the fragment in an open Map keeps current settings. Clearing the fragment gives one empty Path, and an empty default Map clears the fragment.
The address bar keeps the link exactly as you opened it, including highlight= and a highlighted map’s short address, until your first edit. Edits then replace the fragment in place: the back button is not affected, and a highlighted map you have changed is no longer marked as one.
Highlighted maps
Highlighted maps are hand-made Maps that ship with the service. Each one is an ordinary v2 link, so opening it replaces your Map exactly as any shared link would — choose Copy link first if you want to come back to your own work. The map then shows the highlighted map’s name and description above the canvas until you dismiss it.
Every highlighted map also has a short permanent address of its own, such as /2026-09-15-lapland-christmas-flights/, which redirects to the full v2 link and opens the map with those Paths loaded. The list is on the Highlighted maps page and in the top bar; what changed and when is on the Updates page.
Limits
A link holds up to 100 Paths, 500 Legs, 1 000 airport occurrences and 64 KiB of encoded text. Each airport in a Leg or Range counts as one occurrence. Path names, airport search and the airport filter accept 256 characters; longer pasted text is shortened. Draw legs rejects expressions over 256 characters.
Alternatives keep handwritten links short. Copy link warns when a URL exceeds 8 192 characters, because some sharing services truncate long URLs. The link contains the whole Map; nothing is saved on a server.
09 / Troubleshooting
If something is missing
- A link reports an error
- The message names the parameter and, where possible, the Path. Check codes, separators, units, property values and limits. Unknown parameters are errors, so a typo cannot silently change the Map. Fix the URL and open it again; nothing is imported partially.
- Draw legs or a link rejects a Leg
- A Leg needs two different airports:
HEL-HELis an error in Draw legs and in links alike, and an alternative such asHEL-(HEL,ARN)is rejected as a whole. To mark a single airport, draw a range circle such asHEL@200nm. - Airport data is still loading
- Links and Draw legs need the airport catalogue. If it fails to load, the map retries every 30 seconds; Copy link stays disabled until then.
- Copy link did not copy
- Your browser may block clipboard access. Use the text box that appears and your usual copy shortcut. If the Map exceeds a limit, reduce it before sharing.
- Share or Copy image is missing
- The browser cannot share files or copy images from a web page, as in some desktop browsers. Use Download PNG and attach the file yourself.
- Export MP4 is not available
- Making an MP4 needs a browser that encodes H.264 video. If Landscape 4K is unavailable, use the vertical format; the studio explains the limitation. The studio also names the reason when a video would be too long, when every scene is off, or when Race has fewer than two participants with an estimated flight time. If the export stops because the page went to the background, keep it open and try again.
- The image could not be made
- Drawing the image needs WebGL, like the globe and Mercator map, even when the map shows Equal Earth. Try again, choose another format, or reload the page if the map itself has stopped drawing.
- An airport or Leg is missing
- Check the airport filter and All / IATA / Major / Hide, then the Path and Leg visibility. The Leg may also be on the far side of the globe: use its Fit action.
- No rows in Compare
- Clear the filter or show a hidden Path. Ranges and empty Legs are never compared.
- The map is blank
- The basemap and airport data are separate files served with this site. Reload once you are back online.