πŸͺ‚ FlyBrief NOTAMs

A self-hosted UK NOTAM processing system built specifically for paraglider pilots

UK airspace Today & tomorrow πŸš‚ Train stations πŸͺ– ATZ Status Oudie / SkyDemon compatible Interactive map

What is FlyBrief?

FlyBrief is a daily UK NOTAM briefing system that I built to solve a frustration: standard NOTAM feeds aimed at GA pilots are full of noise β€” runway closures, ILS outages, taxiway works β€” none of which matters to a paraglider. What matters to us is active danger areas, BVLOS drone corridors, kite flying at 3,000ft, parachute drops, military exercises, lasers, and tethered balloons.

FlyBrief takes the official UK NOTAM XML feed from NATS, strips out everything irrelevant to free flight, colour-codes the remainder by hazard type, and delivers it as an OpenAir airspace file ready to load into Oudie, SkyDemon, FlySkyHigh, or XCTrack. For XCTrack users, FlyBrief generates a dedicated XContest-format file with full NOTAM headers that enables XCTrack to auto-activate zones at their scheduled times. It also hosts an interactive map and dedicated ATZ Status page where you can generate a personalised ATZ file for your instrument, showing which ATZs have ATC on frequency and which have no radio watch β€” with tap-to-call phone numbers for every aerodrome.

⚠️ Not an official aviation briefing service. Always verify with official sources. Fly safe.

πŸ“‹

Filtered NOTAM files

Today and tomorrow, cleaned of aerodrome and instrument-flying noise

πŸ—ΊοΈ

Interactive map

Colour-coded zones on OpenStreetMap β€” tap any zone for full details including ATZ name, radio status (πŸ”΄ ATC on frequency / β›” No radio comms), entry guidance, and a tap-to-call phone number for military ATZs.

⚑

On-demand refresh

Regenerate any time to pick up late-issued NOTAMs before a flying day

πŸͺ–

Military & civil ATZ file

All UK military and civil ATZs handled via the ATZ Status page β€” not embedded in NOTAM files. Generate a personalised ATZ file: ticked ATZs as AC D (proximity alarm), unticked as AC G/Q (boundary only). Radio pilots get AC R for military ATZs and NOTAM status labels in each zone name (e.g. NEWCASTLE ATZ [NOTAM: CLOSED]). Class D ATZs (Brize Norton, Fairford, Northolt, Benson) are locked.

πŸ”’

Self-hosted

Runs on a Synology NAS at home β€” your data, no third-party dependency

How it works

NATS/EAD
XML feed
β†’
Python scripts
convert_notams_fsh.py
convert_notams_oudie.py
convert_notams_xctrack.py
β†’
Filter, colour-code
& append ATZs
β†’
OpenAir .txt
files (Γ—8)
β†’
Web page +
map

Eight output files

FileContents
uk_notams_today_YYYYMMDD.txtToday's filtered airspace β€” for Oudie, FlySkyHigh, SkyDemon. ATZs not included β€” generate separately from the ATZ Status page.
uk_notams_xctrack_today.txtToday's filtered airspace in XContest format β€” for XCTrack. Includes full * en: NOTAM headers for scheduled auto-activation. ATZs not included β€” generate separately from the ATZ Status page.
uk_notams_xctrack_high_priority.txtToday's high priority zones in XContest format β€” for XCTrack. ATZs not included β€” generate separately from the ATZ Status page.
uk_notams_tomorrow_YYYYMMDD.txtTomorrow's airspace. ATZs not included β€” generate separately from the ATZ Status page.
uk_notams_high_priority_today_YYYYMMDD.txtToday's high priority zones β€” AC R (TDAs, activated danger areas, live firing, BVLOS corridors, lasers, searchlights), AC Q (dangerous advisory: UAS, parachutes, flares, CANP), AC TMZ (tempo transponder mandatory zones). ATZs not included β€” generate separately from the ATZ Status page.
uk_notams_high_priority_tomorrow_YYYYMMDD.txtTomorrow's high priority zones. ATZs not included β€” generate separately from the ATZ Status page.
uk_notams_warnings_today_YYYYMMDD.txtNOTAMs with suspiciously large radii β€” worth a manual check
uk_notams_deactivated_today_YYYYMMDD.txtDanger areas stood down today β€” useful to know what's off
✈ On the day of flying β€” load this into your instrument:
uk_notams_high_priority_today_YYYYMMDD.txt β€” Today's high priority zones (Oudie/FlySkyHigh/SkyDemon)
uk_notams_xctrack_high_priority_YYYYMMDD.txt β€” Today's high priority zones (XCTrack)

