Enter the session code, your position and your station name.
WARNING: there are known limitations, see the list under "Need Help"!
Enter a session code + your position (GND/TWR/APP/CDC/TAC/OPS) + station name to join a live shared session. Or click Local to work offline.
↻ Resume at the bottom = auto-rejoin the last session (<24h). Sessions inactive for more than 3h are deleted — except a squadron session, which is permanent.
Signed in with a squadron (same code as on vATO): ▶ Squadron session opens the session that belongs to that squadron. It always exists, keeps its strips and its bays, and is never swept.
Default profiles: GND/TWR ×3, APP ×3, CDC ×2, TAC ×4 — pick one in the position rail (GND / TWR · APP · CDC · TAC) at the start of the tab row — the number next to each is how many strips it holds.
Ctrl + KCommand bar — a callsign then an order: DEADLY11 TXG (also the Ctrl K tag in the search field)
Ctrl + C / VCopy / paste a strip — the callsign auto-increments
Ctrl + ZUndo the last action (a whole “assume all” counts as one)
DeleteRemove the strip under the mouse
Ctrl + clickHide / show a strip (a whole linked group at once)
Shift + dragMove a strip or a group without opening any field
Enter / EscConfirm / cancel the field being edited
Right-clickStrip or empty area: new strip, assume, transfer, print, link, hide…
STRIPS › + New (top bar) → new strip in the default bay. Right-click an empty bay → New strip for a full form.
Pick a format from STRIPS › Format ▾: MIL (military), STD (civilian), ENR (en-route), FPS (IFR clearance). Each card shows a live preview — pick the one that matches how you work. Strip size (−− − ● + ++) is in BOARD › Display ▾.
STRIPS › ⇩ Import (top bar) creates many strips at once from what you already have: paste (Ctrl+V) a selection from the ATO / Google Sheets / Excel, a CSV, a Discord table, one or several real ICAO flight plans (FPL-…) — type, times, level, route, RMK/ and the ETA (ETD + EET) are read —, or type one flight per line (DEADLY11-14 F16C IFR OMAM OMAM 2411). Columns are recognised by their headers (CALLSIGN · TYPE · RULES · DEP · DEST · ROUTE/FPL · SQK/IFF · FL · ETD · ETA · SQUADRON · RMK), Squadron : / TASKING : / Flight Rules lines apply to their block, merged cells fill down, 2411 S. gives each wingman the next squawk, and DEADLY11…14 become a linked formation. Requested level goes to RFL + REQ Fxxx in the remark (ALT stays yours). Check the editable preview, pick the final format, page and bay, then CREATE. The TYPE you enter for a squadron is remembered for next time.
LOTATC › Recent picks ▾ (top bar) lists the aircraft you recently clicked in LotAtc — tap one to create a strip pre-filled with its callsign / squawk / track number.
BOARD › Display ▾ › Tablet mode switches to tablet mode: long-press to drag, tap a field for a big finger-friendly picker, swipe the top bar. Synced with everyone regardless of device.
Strips in Pending / Taxing bays auto-collapse to a compact bar; a strip moved from Pending to Taxing opens by itself. Ctrl+C copy · Ctrl+V paste (callsign auto-increments).
Click any value to edit it inline. The bottom row holds WP / ALT / SPD — click the value to type, or ▾ for the preset menu.
WP (Direct-To) takes a route fix (SODRI). The targeted waypoint gets a black box; route points before it are greyed (passed). Re-typing the route clears the greying automatically.
ALT / CFL accepts a level (F250) or the keywords LND / APP (suggested as you type). Level-by: type WPT/Fxxx or Fxxx/WPT (e.g. RIGVU/F150) → the route point shows an amber @F150 tag. WPT/ clears it.
SPD accepts knots (250) or Mach (0.81). Add a sign for a restriction: + = "or greater" → ▲, − = "or slower" → ▼. Example: +0.85 → 0.85▲.
Flight state box (top, next to Rules): free text with keyword suggestions — STBY · PEND · SUG · MR · DECO · TXI · ALU · T/O · TSIT · ENR · CTL · RTB · GA · EMER · CLR. It is shared with every controller and colours the right edge of the strip (see Display).
Ctrl+Z = undo last local action.
Drag & drop a strip into another bay or to reorder it — a blue line shows where it will land.
Shift + hold + drag moves a strip (or a whole linked group) without triggering any editable cell. Release to drop.
Assume (right-click → Assume this strip) = the strip is yours: green bar on its left edge. A strip assumed by another controller is theirs — LotAtc comments don't move it for you.
Assume all on this page (right-click anywhere on the page) takes every free strip in one go. Strips held by someone else stay theirs, and a formation is taken whole or not at all. Release all mine on this page does the reverse — handy at the end of a shift. One Ctrl+Z undoes either.
Changing position (the position switch in the top bar) releases every strip you held, on every page — your traffic goes back to free for the controller who takes over. One Ctrl+Z takes them back.
Transfer (right-click a strip): pick a position — GND / TWR · APP · CDC · TAC · CUSTOM — then its page; the number is how many strips are already there. The strip and its whole formation land in the matching bay, released, ready for the next controller to assume.
Right-click a strip → Link a strip. Set a group name (e.g. WSEL45), tick the strips to include → Apply.
Each group gets its own coloured outline. Linked strips share HDG / ALT / SPD / Route. Assuming one assumes the whole group. Moving one moves the group.
A linked group stacks into one strip with folder tabs on the right edge (W45, W46…). Click a tab to switch which member is displayed. Double-click a tab to peek: the member pops out as its own floating strip — drag it anywhere, ✕ tucks it back into its tab. Handy for keeping an eye on a wingman without losing the leader.
Right-click → Hide → compact callsign bar (position kept in bay). On a hidden strip: right-click → Unhide.
Hiding is personal: it only affects YOUR screen — the other controllers keep seeing the strip normally. De-clutter freely, nobody else is impacted.
Ctrl+click = quick hide, and Ctrl+click again on the masked bar = show. On a linked group both act on the whole formation at once (double-click or the eye icon on any masked member also brings the whole group back). Callsign stays editable while hidden. Right-click empty area → Show all hidden.
Click the IFF / SSR code to enter the Mode-3 squawk (octal 0-7).
Duplicate code on another strip → turns red with ⚠ ALREADY ASSIGNED. Visual only, no sound.
Emergency codes 7500 / 7600 / 7700 flash the whole strip red.
Click a column number to step the sequence: Approach greyed → struck + Final greyed → + Runway → all done (dark). Right-click a number = reset. ◀ ▶ = 10 pages of 3 columns.
Click a cell to type. Keyword suggestions (blue): Approach RV/RADAR/DCT/PROC/NO GYRO · Final AV/BREAK/LF/TCN/VOR/ILS/GCA/SRA/RNP/RNAV/NDB/OPTION/TGO/TOUCH · Runway FS/Full Stop/TGO/GA/G-A/LowAPP/LowGO.
Strip arrow ▼ → INFO panel → write the message → right-click → Send Request. Pick the recipient (online or not).
They get a flashing alert with ✓ APPROVED · ✕ UNABLE · ✎ EDIT (amend before sending back). Pending strip = green (max 1 min). Bell button recalls the last notification.
▲ button (bottom-right) opens the SQK + Notes panel. Drag its header to move; drag the bottom-right corner to resize. Position and size are remembered.
AUTO ▸ (panel header): the FROM–TO ranges of the channels form a squawk pool — every strip of the page without a code gets the next free one (bay order, codes already used and 7500/7600/7700 skipped). A formation gets an aligned block so the last digit is the ship number — after 2655 a 4-ship takes 2661·2662·2663·2664, never 2656→2661. With a range set, a strip created by + Strip / New strip / Import receives its code automatically.
4 SQK channels with renamable labels (octal 0-7) + free notes per page. Label adapts to the page (SQK TWR / APP / CDC / TAC). Synced between controllers.
Right-click a strip → Print. Choose scope (this strip / its group, or the whole bay) and format:
Standard = full strip · Compact = one line per strip · PNG image = downloads each strip as a 770×106 picture, ready to drop into a briefing or Discord. Allow pop-ups in your browser for the print window (PNG doesn't need them).
Start the bridge on your PC with START.bat (read-only — it never creates strips). Click an aircraft in LotAtc → matching strip gets a cyan ring and scrolls into view. Match priority: squawk → callsign → track number. No match = nothing happens.
To lock the bridge onto a specific strip: right-click → Assign Track Number → type the aircraft's TN. The strip will be found by TN even without an exact squawk or callsign.
Comment keywords (bridge v1.1+): type a code in the aircraft's LotAtc comment and click it — the strip places itself. STBY/SUG → Pending · TXG → Taxiing · ALU/DEP → Departures · CTL/RTB → Arrivals · TSIT/ENR → the transit bay of the page (Circuit | Transit, Transit → Other Airports, EN-ROUTE Transit) · HOF → hand-off: the strip is released and goes to Pending, and a small window offers to transfer it to another position in one click (in the pop-out when it is open) · TRL/VIS/ILS/TCN/FM → Approach/Final table · V → VFR · CLR → state only. Codes combine (ALU ILS), other words are ignored. A code on the leader moves its whole linked formation. Several controllers: a comment only acts on a strip that is free or assumed by you and on a page of your position — a strip another controller has assumed is theirs, the comment is ignored for you (they still get it when they click). Change it in BOARD › Display ▾ › LotAtc comments (Mine · All · Off). Ctrl+K always acts, and says when the strip was held by someone else. A comment acts once: if you then move the strip by hand, re-clicking the aircraft leaves it where you put it — only a changed comment acts again.
LOTATC › Selected A/C opens a floating panel showing the selected aircraft's strip — fully editable, draggable by its header.
⧉ POP-OUT ejects the strip into an always-on-top window (Chrome/Edge) you can place over LotAtc. Resize the window: the strip scales and fills it. A field left open in the pop-out never blocks it — go back to LotAtc and the next aircraft shows, your typing saved. Close it to bring the strip back in-page.
The bridge reads LotAtc 10 times a second and re-sends the selected aircraft every second: a strip created or renamed after the click is found on its own. Clicking the same aircraft again brings you back to its strip.
Each controller connects to their own local bridge — no central server. Auto-reconnects if the bridge restarts, and checks the link again as soon as you come back to the window.
No DCS session to test with? Run simulate_lotatc.py (shipped with the bridge): it speaks the same WebSocket, you type DEADLY11 TXG and watch the strip move. Close the real bridge first — only one of them can hold the port.
WEATHER › Airfields (top bar) opens the weather editor: add your session airfields (+ ADD), fill in runway, wind (VRB as 340V320), QNH/QFE, ATIS letter… Everything is shared — any controller can update it and everyone sees it instantly.
QNH/QFE accepts both units at once (1016/30.21 or 30.21/1016) — the hPa/inHg toggle shows whichever you prefer, the missing one is computed for you. RAW ATIS lets you paste a plain-text ATIS that overrides the auto-built one.
⧉ POP-OUT spawns floating LED wind/pressure panels (the real tower hardware look) for YOUR airfield — draggable, several at once, per-controller. WEATHER › Overview (top bar) lists every station on one line each, with the runway badge tinted by the aerodrome colour code you set in the editor (BLUE/GREEN/RED…).
BOARD › Find callsign (top bar): type 2+ letters of a callsign — the view jumps to the strip wherever it lives, even on another page, with a cyan halo. Enter = next match, Esc = clear. Purely visual, touches nothing.
BOARD › ↩ Deleted (top bar): the last 10 deleted strips wait here for the rest of your session. One click on Restore and the strip is back for everyone — no more "oops" moments. ✕ discards a single entry, Clear all empties the bin.
State bar (left edge of every strip): green = assumed by you · grey = held by another station (strip slightly dimmed) · amber = request pending. No bar = nobody has it yet.
Flight-state edge (right edge of a strip, shown when the strip has a flight state): grey waiting (STBY · PEND · CLR) · cyan start-up (SUG) · green taxi (TXI) · amber line-up (ALU) · blue airborne (T/O · ENR) · violet arrival (CTL · RTB) · orange go-around · red emergency. The left edge keeps its own meaning (category + who holds the strip), so the two never mix.
BOARD › Display ▾ — settings for your screen only, never shared: strip size, night dimming (three levels for evening sessions; the red callsign is redrawn darker so every text stays readable), flight-state colours on/off, adaptive bays (off by default: an empty bay narrows and an empty row folds when another one holds strips — both stay drop targets), and tablet mode.
Position rail (start of the tab row): GND / TWR · APP · CDC · TAC, each with the number of strips it holds across all its pages. Click a position to show its pages (#2, #3…) in the tab row; custom profiles always stay visible.
Right-click any page tab — or a position in the rail — → the BAY BUILDER: your page's bays as draggable tiles across ROW 1 / ROW 2. Drag to reorder or change row, click a name to rename, click the category badge (DEP/ARR/OVR…) to cycle it, ✕ to remove, + ADD BAY to grow. The live preview underneath shows exactly what everyone will see — what you see is what they get.
Load a preset from the left column (factory layouts or your own), or Save as preset to reuse a layout later. ↺ Reset to default puts a built-in page back to factory. Every change syncs instantly, per-bay — two controllers can edit different pages at the same time without stepping on each other.
Double-click a custom tab → rename it · Drag a tab → reorder · Click a bay name in its header → quick rename. ⊕ = create a custom profile; on its tab ⊘ hides it, ✕ deletes it (recover via ⊕ → Hidden profiles → Restore).
Last update 24/09/2026
1. Real-time sync requires all clients to run the same deployed version — redeploy after each update.
2. Strip size doesn't auto-adapt to the browser — use the size selector.
3. Printing requires pop-ups allowed in your browser (PNG export doesn't).
4. LotAtc bridge is local only (bridge runs on the same PC as the browser).
5. The deleted-strips bin is per-session — it empties when you close the tab.
6. A few minor visual bugs may remain. Spot one? Tell us on the Discord — it helps a lot.