Tracking solar storms with wspr

There was a big CME the night before last (2026 01 19) and HF propagation is still terrible two days later. WSPR spots world wide were down to about 60% of normal on the 20th, and the 95%-ile distances are down too.

┌──────────────window─┬─total_spots─┬─total_spots_bar──────┐
│ 2026-01-17 00:00:00 │     5832137 │ ███████████████████▏ │
│ 2026-01-18 00:00:00 │     5874208 │ ███████████████████▎ │
│ 2026-01-19 00:00:00 │     5588762 │ █████████████████▉   │
│ 2026-01-20 00:00:00 │     3394762 │ ██████▉              │
│ 2026-01-21 00:00:00 │     4978963 │ ██████████████▉      │
│ 2026-01-22 00:00:00 │     5028843 │ ███████████████▏     │
│ 2026-01-23 00:00:00 │     5373320 │ ████████████████▊    │
│ 2026-01-24 00:00:00 │     5375856 │ ████████████████▉    │
│ 2026-01-25 00:00:00 │     6052942 │ ████████████████████ │
│ 2026-01-26 00:00:00 │     5898873 │ ███████████████████▍ │
│ 2026-01-27 00:00:00 │        8058 │                      │
└─────────────────────┴─────────────┴──────────────────────┘
┌──────────────window─┬─q95_distance─┬─q95_distance_bar─────┐
│ 2026-01-17 00:00:00 │         4409 │ ███████▎             │
│ 2026-01-18 00:00:00 │         5133 │ █████████████        │
│ 2026-01-19 00:00:00 │         5515 │ ████████████████     │
│ 2026-01-20 00:00:00 │         3717 │ █▋                   │
│ 2026-01-21 00:00:00 │         3963 │ ███▋                 │
│ 2026-01-22 00:00:00 │         4073 │ ████▌                │
│ 2026-01-23 00:00:00 │         4523 │ ████████▏            │
│ 2026-01-24 00:00:00 │         4615 │ ████████▉            │
│ 2026-01-25 00:00:00 │         5188 │ █████████████▌       │
│ 2026-01-26 00:00:00 │         5752 │ ██████████████████   │
│ 2026-01-27 00:00:00 │         5980 │ ███████████████████▊ │
└─────────────────────┴──────────────┴──────────────────────┘

To show the number of spots/day try this SQL at wspr.rocks

SELECT
toStartOfInterval(time, INTERVAL 24 HOUR) as window,
count() as total_spots,
bar(total_spots, 2000000, 6000000, 20) as total_spots_bar
FROM wspr.rx
WHERE
time > '2026-01-17' and time <= '2026-01-27'
GROUP BY window
ORDER BY window asc

and for the distances:

SELECT
toStartOfInterval(time, INTERVAL 24 HOUR) as window,
round(quantile(0.95)(distance)) as q95_distance,
bar(q95_distance, 3500, 6000, 20) as q95_distance_bar
FROM wspr.rx
WHERE
time > '2026-01-17' and time <= '2026-01-27'
GROUP BY window
ORDER BY window asc

I recon you can see the sunspot cycles too:

┌───────year─┬─q95_distance─┬─q95_distance_bar───┐
│ 2008-01-01 │         8203 │ █████████▏         │
│ 2009-01-01 │         8498 │ █████████▉         │
│ 2010-01-01 │         8051 │ ████████▋          │
│ 2011-01-01 │         8728 │ ██████████▋        │
│ 2012-01-01 │        11205 │ █████████████████▋ │
│ 2013-01-01 │         8082 │ ████████▊          │
│ 2014-01-01 │         8175 │ █████████          │
│ 2015-01-01 │         8076 │ ████████▊          │
│ 2016-01-01 │         7123 │ ██████             │
│ 2017-01-01 │         5952 │ ██▋                │
│ 2018-01-01 │         6520 │ ████▎              │
│ 2019-01-01 │         6555 │ ████▍              │
│ 2020-01-01 │         6782 │ █████              │
│ 2021-01-01 │         6828 │ █████▏             │
│ 2022-01-01 │         6961 │ █████▌             │
│ 2023-01-01 │         7124 │ ██████             │
│ 2024-01-01 │         7074 │ █████▉             │
│ 2025-01-01 │         6810 │ █████▏             │
│ 2026-01-01 │         5835 │ ██▍                │
└────────────┴──────────────┴────────────────────┘

For a one-line query try something like this:

curl $((tr '\n' ' ' | sed 's/ /%20/g') <<EOF
http://db1.wspr.live/?query=
SELECT
toStartOfYear(time) as year,
round(quantile(0.95)(distance)) as q95_distance,
bar(q95_distance,5000,12000,20) as q95_distance_bar
FROM wspr.rx
WHERE
toStartOfYear(time)>'2007-01-01'
GROUP BY year
ORDER BY year asc
FORMAT PrettyCompact
EOF
)

https://www.hamqsl.com/shortcut.html https://www.hamqsl.com/Understanding%20Propagation.pdf k-index data https://isgi.unistra.fr/data_download.php

#radio #wspr