Loading the full file clutters your instrument with hundreds of advisory zones and dilutes the alarms that matter. The high priority file contains only the zones that restrict access or pose a real hazard β€” every alarm will be meaningful. ATZs are not included in NOTAM files β€” use the ATZ Status page to generate your custom ATZ file and merge it with the high priority file via Build My Airspace.

How FlyBrief generates its files

FlyBrief runs three processing scripts on the NATS NOTAM XML feed:

Both scripts share a common filtering module (notam_filter.py) to guarantee identical NOTAM selection. The geometry (centre coordinates, radius, polygon boundaries, upper/lower ceilings) is extracted from the authoritative NOTAM body text, not the XML search coordinates, ensuring the airspace boundaries are as accurate as possible.

Files are regenerated automatically at 05:00, 10:00 and 15:00 UTC daily, and whenever a user taps Regenerate NOTAMs now on the main page.

Automated quality checking

After every regeneration, FlyBrief automatically runs a quality checker (notam_checker.py) that:

OpenAir format

The output uses standard OpenAir format, which is the most widely supported airspace format for free-flight instruments. Each NOTAM becomes an airspace zone with:

Times and dates

All times displayed by FlyBrief are in local UK time β€” BST (British Summer Time, UTC+1) from the last Sunday in March to the last Sunday in October, and GMT the rest of the year. FlyBrief automatically applies the correct offset based on the NOTAM date, so there is no need to manually add or subtract an hour.

The instrument label format is DD/MM@HHMM Type β€” for example 30/04@2300 Tempo Danger Area. The time shown is the expiry of the NOTAM, i.e. when it stops being active. This is not the start time.

For short-duration NOTAMs active within a single day (such as a temporary Class D for an airshow or a parachute display), FlyBrief shows both start and end times β€” e.g. 01/04 0900-1600 Tempo Reserved Area.

Active schedules (shown on the map popup) are sourced from the ItemD field in the NATS XML feed and displayed in local time β€” e.g. 0900-1800 BST. Where ItemD is empty, FlyBrief automatically supplements the schedule from a notaminfo.com RSS feed. Cross-check with notaminfo.com or the official NATS PIB for the full schedule.
* Active: 0900-1800 BST
AC R
AN 30/04@2300 Tempo Danger Area
* Desc: J413 [30/04 @ 23:00 BST]: TEMPO DANGER AREA...
SB 255,140,0
AH 900FT AMSL
AL GND
V X=52:24:29.00 N 001:30:37.00 W
DC 2

Colour coding

Every NOTAM is colour-coded by hazard type. This appears both on instruments that support SB tags (Oudie renders these) and on the interactive map.

ColourNOTAM typesWhy it matters
Red Activated danger areas, live firing, fast jets (non-segregated), parachute drops (PJE), laser displays, flare firing, demolition, underslung loads. Immediate hazard β€” avoid or get clearance
Red All Temporary Danger Areas (TDAs) β€” BVLOS drone corridors over cities and infrastructure Airspace restriction β€” TDAs establish danger areas regardless of NOTAM series
Yellow UAS swarm operations Dense drone activity β€” collision risk
Blue Tethered balloons, captive balloons, helikites Physical cable hazard at low level
Purple AC TMZ β€” tempo transponder mandatory zones (e.g. Fairford airshow) Transponder required β€” relevant to powered paragliders
Green Aerial work, searchlights, fireworks, equestrian low-flying avoidance, air displays Situational awareness
White/grey Model aircraft sites, plain UAS operations, kite flying, met balloons, military exercises, funfair structures, etc. Awareness β€” assess individually
TDAs and activated danger areas are both red and classified as AC R (Restricted). On Oudie this triggers louder proximity alarms at greater range compared to advisory AC Q zones. All TDAs use SB 255,0,0 (red) regardless of NOTAM series (J-series, H-series, etc.).

