Evolution of WSPR

WSPR (weak signal propagation reporter) is a system for recording on a central database, ‘spots’ of transmitting stations by receiving stations.

It is interesting to examine the contribution by transmitting and receiving stations, for without both, the system cannot work.

I downloaded the archive for December 2015 and did some basic analysis to explore the pattern of use on the 40m band, my main band of interest. Importantly, 40m provides opportunity for local, intermediate and long distance propagation though long distance paths might be restricted to just several hours on most days.

Screenshot - 1_01_2016 , 9_16_26 AM

The chart above shows that the T-index was near normal on most days, and 6 days it was quite poor, so propagation conditions during the month will be a little depressed. The effect on 40m is mainly on short ionospheric paths, say 50-500km.

Show me the numbers

The following statistics are summary statistics from the history for December 2015.

Clip 086

Above is a plot of spots by day, it shows some variation, some of which correlates with the T-index. I should note that in the past, close scrutiny of such extracts has revealed gaps, evidence that the site is poorly maintained. There have been mentions of poor performance at this time, and they may have an associated risk of gaps in the data, but gaps are unlikely to bias the conclusions drawn here.

There will also be errors due to incorrectly configured stations recording spots to the wrong band, but they should be small and unbiased.

Key statistics for the study period and band:

  • duration 31 days, though gaps may exist;
  • total spots 2,593,717;
  • total stations 1951;
  • rx only stations 425, 22% of the total;
  • tx only stations 472, 24% of the total;
  • spots from rx only stations 676,679 26% of total spots;
  • spots from tx only stations 717,030, 28% of total spots.


The popularity of tx only activity is possibly explained by two main factors:

  • rx performance with sub standard antennas in noise environments (eg attic dipoles in cities) is poor and unsatisfying;
  • recent availability of low cost tx only equipment, mostly low EIRP, that has low running costs and low monetary risk due to damage from lightning.

I have certainly noticed the low incidence in reception in the UK of my transmissions from Australia compared to the opposite direction, and in that context, I have seen UK stations with very low rx counts bragging about how their transmissions are heard in Australia. Well, perhaps mainly due to better receiving stations in Australia than their own using attic dipoles.

So whilst WSPR quickly evolved into a train spotting activity that for a host of reasons had little value for propagation research and less for antenna system comparisons, it seems to be evolving to a reverse train spotting activity with a growing participation by tx only stations, 24% of the total, who apparently gain satisfaction from the observation of their signal in distant places though they may not be able to have two way QSOs to such destinations which questions the relevance of the activity more generally, other than an activity in its own right.


Analysing this data has been frustrating as there are a large number stations (1145) with just one tx spot, which seems most unusual. If I transmit on 40m, I am usually heard by several stations (or none at all), so I would find it hard to generate one only tx report. Many of these do not look like valid amateur call signs, perhaps the cause is corruption in the radio link. For that reason, the data seems suspect and I have excised all tx records where a station had only one spot and no rx spots, their rx records are unaffected. It raises questions of the integrity of the WSPR system.

If most of the 1145 suspect records are due to receive corruption, a rate of 1145/2,593,717 or ~1/500 might seem pretty low, but in fact it is 1145/2624 distinct received callsigns, or 44% of the distinct received callsigns that are corrupt.

The SQL used for the summary follows.

-- make summary tables
drop table if exists sum;

create table sum as
  select * from 
    (select reporter as callsign,count(*) as nrx from SPOTS group by reporter) as a
    full outer join
    (select callsign,count(*) as ntx from SPOTS group by callsign) as b
    using (callsign);

delete from sum where ntx=1 and nrx is null;