How it works
Band conditions, actually calculated.
Most band-condition displays take one number — the solar flux — and look up a colour. We model the ionosphere the signal has to travel through, on the paths you might actually work, using the antenna you actually own. Here’s exactly how, in plain language, including the parts we’re still unsure about.
01 · The usual approach
The usual approach, and why it’s thin
You’ve seen the widget: a stack of bands, each green, yellow or red. Behind almost all of them is a lookup table on the solar flux index — one number, measured once a day at one observatory in Canada.
The common method
| Solar flux | 20m | 10m |
|---|---|---|
| < 70 | Poor | Poor |
| 70–110 | Fair | Poor |
| 110–150 | Good | Fair |
| > 150 | Good | Good |
- Same answer for everyone on Earth
- Same answer at midnight and midday
- Same answer for a beam at 70 ft and a wire in a tree
- Same answer for FT8 and SSB — modes that differ by 27 dB
- Same answer for a 500 km contact and a 12,000 km one
What we do instead
Work out where the ionosphere actually is tonight, bounce a signal off it along 36 different paths out of your QTH, add up the losses, subtract the noise, and see whether what’s left is enough for the mode you operate.
It’s the same link-budget arithmetic a professional HF circuit engineer does. The only reason it isn’t standard in ham software is that it takes an ionospheric model and a fair bit of compute, rather than a table.
02 · The pipeline
The pipeline, end to end
Every 15 minutes, for every band, this runs from scratch.
03 · Inputs
Where the numbers come from
Nothing here is invented, and nothing is scraped from another ham site’s rating. Every input is a primary source.
| Input | Source | What it tells us |
|---|---|---|
| Solar flux (SFI) 10.7 cm radio flux |
NOAA Space Weather Prediction Center · HamQSL | How hard the sun is ionising the upper atmosphere — the main control on how high a frequency will bend back to Earth. |
| K and A index | NOAA SWPC planetary K | How disturbed the Earth’s magnetic field is. High K wrecks polar paths and drags the usable frequency down. |
| Ionosphere itself foF2, hmF2, M(3000) |
IRI-2020, the international standard model, via NASA’s PyIRI | The actual electron density above a given point at a given hour — the layer your signal bounces off. |
| Lower atmosphere | Open-Meteo numerical weather model | Temperature and humidity with height, which is what forms the tropospheric ducts that carry VHF far beyond line of sight. |
| Your station | What you entered when you signed up | Grid square, antenna family and height, power. This is what makes the answer yours rather than everyone’s. |
04 · The physics
What’s actually happening up there
Three things decide whether a band works. Every rating we produce is these three questions, answered per path.
Question 1
Is the frequency low enough to come back?
The MUF (maximum usable frequency) is the highest frequency that will still bend back to Earth on a given path. Go above it and your signal keeps going into space. This is why 10 m is dead at solar minimum and alive at solar maximum, and it changes hour by hour along the path — which is why we compute it at points every 500 km rather than once.
Question 2
Is it high enough to survive the trip?
In daylight the D layer absorbs low frequencies. That’s the whole reason 80 m and 160 m are night bands. The LUF (lowest usable frequency) is where absorption eats you alive, and it rises with the sun angle overhead.
Question 3
Is what arrives louder than the noise?
Getting there isn’t enough — it has to be audible. We add up transmit power, antenna gain, feedline loss, spreading loss and absorption, then compare against the radio noise floor at that frequency. That last comparison is where the mode you operate finally matters.
05 · Paths
“The band” isn’t one thing
A band can be wide open to the south and stone dead to the north-east at the same moment. Rating a band with a single number hides that, so we compute 36 paths from your QTH — twelve compass directions at three distances — and the band’s rating reflects how many of them are actually open.
Each path is sampled every 500 km along its length, because the ionosphere over the middle of the Atlantic at 2 a.m. is not the ionosphere over your house at 9 p.m. A long path can be open at one end and shut at the other, and only walking along it catches that.
It also means the rating knows the difference between “you can work the next state” and “you can work Japan” — which is usually the question you actually had.
06 · Your antenna
Your antenna is part of the physics
This is the part almost nothing else does. A dipole 10 ft off the ground and the same dipole at 60 ft are different antennas — not slightly, but by tens of decibels at the angles that matter for DX.
| Height (20 m band) | Where the energy goes | Good for |
|---|---|---|
| ~10 ft (0.15 wavelength) | Almost straight up | Local & regional — a “cloud warmer”. Poor for DX. |
| ~35 ft (0.5 wavelength) | A broad lobe around 30° | A good all-rounder. Workable DX. |
| ~70 ft (1 wavelength) | A strong low lobe near 15° | DX. The angle long paths need. |
So when we evaluate a 10,000 km path, we ask what your antenna does at the low angle that path requires — not what it does on average. Tell us it’s a beam and we account for its direction, too: a Yagi pointed at Europe is not helping you work Australia.
07 · Your mode
“Is the band open?” depends on what you’re running
A signal too weak to hear on SSB can be a perfectly solid FT8 decode. The gap between them is about 27 dB — a factor of 500 in power. A single colour per band cannot be true for both, so we rate each band for the mode you pick.
| Mode | Bandwidth | Signal needed | In practice |
|---|---|---|---|
| FM | 16 kHz | +12 dB | The most demanding. Needs a genuinely strong signal. |
| SSB | 2.4 kHz | +6 dB | Voice. Wants the band properly open. |
| RTTY | 250 Hz | −2 dB | Works below the SSB threshold. |
| CW | 500 Hz | −5 dB | The classic weak-signal edge. Works when SSB won’t. |
| PSK31 | 31 Hz | −8 dB | Narrow keyboard-to-keyboard mode. |
| FT4 | 83 Hz | −17 dB | Fast digital contest mode. |
| FT8 | 50 Hz | −21 dB | Decodes signals you cannot hear at all. |
| JT65 / JT9 | 6–10 Hz | −22 to −24 dB | Slower, even more sensitive. |
| WSPR | 6 Hz | −30 dB | Not a QSO mode — a propagation beacon. |
Set the dashboard to FT8 and marginal bands turn usable. Set it to SSB and they close again. Both are correct; they’re just different questions.
08 · Confidence
Storms, and knowing how sure we are
When the magnetic field is disturbed
A geomagnetic storm doesn’t just make things “bad”. It depresses the usable frequency, adds absorption, and hits high latitudes hardest. We apply the K-index as a penalty sized by your station’s geomagnetic latitude — a station near the auroral zone takes a far bigger hit than one at mid-latitudes — rather than one blanket downgrade for everyone. Sizing it by the latitude each path crosses, so a path over the pole can close while a path south stays open, is not built yet.
Every forecast carries a confidence
A forecast without an error bar is a guess with good posture. Ours starts at 100 and takes named penalties — missing inputs, storm conditions, a recent X-class flare — and is capped at 95, deliberately. Nothing we publish claims certainty, because nothing about the ionosphere is certain.
| Looking ahead | Reliability | Typical error | What that means |
|---|---|---|---|
| Right now | 90 | ±3 dB | Solid. Act on it. |
| +1 hour | 85 | ±4 dB | Still good. Plan your evening. |
| +6 hours | 75 | ±6 dB | Directionally right. |
| +24 hours | 65 | ±8 dB | A useful hint, not a promise. |
| +72 hours | 50 | ±12 dB | Barely better than climatology. Treat it that way. |
09 · Limits
What we don’t know yet
Any tool can claim to be the most accurate. The useful question is whether it checks, and what it does when the answer is unflattering. Here is ours, openly.
We grade our own homework, every 15 minutes
Every forecast is saved with a timestamp. Later, we compare it against what was actually being heard worldwide from reported-signal networks. That’s the only thing those reports are used for — scoring us, never feeding us.
Sporadic-E is capped at Fair, on principle
Our summer sporadic-E prediction is climatology — when Es usually happens, not a measurement of tonight. An earlier test seemed to show it had no skill. We later found that test couldn’t tell: at one station over one season, the prediction follows the clock so closely that the test was comparing different hours of the day, not better and worse forecasts. So the honest status is untested, not disproven. It stays capped anyway, because a prediction built from averages must not claim a confident 10 m opening. Measured Es from ionosondes is the real test, and that feed is next on the list.
Some bands were stuck on one answer
Our scoring counted every path with more than about 20 dB to spare as simply “excellent”. On 60, 40 and 30 m nearly every path clears that, so the rating barely moved for weeks — on 40 m the score varied by about one point in a hundred. That’s why 40 m looked unbeatable by “always Good”: it was always saying Good. A scale that keeps counting past 20 dB is written and switched off until it’s tested. Even with it, 40 m may genuinely be open nearly all the time — the difference is we’ll know that’s the band, not the arithmetic.
Calibrated from one station, one season
Ratings are calibrated against what was actually heard. The antenna-aware model’s calibration was derived on 8 September 2026 from 36 days and 41,604 forecasts — all at one station, in late summer. 6 m’s calibration reflects August and September, not the peak Es season, and none of it reflects winter or other parts of the country yet.
Our noise model is too optimistic, most of all on the low bands
We found our noise floor sits 10 to 20 dB too quiet on every band, depending on your surroundings, and it leaves out atmospheric noise altogether — the static that rules 160 and 80 m at night, where the gap grows to tens of decibels. The fix is written and tested, and it stays switched off: measured on its own, it made some bands worse at telling good hours from bad. It ships together with the scoring fix above, once both have been tested.
A clock beats us at guessing how busy a band will be
“As busy as this hour usually is” predicted reported activity better than our physics on every band. Part of that is the yardstick — spot counts measure how many operators are awake as much as whether a band is open — but not all of it: on 15, 12 and 10 m our daily peak is in the wrong place, and we’re hunting for why. On 160 and 80 m, once time of day is taken out, the physics does know something the clock doesn’t.
Nothing predicts the ionosphere perfectly
IRI is a climatological model — an excellent average, not a live measurement. Real conditions wobble around it. Anyone claiming certainty about tonight’s propagation is selling something.
10 · Scorecard
So — is it better?
For the question “should I go and turn the radio on, and to what?” we think clearly yes, for one reason: the answer is about you. Here’s the honest scorecard.
| Capability | Typical SFI widget | ShackOS |
|---|---|---|
| Accounts for your location | No | Yes — per grid square |
| Accounts for time of day | Rarely | Yes — along the whole path |
| Accounts for your antenna | No | Yes — family, height, direction |
| Accounts for your mode | No | Yes — 11 modes |
| Distinguishes near from far | No | Yes — 3 distances × 12 headings |
| Uses a real ionosphere model | No | Yes — IRI-2020 |
| Publishes a confidence figure | No | Yes, capped at 95 |
| Measures its own accuracy | No | Yes, every 15 minutes |
| Tells you where it’s weak | No | Yes — see the section above |
| Instant with no setup | Yes | Needs your grid and antenna first |
The last row is a real cost, and we’d rather name it than hide it: we ask you for two minutes of setup that a lookup table doesn’t need. What you get back is a forecast that would be different for your neighbour with a different antenna — because it genuinely is.