ATZ Status & Custom ATZ Files

FlyBrief includes a full ATZ Status page showing the radio status of all UK military ATZs today and tomorrow (πŸ”΄ ATC on frequency / β›” No radio comms), with NOTAM-aware status detection and tap-to-call phone numbers. All civil ATZs are also included in the custom file. The page generates a personalised ATZ file for your instrument with a radio pilot option for licensed VHF radio holders.

ATZ entry rules for paragliding pilots

Paragliding pilots without a licensed aviation VHF radio must not enter any ATZ without prior permission from the aerodrome. ATZs remain active airspace regardless of published hours. Brize Norton, Fairford and Northolt are Class D ATZs within permanent Class D controlled airspace β€” paragliding pilots cannot enter these under any circumstances and they are locked in the custom ATZ file.

The published hours shown on the ATZ Status page indicate when ATC services are normally staffed β€” they are provided as context for contacting the aerodrome, not as an indication that entry is permitted outside those hours.

The ATZ Status page generates a personalised ATZ file separate from the NOTAM files. By default all ATZs are ticked and written as AC D (proximity alarm). Pilots with prior permission to enter specific ATZs can untick them β€” unticked ATZs are written as AC G (FlySkyHigh/Oudie) or AC Q (XCTrack) β€” visible boundary, no alarm. This affects your instrument alarm only β€” it does not indicate whether entry is permitted.

Custom ATZ file generator

The ATZ Status page generates a personalised ATZ file for your instrument. Your instrument is pre-set from the main page β€” no need to re-select. All ATZs are ticked by default β€” all ticked ATZs are written as AC D in your custom ATZ file. If you choose to change the default, do not untick an ATZ unless you have prior permission from the aerodrome to enter or fly through it. A warning is shown when you untick any ATZ. The Generate button creates both today's and tomorrow's custom ATZ files in one go β€” two download buttons appear so you can grab either day. The file contains:

Airspace class reference

Pilot / ATZ status FlySkyHigh Oudie XCTrack
βœ… Ticked β€” no radio AC D proximity alarm AC D proximity alarm AC D proximity alarm
βœ… Ticked β€” radio, military ATZ AC R restricted alarm AC D proximity alarm* AC D proximity alarm
βœ… Ticked β€” radio, civil ATZ AC D proximity alarm AC D proximity alarm AC D proximity alarm
☐ Unticked (permission obtained) AC G boundary only AC G boundary only AC Q advisory

* Oudie only supports AC classes A–G; AC R is not available on Oudie, so AC D is used instead.

Radio pilots also get NOTAM status labels appended to each ATZ name in the file β€” for example NEWCASTLE ATZ [NOTAM: CLOSED] or LOSSIEMOUTH ATZ [NOTAM: DEACTIVATED]. This lets you see at a glance on your instrument which ATZs have an active NOTAM. Labels reflect the status for the day selected (Today or Tomorrow).

After generating, click πŸ—Ί View on Map to visualise your selection β€” Military, Civil, or All toggle buttons. Ticked ATZs appear red (AC D β€” proximity alarm) and unticked ATZs appear blue (AC G/AC Q β€” visible boundary, no alarm). Then click Go to Build My Airspace to merge with FlyBrief NOTAMs, Asselect base airspace, and train stations into one combined file. All military ATZs are automatically stripped from the Asselect file β€” FlyBrief provides them with the correct AC D/AC G or AC Q status depending on your instrument. Your instrument selection is pre-set from the main page across all three pages.

The generator uses browser-based tokenisation: a unique session token is stored in localStorage alongside the pilot's ATZ selection. Selections persist across visits without requiring any login.

Documented prior permission required. Paragliding pilots without a licensed aviation VHF radio must not enter any ATZ without prior permission from the aerodrome. ATZs remain active airspace regardless of published hours. Always call the aerodrome before flying through any ATZ. Only untick an ATZ on the custom ATZ page if you have prior permission to enter or fly through it.

