WXA/SA is on the live map as the Storm cells layer. It is off by default on purpose: it is an experimental nowcast rather than an issued warning, so it should be something you asked for rather than something you were shown.
Open Layers, turn on Storm cells, and a second panel appears under it with the lead selector and the legend.
The three shapes
| The cell | The storm outline, colored by how strongly it is rotating. |
| The track | Dashed, behind it, with a dot per two-minute scan. Roughly the last hour of where the storm has been, so the dot spacing shows its speed. |
| The cone | A wash ahead of it: where it might be by the lead time you pick. |
Cones draw underneath the NWS warning polygons, because a warning polygon is a decision somebody made and it belongs on top of ours.
The colors
The ramp runs from no rotation at the blue end up through the notification bands to Extreme at the pink one. It is the same scale your alert floor is set in, so a cell you can see and an alert you might get agree about how serious it is.
- Blue-green is under the alert threshold: rotating either not at all or not enough to act on.
- Yellow through pink is Significant and above, the bands that can notify you. The color break is the threshold, so look for the flip from cool to warm rather than for any particular shade.
- A white ring marks a storm rated severe-likely on any hazard: damaging wind, hail or a tornado.
Watch for the ring. A hail monster with no rotation at all reads as quiet on a rotation ramp, and the ring is what says “this one is serious on the hazard it is actually producing”.
Click any cell and its band is named at the top of the popup, so you never have to judge a band from a shade.
The lead selector
The cone is drawn out to a lead time you choose: 10, 20, 30 (the default), 45 or 60 minutes.
Pick a short lead to see precisely where a storm will be in ten minutes. Pick a long lead to see which storms are a threat to you sooner, and accept that it shades half the screen: a 60-minute cone is roughly 9,500 km², about a 100 km swath, and the cone’s area grows 5.3× between 10 and 60 minutes.
Accuracy is not the trade-off here. The chance the storm is actually inside the shape when it gets there holds above 92% all the way out to an hour. What changes is how much ground the shape covers.
The second, solid cone
On a rotating storm you may see a solid inner cone. That is the rotation’s own cone rather than the cell’s: a different object, with its own motion and its own fit. See Rotation.
It stops at 25 minutes however far out the lead selector is set. Past about that point a rotation’s cone is no longer the smaller of the two, because a rotation dissipates and re-forms rather than being carried along, so its position is less predictable than the storm outline’s. Why 25 minutes.
Clicking a cell
The popup answers “what is this storm doing” at a glance:
- The band, beside the cell’s number: Watching through Extreme, or nothing at all on a storm with no rotation worth naming, which is most of them.
- The sentence. On an alerting cell: “Rotation, and a high probability of damaging wind, hail or a tornado.” On a cell that is not rotating but is dangerous anyway, what it is claiming on the severe hazard instead.
- Four bars - tornado, severe, wind, hail. The tornado bar is the selective one and the other three are not; they do not mean the same thing at the same number.
- Motion, once there are enough scans to fit one. A storm on its first scan says not yet fitted rather than guessing.
- Rotation, on alerting cells: the measured low-level azimuthal shear. It is there to explain the score, not to confirm it - the model behind the tornado reading already ingests this shear, so a high value beside a high band is one vote rather than two.
- Tracked: how long we have held this storm, and over how many scans.
- Peak: the highest it has reached on either hazard, which is often more useful than the current reading on a cell that has just weakened.
- Re-identified: if the upstream feed lost and renamed this storm, how many times, and that we merged it back into one. Why that happens.
The sidebar list holds the same cells the map draws, ranked, built from the same response. On a busy screen a storm whose hazard is a few pixels is easy to miss; in the list every storm gets a row of the same height.
When the feed is stale
An empty map looks identical whether nothing is convecting or the ingest died an hour ago, and those are opposite things to tell somebody.
The layer note says which. If the newest scan we hold is more than 15 minutes old, the layer says so rather than presenting old positions as current. A 30-minute cone drawn on a 15-minute-old position is a 15-minute cone drawn in the wrong place, because the storm has traveled 15 to 20 km since. Why 15 minutes, and what changed upstream.
Reading it straight from the API
Everything the map draws is public, unauthenticated JSON on
https://api.wxalerts.org, and the map itself is just a client of it:
GET /storms/active tracked cells, no geometry
GET /storms/active/geojson?lead=30 cells, tracks and cones in one FeatureCollection
GET /storms/{id} one storm in full
GET /storms/{id}/track?minutes=60 where it has been
GET /storms/{id}/cone?lead=30 where it might be
GET /storms/couplets/{id}/cone the rotation's own cone
The cells, tracks and cones come back as one FeatureCollection rather than
three requests, so a cone can never belong to a storm whose cell has already
moved. Filter with west/south/east/north (all four or none),
min_prob_tor, min_prob_severe and alerted_only.
Every response carries feed_valid_time and feed_age_seconds. Use them: a
client that does not check the age will draw a dead feed as a quiet sky.
