ATCMatch helps you create a SimBrief flight plan in just a few clicks — with the best VATSIM ATC coverage at departure and arrival; use the Route tab to check the enroute sectors in between. The airport search bar above is the central selector: picking an airport loads it straight away and refreshes the tab you are on; Departure, Arrival, ATC, Liveries and Map pick it up when you open them. Events, Optimal Routes and the Route tab go their own way — Route keeps the origin and destination you opened it with. Every workflow ends the same way: 🧭 Route on a result card opens the Route tab, and SimBrief ↗ there builds the dispatch URL. For enroute sectors, endpoint weather and departure shifting, see Route Deep Dive below. ATCMatch stops at the dispatch — file the plan in your pilot client and re-check who is actually online before you request clearance.
Every Select button throughout the app updates the central airport — the tabs that follow it pick it up the next time you open them.
Tip: Switching modes keeps both time windows; it clears the Code field and the current result list. Click Route Explorer in the mode switch to go back — your original arrival times are restored automatically.
Depart from here (take-off icon) — Sets the event airport as your origin and the first event hour as your departure window. Switches to the Arrival tab in Destinations mode (blue). You'll see the best destinations you can reach during the event, ranked by the ATC waiting for you there. (Whether the enroute sectors are staffed is a separate question — the Route tab answers it.)
Arrive here (landing icon) — Sets the last event hour as your arrival window and switches to the Arrival tab in Route Explorer mode (amber). The event airport is pinned as the first card (showing its true rank), even when it ranks below the result limit. Below each destination, suggested origins are shown — pick one to find the best departure airport for reaching the event.
Tip: Use Depart from here when you know where you want to depart from. Use Arrive here when you want to land at the event and need to find the best origin.
Tip: Great for discovering airports you've never flown to. The map shows the full ATC picture at a glance — no need to check individual airports one by one.
Tip: Perfect when you've just downloaded a new livery pack and want to take it for a spin on a realistic route with ATC. Works in reverse too: Real airlines in the Route tab shows who is scheduled to fly a route in the coming weeks, flagging airlines you have a livery for.
Tip: No bookings yet? The 📊 How Long Staffed and 📅 Spontaneous Staffing panels show how long positions typically stay manned and at which times of day this airport usually gets spontaneous ATC. Bookings show intent, not a guarantee — re-check before departure.
Tip: This is the fastest way to find a complete route with maximum ATC. No need to pick origin and destination separately — the system does it for you. Remember the rule for the whole mode: filters act at once, the search you start.
Tip: Ground traffic comes from a VATSIM snapshot updated every few minutes — re-run the search or reload the map for fresh numbers.
Tip: A perfect departure score means little if the enroute sectors are empty and the arrival weather is too poor to land — this is the two-minute check before every dispatch.
Tip: The realism upgrade — fly a route that exists, in a livery that flies it, on a weekday it actually operates.
—
Add airports you care about — see at a glance when they go live.
Start with your home airport:
—
⏳ Loading watchlist status...
| Airport | ▼ | |||||
|---|---|---|---|---|---|---|
|
|
||||||
Spontaneous staffing only — past observation, not a forecast.
A small background app that raises a desktop notification when a
watched airport goes live. It reads the
watchlist.json
this page writes. Linux is the tested platform.
✓ watchlist.json linked
⟳ Permission expired — browsers ask again once per session.
Not linked — the notifier has no list to read yet.
This browser cannot write the file — download it by hand after every change.
tar xzf atcwatch.tar.gz
Downloading with curl or wget needs an explicit user agent
(curl -A atcwatch/1.0 -O …) —
the server's bot filter answers the default one with 403.
./install.sh
from inside the unpacked
atcwatch/
directory, then start it:
systemctl --user enable --now atcwatch.service
~/atcwatch/watchlist.json.
From then on this page keeps the file up to date on its own.
Check delivery with the tray menu's “Send test notification”, or on the
command line — the working directory matters, otherwise Python picks the
wrong module:
(cd ~/.local/share/atcwatch && PYTHONPATH=$PWD venv/bin/python -m atcwatch --test-alert)
—
Every change is stored in this browser as soon as you leave the field — there is nothing to submit. Values that are not valid are refused and stay unsaved, with the reason shown at that field.
The alias, not the numeric Pilot ID — the ID cannot be changed and Navigraph advises against sharing it.
🔒 Kept in this browser and sent as a request header — never stored server-side, never put in a URL. Get a free Personal key ↗
Points at the livery_db viewer on your own machine; the 3D data never leaves your computer.
An empty URL means no button — it is not read as “use the built-in address”.
Prefills the airport search on start. A ?icao= link always wins over this.
The tab the app opens in. A ?tab= link always wins over this.
Marks the hours where someone is usually on frequency, even when nobody is booked.
→
→
→
Preview shows the window you would get right now. Changing them inside a tab affects only that one search. The other Arrival mode takes its window from the Departure tab.
Starting values for the Departure tab. Changing them there affects only that one search — “Save as default” over there is the way back into this block.
The same switches as in the header — shown here so every stored preference has one place.
Off by default — the exported file would otherwise carry a secret in plain text.
Everything on this page plus your aircraft configurations. Import validates the whole file before writing anything.
Deletes everything stored in this browser: accounts, keys, defaults and all aircraft configurations. This cannot be undone — export first if you want a backup.
How long a position typically stays staffed once someone logs on — the median of continuous staffing periods. ; "VATSIM-wide" counts every airport. Relief and handovers count as one continuous period, so this measures the position, not a single controller's session; brief sweeps are not counted as coverage.
How long a position typically stays staffed once someone logs on — the median of continuous staffing periods. Relief and handovers count as one continuous period, so this measures the position, not a single controller's session; brief sweeps are not counted as coverage.
|
·
|
Spontaneous staffing only — booked coverage and events are shown exactly in the ATC and Route tabs.
ℹ️ No country/region information available.
ℹ️ No runway information found for in the database.
Category
Scenery Count
Scenery Date
Ortho Patch
Yes
ℹ️ No scenery data found for in the database.
📡 No airport selected
Search for an airport first to see ATC data.
⏳ Loading ATC data...
📭 No ATC coverage on this day
Positions Timeline (00:00 - 24:00 UTC)
📭 No controllers on this day
—
Shows airports with at least minutes ATC coverage in the specified time range (UTC). From: now + min | To: now + h (Settings → Time windows)
Airports with ≥ min Coverage
Min. Score
Ground Traffic
💡 Tip: Click a marker for airport details, or the map itself to see who controls that spot • Select makes it your current airport (ATC, Liveries, Arrival origin)
—
Livery selection sets airline & ICAO per type — but not the flight number. Set it here once for easy SimBrief dispatch; types without an override below use this number.
Airframe from your own SimBrief account.
Saved per aircraft type. Enabled fields are sent to SimBrief when creating a flight plan. For add-ons without a public profile (e.g. Zibo or LevelUp), create an airframe in your SimBrief account and paste its internal ID above.
Only the airborne phases (Takeoff → Landing) make up the flight time. The ground phases decide where that flight sits on the clock: Preflight, Pushback and Start, and Taxi Out fall between the Ready at time this app offers you and wheels-off; Taxi In and Shutdown follow touchdown — with the defaults, Ready at 17:00 means off-blocks at 17:20 and takeoff at 17:35.
Only the ground phases carry an ATC box, and a ticked box means that phase needs ATC coverage — the outlined frame in the timelines extends to include it. The airborne phases (Takeoff → Landing) are always covered: that is exactly where TWR, DEP and APP work, so there is nothing to switch off. The three Origin boxes do one more thing: they set how far your takeoff sits behind the Ready at time, because that time starts at the earliest ticked origin phase. Untick Preflight and takeoff moves closer to it. Defaults are loaded from the aircraft type reference.
A coverage window is one uninterrupted span, so the ground phases drop out from the outside inwards — furthest from the flight first:
Preflight Pushback Taxi Out ▌ Takeoff Climb Cruise Descent Landing ▌ Taxi In Shutdown ▌wheels-off ▌touchdown ──── drop first ────▶ always covered ◀──── drop first
That is Preflight at the origin and Shutdown at the destination. A box closer to the flight stays greyed out until its outer neighbour is unticked; skipping one would move the window instead of shrinking it, leaving out minutes you ticked and checking a phase you did not.
—
⏳ Loading events...
📭 No events found
No events available for .
All event(s) on are hidden by your filters.
💡 No airport matches ICAO — clear the filter to show all.
💡 Past events are hidden — uncheck "Hide Past" to show all.
Type:
🔗 LinkStart
End
⚠ — implausible duration, check event page
✈️ Airports:
🤔 Maybe — check bookings:
🎮 Controllers:
🏢 Organizer:
Source:
—
✈️ Please search for an airport first
Liveries are loaded by the airport's country.
⏳ Loading liveries...
📭 No liveries found
Try adding more ICAOs.
⚑ Filters active
(defunct) (fictional)
Airline Wikipedia ↗
Saves airline, ICAO code and registration into Flight Setup on the Aircraft tab, and switches the aircraft type there to match this livery.
🔍 Mouse wheel over the image zooms in and out.
—
—
—
⏳ Loading top airports...
📭 No airports found
Please enter a time window and click "Refresh".
✓ Saved to Settings → Optimal Routes defaults — used for every new session
Search parameters changed — press Find Routes to update
Loading optimal routes...
No routes found
The last search did not complete — the list is empty because of an error, not because nothing matched. Try "Find Routes" again.
APP/DEP was on: it asks for APP or DEP at the origin from the departure onwards and APP at the destination over the approach up to touchdown. Unchecking it, a wider Max Delay, a higher Count or a lower coverage step widen the search.
Set a time window and click "Find Routes".
—
—
—
⏳ Loading top destinations...
📭 No origin airport selected
Please select an airport from the search first.
📭 No destinations found
Distance from
Flight Time
ctrl
Slots:
ATC overall: · Coverage
Flight & Arrival
Takeoff:
Flight Time
Arrival:
APP:
For ATC at →
ctrl
Slots:
· Coverage
Timing
Flight:
Arrival:
Ready at:
⏳ Loading origins...
✈ Suggested Origins (- NM):
Each origin has its own departure window — takeoff times, the arrival window minus that origin's flight time. Every number on a badge refers to that window, so two origins at different distances show different times. Sorted by weighted score → coverage %. Clicking a badge sets it as origin; the Departure tab takes over that window as its Ready at time — the gate time that leads to those takeoffs, so it reads earlier by your ticked departure phases.
ICAO — Airport code. Score — Weighted score (0–5, one decimal), color-coded. ✈ count — VATSIM pilots on the ground (live). ATIS — Active ATIS info.
🌐 — Scenery map link. Distance + time — NM and estimated flight minutes. Coverage % — how much of this origin's own departure window has ATC. ATC time — Slot range within this origin's departure window.
⏱ Window passed — greyed-out badge: this origin's departure window is already over. Coverage % and ATC times describe that past window, while the weighted score counts only what is still flyable — hence 0.
No origins with ATC found in range
—
🧭
No route selected yet.
Use the 🧭 Route button on an Arrival destination card or a Departure optimal route — or enter two ICAO codes above.
Days:
No sector data along this route.
No sector data along the SimBrief route.
No SimBrief route yet — generate the plan (SimBrief ↗), then press “Get SimBrief route”.
No sector data.