What gets filtered out

The most important thing FlyBrief does is remove the noise. A standard UK NOTAM briefing for a given day contains hundreds of entries β€” the vast majority are irrelevant to free-flight pilots. FlyBrief removes:

Aerodrome infrastructure

Runway closures, taxiway works, stand closures, ILS/NDB/VOR outages, PAPI faults, arrestor gear, de-icing, aircraft parking limitations, aerodrome operating hours

ATC & comms

Radar outages (including SSR/transponder maintenance), frequency changes, ATC service degradations, talkdown unavailability, admin phone numbers

Above your ceiling

NOTAMs whose lower altitude limit is at or above FL110 (configurable). E.g. FL110–FL660 combat airspace.

Admin & publishing

VFR chart corrections, AIP amendments, contact number changes, danger area deactivations (shown separately)

Ground works

Crane erections, CCTV installation, contractor works on airfields β€” no airspace impact

Military aerodrome noise

Hardstandings, TACAN navaids, command post frequencies, PAR radar faults, roosting aircraft

Bulk military activations

M-series NOTAMs activating large complex danger areas (Southern Complex, Central Complex, Aberporth etc) β€” high-level fast jet ranges not individually actionable for paragliders

Large fast jet exercise zones

HIGH ENERGY MANOEUVR and FIGHTER CTL Training Areas extending above FL150 β€” enormous areas irrelevant at paraglider altitudes

HIRTA & aerial surveys

High Intensity Radio Transmission Areas and aerial survey operations β€” not airspace restrictions affecting free flight

What always stays in

Regardless of altitude, military low-flying exercises (LFA, MIL EXER) are always kept β€” fast jets operating non-segregated affect all altitudes. FIGHTER CTL and HIGH ENERGY MANOEUVR zones are kept only when their upper limit is at or below FL150, making them relevant to higher-altitude sites.

Configurable settings

Two parameters can be adjusted on the web page before regenerating:

How does it compare to XContest?

XContest publishes a NOTAM feed widely used by paraglider and hang glider pilots. In tests comparing the same day's data, FlyBrief consistently provides more complete coverage for free-flight hazards:

NOTAM typeFlyBriefXContest
J-series TDAs (BVLOS drone corridors) βœ“ All included Often missing newer entries
Kite flying (up to 3,000ft AGL) βœ“ Included Not shown
Tethered balloons & helikites βœ“ Included Coverage varies
Equestrian events (mil low-flying avoidance) βœ“ Included Not shown
Temp CTAs (Class D airspace) βœ“ Included Sometimes missing
Military & civil ATZ circles βœ“ Via dedicated ATZ Status page β€” NOTAM-aware, radio/no-radio distinction Not included
Admin/contact number changes βœ“ Correctly filtered out Sometimes included as noise
Deactivated danger areas βœ“ Separate file β€” clean main feed Mixed into main feed
Total NOTAMs (sample day 29/03/2026) 129 79
The higher count reflects more comprehensive coverage, not less filtering β€” XContest misses operationally significant entries that FlyBrief correctly includes.

Technical setup

FlyBrief runs on a Synology DS918+ NAS using:

Source code

