How SanAlert works
SanAlert shows whether drones or missiles tracked on the other side of the border are heading for the place you point at. It was started after the night of 17 September 2026, when sirens sounded in Podkarpacie and the Lublin region and the text message from Alert RCB came much later. It works for all of Poland.
This is not an official warning system
SanAlert is not part of the public administration and does not replace sirens, Alert RCB or messages from the authorities. Always follow the instructions of the authorities. Our data comes from open sources and may be incomplete or delayed.
Where the data comes from
- NEPTUN tracks objects in the air over Ukraine from open sources and says how many independent reports stand behind each one. The alarms declared in the raions (districts) of Ukraine come from NEPTUN too.
- adsb.lol, a network of receivers run by volunteers, gives the positions of military aircraft that broadcast them. The data is under the ODbL 1.0 licence.
- Messages from RCB and RSO are shown separately and unchanged, in Polish. They do not count towards our levels, because they are what we want to be ahead of, not what we predict.
What is on the map
- An arrow
- A tracked object whose course is known. A hollow arrow means the course is presumed. Missiles have a longer, slimmer arrow.
- A dot
- A tracked object whose position the source knows and whose course it does not.
- A dashed ring
- A warning for a whole oblast (region). The source does not know the position, so the mark stands in the middle of the oblast, not where anything is flying. Such a warning gives the level "Activity" at most.
- An object's colour
- A drone or missile takes the colour of the level it raises in Poland now: the same colour as the squares it gives that level. That way you can see which object gives which level. An object that raises no level in Poland is grey in the light theme and white in the dark one. A ring with a number, several objects too close together, takes the colour of the highest of their levels.
- Green outline of voivodeships
- The voivodeships a current RCB or RSO message applies to: an RCB alert until its end, and if no end comes, for 12 hours after it was last sent; an RSO message while it is valid. Exercises and cancellations are not drawn. The words are under "Official messages"; the outline changes no level.
- Tiers of RCB messages
- About the war across the eastern border, RCB sends one of three messages, depending on the services' assessment, and we say which. Tier 1 of 3: a Russian air attack on Ukraine, Polish aircraft are operating in Polish airspace. Tier 2 of 3: a massed attack on western Ukraine, react to the alarm signals. Tier 3 of 3: a threat of an air attack on Polish territory, find a safe place. These are RCB's tiers, not SanAlert levels. Next to the message's heading, a disc with the tier's number: yellow 1, orange 2, red 3.
- The time next to an RCB alert
- RCB does not say when it sent an alert: gov.pl carries only the date, and an alert's page is sometimes filled in later. We check the list of alerts and RSO's messages every 30 seconds. "Published at about 21:43" is when the alert first showed: on gov.pl, or in RSO if RSO carried the same alert earlier (it can be a quarter of an hour ahead). That is not when it was sent: the SMS may have come earlier. When an alert was already on the list before we started checking it, we give no time.
- The end of an RCB alert, and its other updates
- RCB writes every later message about an alert, its end or the alert sent again, into the same page as a numbered update, newest on top. We show them the same way: newest on top, with the words and the voivodeships it was sent to. What a newer message superseded is greyed and crossed out. An end stands out in green, with a time: "All-clear at about 05:25" is when it first showed: on the alert's page, or in RSO if RSO carried it earlier; not when the SMS was sent. We also say which voivodeships RCB sent it to. An end saying "Brak zagrożenia na terenie Polski" (no threat in Poland) ends the alert in the whole of Poland, even when RCB writes that it went to only some voivodeships: those words are about the whole country. When RSO carries such an end before RCB's page does, the alert ends at once. An end in other words ends the alert only where it was sent; in the other voivodeships the alert still stands and they stay outlined.
- Tinted raions in Ukraine
- Alarms declared in Ukraine. The colour is the level the source gives: yellow (amber) or red (vermilion); neither is a SanAlert level colour. The pattern says what the alarm is about: a light fill with a dashed edge is a drone threat, a darker fill with a solid edge is a missile threat, an edge alone is an alarm with no stated reason. They are not SanAlert levels.
Tap an object, an aircraft or a raion to see the details. The buttons under the map choose whose machines are shown: Russian drones and missiles, Polish aircraft, those of the other NATO states, and others. Everything is shown until you choose. The filter changes the map only; levels always count everything.
Whose machines these are
- Arrows, dots and dashed rings
- Russian drones and missiles. NEPTUN tracks what Russia attacks Ukraine with.
- Aeroplanes and helicopters with a country code
- Military aircraft that broadcast their own position (ADS-B), over Poland and the neighbouring countries. The country comes from the address the aircraft was given by its state. Polish ones are blue; those of other NATO states and of Russia and Belarus are in the text colour; any other is grey. The country code beside each one says whose it is.
Most military flights are routine: transport, refuelling, training. Combat aircraft on a mission usually do not broadcast their position, so an empty sky proves nothing. Aircraft never change a SanAlert level.
We do not show Ukrainian machines, or anything over Ukraine beyond what NEPTUN reports. Ukraine's military aircraft do not broadcast their position, and if one ever did, repeating it in public could help whoever is hunting it.
Alarms in Ukraine
Alarms declared in the raions of Ukraine come from NEPTUN. On the map they are tinted raions in the colour of the level the source gives, yellow or red (more under “What is on the map”). They are not SanAlert levels. An alarm close to the Polish border raises the level in Poland to “Activity”, never higher: within about 100 km of the raion with the alarm.
What the levels mean
- Quiet
- The sources are working. Nothing is tracked within about 150 km, there is no alarm across the border nearby, and nothing heading this way is closer than about an hour's flight.
- Activity
- There are objects within about 150 km that are not flying this way or whose direction is unknown, or an alarm in a raion of Ukraine within about 100 km of here. Or something is heading this way but is about 30–60 minutes out, or we have not yet seen it come closer. Or the sources lost track of an object that was heading here.
- Approaching
- An object is heading for your place and at its typical speed would arrive within about 30 minutes. A drone must also have been seen coming closer: a predicted course alone is not enough, because drones often change course and their course is often only a guess. A missile whose direction is unknown counts within about 150 km.
- Near
- An object is within about 25 km, or could arrive within about 15 minutes (a drone: if we have seen it come closer). It needs at least medium confidence, and at medium confidence also two sightings in a row.
- No data
- We cannot see objects because the source is not answering. Then we do not know whether it is quiet, and that is what we show.
On the map, each square of SanAlert's grid, about 11 × 11 km, has its own level; your place has the level of the square it lies in. A square's level means the same as described above. A tapped square also shows why it has its level.
Your location
You can set your place in three ways: from the device's location, by tapping the map, or by choosing a town from the list if you would rather not share a location. It is stored only on your device. The level is worked out for the square, about 11 km on a side, that it lies in. Levels are worked out for Poland only: for a place abroad you will see "Out of range". If you switch notifications on in the app, the number of that square reaches our server, never the exact position. Details: Privacy.
Notifications
You switch notifications on beside your place in Poland, on the website or in the app, and choose the level from which they come. A notification comes when the level for your place rises to the chosen one or higher, and one when it is quiet again: after ten unbroken minutes at “Quiet” we write that nothing we track is heading for your place any more. That is not an all-clear. If an RCB or RSO message is still in force, the notification says so.
On the website: if, after such a notification, we have no data for ten minutes, one comes saying there is no data, because silence does not mean it is quiet. In night mode only “Near” rings during the chosen hours; the others arrive without a sound. If you do not open SanAlert in this browser for 60 days, the record on the server lapses and notifications stop. What reaches our server: Privacy.
On a computer and on a screen
In Chrome and Edge (Windows, Linux, Chromebook, Android) you can install SanAlert like an app, with the “Install” button at the top of the page. It works just like the website, notifications included if you switch them on.
For a school, an office, a fire station or a reception desk there is a view for a large screen: sanalert.pl/en/tv. It shows the time, RCB and RSO messages, the highest level in Poland and the map, in large type and without buttons. The screen stays on, and the page reloads itself every few hours. To show the level at your place too, add it to the address after “#m=”: latitude, longitude and a name, for example sanalert.pl/en/tv/#m=51.14,23.47,Chełm. A link from “Share this place” looks the same. What comes after “#” never reaches any server. A screen without SanAlert levels, with the RCB and RSO messages only: sanalert.pl/en/tv/?levels=0.
Borders on the map
Raion boundaries of Ukraine: OCHA and SSPE "Kartographia", made available by geoBoundaries under the CC BY 3.0 IGO licence. Country, voivodeship and oblast boundaries: Natural Earth. Powiat (county) boundaries of Poland: the State Register of Boundaries, PRG (GUGiK), under the CC BY 4.0 licence. Opracowano na podstawie materiałów państwowego zasobu geodezyjnego i kartograficznego. (Prepared on the basis of materials from Poland's national geodetic and cartographic resource.)
Licences
- Objects in the air and alarms in Ukraine: NEPTUN. NEPTUN's free API; the condition is a visible link to neptun.in.ua.
- Military aircraft: adsb.lol, under the ODbL 1.0 licence.
- RCB and RSO messages: official messages, quoted unchanged, with a link to the source's page.
- Gamma radiation: © Państwowa Agencja Atomistyki, CC BY 3.0 PL.
- Shelter points: the register of the State Fire Service headquarters (dane.gov.pl), CC BY 4.0.
- Boundaries: under “Borders on the map” above.
- Typeface: Atkinson Hyperlegible Next, licence SIL OFL 1.1.
What we do not see well
The data on drones and missiles has limits you should know about:
- A position is often known only to the nearest town, so an object moves in jumps, sometimes of about 40 km.
- Near the Polish border the sources have gaps: we do not see every object there.
- We do not track drones or missiles over Belarus or over Poland itself. An object that crosses the border drops out of our data, although it may fly on. If, when last seen, it had already made your place "Approaching" or "Near", for 30 minutes we show at least "Activity" and say that the sources lost track of it.
- Objects arriving from the north, over the Baltic or from the Kaliningrad region, are covered less well by the sources we use.