FilePurpose
notam_filter.pyShared filtering module β€” NOTAM selection logic used by both converters to guarantee identical output
convert_notams_fsh.pyStandard OpenAir output β€” for Oudie, FlySkyHigh, SkyDemon. ATZs not included.
convert_notams_xctrack.pyXContest-format output β€” for XCTrack with auto-activation headers. ATZs not included.
fetch_atz_hours.pyFetches UK military ATZ data from NATS AIP ENR 2.2. Updates automatically every AIRAC cycle (28 days). Writes atz_reference.json.
notam_checker.pyAutomated quality checker β€” verifies FSH and XCTrack outputs match exactly after every regeneration
generate_station_status_cif.pyDaily CIF timetable download β€” generates station open/closed status and WPT files with train times
generate_custom_atz.phpGenerates personalised ATZ files with NOTAM-aware radio status and AC class (AC D / AC G / AC Q) for FSH, Oudie and XCTrack
download_asselect.phpServes Tim's Asselect file β€” supports ?no_atz=1 (strip all ATZs), ?atz_only=1 (civil ATZs only for map)
index.phpMain web page β€” download, view, regenerate
atz_status.phpATZ Status page β€” today/tomorrow activity for all 36 military ATZs with phone numbers
map.htmlInteractive Leaflet map with live train station layer
viewer.phpIn-browser viewer for warnings and deactivations
download.phpSecure file download (whitelist-protected)
serve.phpSecure OpenAir file server for map
merge.phpBuild My Airspace β€” combine and download custom file sets
download_merged.phpSecure download of merged files (auto-expire after 1 hour)
rtt_proxy.phpServer-side proxy for National Rail Darwin live departures API
atz_reference.jsonPre-parsed ATZ reference data β€” name, hours, coordinates, radius, phone for all 36 military ATZs
station_status.jsonPre-computed station status for map dot colours (today + tomorrow, updated daily at 04:00)
station_crs.jsonStation name β†’ CRS code lookup (4,775 mappings)
This is a personal project running on home hardware. While I run it daily and use it for my own flying, I make no guarantees of availability or completeness. Always cross-check with official sources before flying in controlled or restricted airspace. NOTAMs can be issued at short notice β€” regenerate on the morning of your flying day.

Accessing FlyBrief

The system is available to other UK pilots at:

https://flybrief.synology.me/notams/
Updated at approximately 05:00, 10:00 and 15:00 UTC

What to load on a flying day

The FlyBrief map is ideal for a full pre-flight overview. For your instrument, load the high priority file β€” uk_notams_high_priority_today_YYYYMMDD.txt. This contains AC R (TDAs, activated danger areas, live firing, BVLOS), AC Q (dangerous advisory: UAS, parachutes, flares), and AC TMZ (tempo transponder mandatory zones). Merge with your custom ATZ file via Build My Airspace for the complete picture.

⚠ On a flying day β€” what to load into your instrument

Use the FlyBrief map for your full pre-flight overview. Then load only the high priority file into your instrument:

uk_notams_high_priority_today_YYYYMMDD.txt (Oudie/FlySkyHigh/SkyDemon)
uk_notams_xctrack_high_priority_YYYYMMDD.txt (XCTrack)

Loading the full file would clutter your instrument with hundreds of lower-priority zones and dilute the alarms that matter. Merge with your custom ATZ file via Build My Airspace for ATZ coverage.

ATZ Status page

Check the ATZ Status page before any cross-country flight. It shows all UK military ATZs with direct phone numbers and published hours, plus all civil ATZs. Generate a personalised custom ATZ file β€” untick only ATZs where you have prior permission to enter. If you hold a licensed aviation VHF radio, tick the radio option to get AC R for military ATZs and NOTAM status labels in zone names. ATZs are not in the NOTAM files β€” they are handled via the ATZ Status page.

Loading into your instrument

Map

Use the View map link on the main page for a visual overview of today's NOTAMs. Tap any zone for full details β€” name, altitude limits, AC class, and active schedule in local time. The πŸ“ My location button centres the map on your GPS position β€” useful on mobile after landing out.

The map has an πŸ“‹ NOTAMs panel listing all active airspace zones as scrollable cards. On desktop it auto-opens after a short delay, defaulting to Today. Use the tabs to switch between Today, Today HP, Tomorrow, and Tomorrow HP β€” the map and cards update together. Clicking a category filter button (Danger, TDA, UAS, Balloon, TMZ, etc.) filters both the map and the cards to match. On mobile, tap the button to open the panel as a bottom sheet.

The ATZ map view has a dedicated πŸ“‹ ATZ NOTAMs panel showing any ATZs with an active NOTAM (closed, deactivated, activated, or hours change). Cards are grouped into Military and Civil tabs. Tap any card to zoom the map to that aerodrome. On desktop the panel auto-opens and highlights the matching card when you click an ATZ circle. On mobile it rises as a bottom sheet and closes after you select a card.

CTA altitude colour banding (online map only)

On merged file maps, CTA sectors (Bristol, Cardiff, etc.) are colour-coded by their lower altitude limit so the stepped inner boundaries are clearly visible:

ℹ️ This colour banding is purely a visual aid on the FlyBrief online map for pre-flight planning. It does not affect your instrument file β€” Asselect data is always passed through to your instrument unchanged.

Accurate airspace geometry (online map only)

All OpenAir arcs (V D=Β± direction + DB arcs) on the online map are now tessellated with high-resolution geodesic arcs (48 steps) matching the official AIP geometry. A previous JavaScript parser bug in the map viewer affected how 81 UK zones were drawn on the FlyBrief online map β€” Bristol, Birmingham, Newcastle, Cardiff, Edinburgh and most major CTAs plus LoA areas Bath Gap and Ubley. Arcs were occasionally drawn going the wrong way around their centre, making boundaries appear in the wrong place.

ℹ️ This bug only affected the online map display. Instrument files (FSH / Oudie / XCTrack) have always used the correct raw Asselect geometry β€” the bug was purely in the FlyBrief JavaScript map viewer. Credit to Tim Pentreath for spotting the issue.

πŸͺ‚ Event briefing maps

FlyBrief supports event-specific airspace briefing maps for competitions, aerotow events, fly-ins and XC meets. Event organisers can share a single link that shows a map centred on the venue, with a radius circle (typically 100km), filtered to show only NOTAMs and airspace within that radius. A popup with the event name, dates, site, description and optional logo opens automatically on page load.

Event maps are created via URL parameters (?event=...¢re=lat,lon&radius=100&dates=...&desc=...&logo=...) or via short-link IDs in the events registry (e.g. e.php?id=gbar2026). Let Steve know if your club runs an event that could benefit from a dedicated briefing link.

Train stations on the map

The map shows all 2,563 UK train stations as coloured dots using live timetable data:

Tap any station dot to see live departure times β€” first and last train, next departure, all upcoming services, and a direct National Rail link. Useful for planning a retrieval route after landing out.

XCTrack widget

The FlyBrief map can be used as a live XCTrack widget β€” a moving map showing today's NOTAMs, train stations, and your GPS position, embedded directly in XCTrack during flight.

Suggested URL:

https://flybrief.synology.me/notams/map.html?zoom=8&location=on&ui=off&trains=on&stationcolor=blue

Key parameters: zoom=8 (regional view), location=on (centres on GPS), ui=off (hides toolbar for clean widget), trains=on (shows station dots), bigzoom=on (larger zoom buttons for gloved hands). Full parameter reference in the Quick Start Guide.

Always use https:// β€” GPS location requires a secure connection.

UK paragliding sites

The map shows all UK paragliding sites sourced from paraglidingearth.com via a 24-hour cached proxy. Tap any site marker for the site name and a direct link to its paraglidingearth.com page. Useful for identifying flyable sites near your landing area.

Build My Airspace

The Build My Airspace tool combines multiple sources into a single download. Select your instrument first β€” the page adjusts to show only relevant NOTAM files and train station options.

Sources available

Merge confirmation

After building, a confirmation banner shows exactly what was merged β€” e.g. "Today's NOTAMs + Today's custom ATZ + Asselect + Train stations" β€” so you can verify the contents before downloading. The ATZ day automatically follows the NOTAM file selection: if you select tomorrow's NOTAMs, tomorrow's custom ATZ is merged to match.

Automatic filtering on merge

All Asselect and uploaded files are automatically filtered before merging: temporary zones already covered by FlyBrief NOTAMs (Fairford TMZ, Coningsby RA(T), Odiham RA(T), Silverstone RA(T) and others) are stripped; zones labelled (NOTAM) are removed; zones with a floor at FL110 or above are removed. Merged files are stored on the server for one hour then auto-deleted.

Regenerating

If the files look stale, use the Regenerate NOTAMs now button to run the script immediately.

The XML source data (uk_notams.xml) is the NATS PIB, downloaded automatically at 05:00, 10:00 and 15:00 UTC. The Regenerate button also downloads a fresh copy before processing.

Acknowledgements

FlyBrief would not exist without the excellent services provided for the free-flight community: