WSJT-X & WSPR for Ham Radio Antenna Testing
WSPR — Weak Signal Propagation Reporter — is a low-power digital beacon mode that reports every reception to a global online database. Run WSPR for 24 hours at 200 mW and wsprnet.org accumulates hundreds of reception reports from stations worldwide. Change your antenna and run again. The before-and-after comparison, with real SNR data from real receiving stations on real propagation paths, gives antenna testing rigour that no other free tool can match.
WSPR (pronounced "whisper") was designed by Joe Taylor K1JT — the Nobel Prize-winning physicist who created the digital weak-signal modes that revolutionised amateur radio. A WSPR transmission encodes your callsign, grid square, and transmit power into a 110-second long transmission using an extremely narrow-bandwidth (6 Hz) FSK4 digital mode. The encoding is highly redundant, allowing receivers to decode signals up to 28 dB below the noise floor — far weaker than any conventional mode.
Every station that decodes your WSPR transmission automatically uploads the spot to wsprnet.org, including their callsign, your callsign, the frequency, the UTC time, the SNR in dB, your reported power in dBm, and the great-circle distance between the two stations. You can then query wsprnet.org for all spots of your callsign and see, for each receiving station, exactly how strong your signal was received over time. Running two antenna configurations in sequence and comparing the median SNR at the same receiving stations gives a precise, statistically meaningful antenna comparison.
Advantages over RBN for antenna testing
WSPR produces far more data points per hour than RBN — a spot every 2 minutes for 24 hours creates 720 data points per day. Statistical averaging of hundreds of measurements per antenna virtually eliminates propagation variability. Low power (200 mW) means the test is repeatable without significant RF risk. Works on all HF bands simultaneously if multiple transceivers are available.
Limitations vs. RBN
WSPR cycles on a 2-minute schedule — you cannot instantly switch antennas and compare. The minimum switching interval is one WSPR cycle (2 minutes), and reliable statistical comparison requires hours of data per antenna. WSPR is a beacon mode only — no QSO capability. The mode requires accurate time synchronisation (GPS or NTP within ±1 second).
What WSPR data reveals
Antenna gain differences as small as 1 dB (with sufficient data averaging). Azimuthal pattern differences between antennas. Height-above-ground effects on take-off angle via distance-vs-SNR analysis. Feedline loss detection (consistent SNR reduction at all receiving stations). Long-term antenna performance trends over days and weeks.
WSJT-X is available free from physics.princeton.edu/pulsar/k1jt/wsjtx.html for Windows, Linux, and macOS. Install the current stable release — version 2.6 or later. WSJT-X handles FT8, FT4, JT65, JT9, WSPR, and several other modes from a single application. For pure WSPR operation, some operators prefer the dedicated WSPR application from the same source, which has a simpler interface focused on WSPR-only operation.
Connect the transceiver's audio output (speaker/headphone jack or rear-panel audio output) to the computer's audio input. Connect the computer's audio output to the transceiver's audio input (microphone or data input jack). If the transceiver has a built-in USB audio interface (most modern transceivers do), use that instead — it is cleaner and avoids ground loop hum. Set the audio levels: receive audio should show the WSJT-X waterfall display with typical HF band noise visible but not overloading.
WSPR transmissions must start within ±1 second of even UTC minutes to be decoded correctly. Enable automatic time synchronisation via NTP (Network Time Protocol) — most operating systems do this by default when connected to the internet. On Windows, verify in Settings → Time → Synchronise Now. For GPS-quality time synchronisation, a cheap USB GPS receiver with gpsd daemon (Linux) or dedicated GPS time sync software (Windows) provides sub-100 ms accuracy.
In WSJT-X, select Mode → WSPR. Enter your callsign and 6-character grid square in the Station Settings. Set the transmit frequency to the standard WSPR dial frequency for your chosen band (listed in the table below). Set TX power (dBm) to your actual transmit power — this is reported to the database and used for path loss analysis. Set the Tx percentage to 20% (transmitting 2 minutes in every 10 for a casual test) or 100% (transmitting every 2-minute period for maximum data generation).
In WSJT-X File → Settings → Reporting, check "Upload spots" to wsprnet.org. Enter your callsign. WSJT-X automatically uploads every received and transmitted spot to the database in real time. Verify operation by checking wsprnet.org/drupal/wsprmap after 10 minutes — your callsign should appear on the map as a transmitting station with spots from receiving stations drawn as lines to their locations.
| Band | WSPR dial frequency (USB) | Actual TX frequency range | Notes |
|---|---|---|---|
| 160 m | 1.836600 MHz | 1836.600–1838.600 kHz | Night-time propagation |
| 80 m | 3.568600 MHz | 3568.600–3570.600 kHz | Night-time regional/DX |
| 40 m | 7.038600 MHz | 7038.600–7040.600 kHz | Most active WSPR band |
| 30 m | 10.138700 MHz | 10138.700–10140.700 kHz | Excellent activity |
| 20 m | 14.095600 MHz | 14095.600–14097.600 kHz | Worldwide coverage |
| 17 m | 18.104600 MHz | 18104.600–18106.600 kHz | Good daytime DX |
| 15 m | 21.094600 MHz | 21094.600–21096.600 kHz | Solar cycle dependent |
| 10 m | 28.124600 MHz | 28124.600–28126.600 kHz | Best at solar maximum |
| 6 m | 50.293000 MHz | 50293.000–50295.000 kHz | Sporadic-E indicator |
| 2 m | 144.489000 MHz | 144489.000–144491.000 kHz | Tropo detection |
The fundamental principle of WSPR antenna comparison is straightforward: run Antenna A for a period, switch to Antenna B for the same period, compare the median SNR from common receiving stations. The challenge is separating real antenna differences from propagation variability. The longer each antenna runs, the more propagation variability is averaged out and the smaller the true antenna difference you can reliably detect.
The interleaved WSPR test — best practice
Rather than running Antenna A for a full day then Antenna B for a full day (during which propagation conditions may have changed significantly), use the interleaved approach: switch antennas every hour, alternating between A and B. After 12 hours you have 6 hours of data per antenna, collected during similar propagation conditions. Compare the median SNR from each receiving station for the A periods vs. the B periods — the median removes occasional outliers from propagation spikes.
Set an alarm or automated relay for hourly antenna switching. Use a coaxial relay controlled by a timer or a simple manual switchbox. Record the exact UTC times of each antenna switch — you will need these to separate the wsprnet.org database records by antenna. Keep a simple log: "14:00–15:00 UTC — Antenna A; 15:00–16:00 UTC — Antenna B; 16:00–17:00 UTC — Antenna A" and so on.
Go to wsprnet.org/drupal/wsprmap and click on your callsign. From the Spots page, download all spots for your callsign over the test period as a CSV file. The CSV includes: Timestamp, Reporter callsign, Reporter grid, SNR, Frequency, TX power, Distance, and Azimuth. This is the raw dataset for your analysis.
Using a spreadsheet (Excel, LibreOffice Calc, or Google Sheets), import the CSV. Add a column "Antenna" populated by an IF formula comparing the timestamp to your switching log. For example: =IF(AND(HOUR(A2)>=14,HOUR(A2)<15),"A",IF(AND(HOUR(A2)>=15,HOUR(A2)<16),"B","A")). Sort and filter by antenna and by reporting station callsign.
For each reporting station that has at least 5 reports for both Antenna A and Antenna B, compute the median SNR for each antenna. The median is more robust than the mean for this application because individual SNR reports can swing wildly due to propagation events. Subtract: Median(Antenna B SNR) − Median(Antenna A SNR) = the antenna difference in dB from that station's direction.
Each reporting station has an azimuth (compass bearing from your station) available in the wsprnet database. Plot the SNR difference (B − A in dB) as a function of azimuth — this produces an empirical radiation pattern difference between the two antennas. A directional antenna should show positive SNR differences in the beam direction and negative or zero differences off the sides and rear. This azimuth-difference plot is the most informative output of the WSPR antenna test.
WSPR A/B Antenna Test Interpreter
PSKReporter (pskreporter.info) is the FT8, FT4, and digital mode equivalent of wsprnet.org — a crowdsourced reception database where every FT8 transmission you make is automatically spotted and logged by other stations running WSJT-X. Unlike WSPR (which requires a dedicated 110-second beacon transmission), FT8 spots are generated as a by-product of normal operating — every CQ call in FT8 mode generates PSKReporter spots from all stations that receive it without specifically responding.
PSKReporter provides a real-time map showing which stations are currently receiving you and at what SNR. For antenna testing, PSKReporter provides the fastest feedback loop of any testing method — within 15 seconds of your FT8 CQ call, the map updates with reception reports. Switching between antennas and comparing the immediate PSKReporter response is a fast qualitative antenna assessment that complements the more statistically rigorous WSPR comparison.
Using PSKReporter for antenna testing
- Go to pskreporter.info and enter your callsign in the "Heard by" field to see which stations are receiving you right now
- Select a time window of "Last 15 minutes" for real-time comparison during active antenna switching
- The colour-coding of the spots by SNR allows immediate visual comparison — more green spots (high SNR) on Antenna A vs. Antenna B indicates the better performer
- Filter by azimuth to focus on specific directions — if testing a directional antenna, filter for reception reports from your beam direction vs. off-axis directions
- Export spot data to CSV for the same statistical analysis approach used with wsprnet.org data
WSPR data is not only useful for antenna comparison — it is one of the most sensitive real-time HF propagation indicators available. The WSPR database records propagation conditions continuously from thousands of stations worldwide, creating a detailed time-vs-frequency picture of ionospheric behaviour that is invaluable for planning operating sessions and understanding why signal conditions change.
Using WSPR to assess band openings
Before transmitting on a new band, check wsprnet.org to see what WSPR spots have been reported on that band in the last hour. A sudden appearance of DX callsigns in the spots list from a specific geographic direction is a reliable indicator of a band opening in that direction. WSPR spots from stations thousands of kilometres away appearing when propagation seemed dead typically indicate F2, sporadic-E, or transequatorial propagation opening — often too weak for conventional modes but detectable by WSPR's 28 dB below noise capability.
WSPR as a solar cycle / ionospheric monitor
WSPR activity on 10 m and 15 m reliably reflects solar activity. When 10 m WSPR shows regular transatlantic spots, the solar flux is high enough for F2 propagation at those frequencies. During solar minimum, 10 m WSPR spots become rare or absent. Comparing WSPR activity on different bands at the same time reveals the Maximum Usable Frequency (MUF) for specific propagation paths — a valuable tool for planning DX operations.
Advanced WSPR Analysis — Using wsprnet.org DataDownloading and processing WSPR data
wsprnet.org provides several ways to access historical data. The main interface allows downloading spot data as CSV. The WSPRnet API (undocumented but widely used) allows querying by callsign, band, and time range programmatically. Several third-party tools have been built on the WSPR database:
- DXplorer (dxplorer.net): Interactive WSPR data analysis with azimuth plots, time-of-day analysis, and band comparison charts. Excellent for visualising antenna directivity patterns from WSPR data
- WSPR analytics (wsprana): Python library for programmatic WSPR data analysis — download, filter, and plot WSPR data in Jupyter notebooks for custom antenna test analysis
- WSPR.live: Real-time WSPR reception map with historical replay — useful for watching propagation openings develop in real time
- Gridtracker: Standalone application that connects to WSJT-X in real time and plots PSKReporter and WSPR spots on a world map, providing real-time band condition and antenna comparison visualisation
Interpreting WSPR SNR values
WSPR SNR values are reported relative to the noise floor in a 2.5 kHz reference bandwidth, measured at the receiving station. The values are negative dB (signals below the noise floor in the reference bandwidth) — values of −30 dB are typical for signals decoded near the sensitivity limit. The actual received signal-to-noise ratio in the 6 Hz WSPR channel is approximately 28 dB higher than the reported value, reflecting the processing gain of the WSPR decoder. When comparing antennas, the absolute SNR value is less important than the difference between the two antennas — what matters is the consistent direction and magnitude of the SNR change across multiple reporting stations.
i.e. ΔSNR = Antenna B gain − Antenna A gain for same power, same path
Scenario 1: Comparing dipole heights
Antenna A: dipole at 8 m. Antenna B: same dipole raised to 12 m. Run interleaved hourly on 40 m for 24 hours. Expected result: Antenna B shows 1–3 dB better SNR from distant stations (lower take-off angle) and possibly slightly worse SNR from near-ground stations. The pattern difference reveals the actual benefit of the height increase at your specific site on a real propagation path.
Scenario 2: Validating a new Yagi
Antenna A: existing wire dipole at 10 m. Antenna B: new 3-element 20 m Yagi at 12 m pointing toward Europe. Run on 20 m. Expected result: Antenna B shows 5–8 dB better SNR from European stations (forward direction), approximately equal or worse SNR from US and Asian stations (off-axis or rear). If the Yagi shows worse performance than the dipole in all directions, the Yagi has a fault — investigate feed point, element dimensions, and phasing.
Scenario 3: Detecting feedline loss
Run WSPR on an antenna that you suspect has increased feedline loss (after a storm, after cable work). Compare the current performance against stored historical WSPR data from the same time of day and season from several months ago. A consistent 2–4 dB reduction across all reporting stations points to feedline loss. A reduction only in specific azimuth directions points to pattern change (possibly a broken element).
Scenario 4: Multi-band efficiency comparison
Run WSPR simultaneously on 40 m, 20 m, and 15 m from a multi-band antenna. Compare the median SNR on each band against expected performance (from antenna model predictions). If the 20 m performance matches prediction but 15 m underperforms by 4 dB, there is a problem with the 15 m matching — possibly a trap fault or tuner inefficiency that the SWR meter does not reveal.
Frequently Asked QuestionsWhat power should I use for WSPR antenna testing?
200 mW (23 dBm) is the standard WSPR testing power and is intentionally low — it keeps you well within legal QRP power limits, generates minimal interference, and still produces spots from stations thousands of kilometres away when propagation is open. Lower power (100 mW, 50 mW) gives fewer spots on marginal paths but is entirely valid. Higher power produces more spots in marginal conditions but is not necessary and wastes the advantage of WSPR's sensitivity.
How long should I run each antenna for a reliable comparison?
For a 3 dB difference, 4–6 hours per antenna (interleaved) with 20+ reports per station gives reliable results. For a 1 dB difference, 12–24 hours per antenna is needed. For a 6 dB difference, even 1–2 hours per antenna is usually sufficient. The key metric is the number of reports per station per antenna — aim for at least 10 reports per station per antenna before computing medians.
Can I run WSPR while also operating normally?
WSPR operates on a dedicated frequency segment within the amateur band that is clearly separate from SSB and CW activity. You can run WSPR on one radio while operating SSB on another. If you have only one radio, WSPR's 110-second transmission cycle leaves 10-minute gaps between transmissions (at 10% TX rate) during which you can operate normally, but coordinating this with contacts is difficult in practice.
Why does my WSPR SNR vary so much from report to report?
WSPR SNR variability of ±3–5 dB from report to report is normal and reflects real propagation variability — ionospheric scintillation, multipath interference, and QSB (selective fading) all cause rapid signal strength changes on HF. This is why median rather than mean is used for antenna comparison analysis, and why many reports per station are needed for reliable results. The variability is not a measurement error — it is the physics of HF propagation.
What does a negative WSPR SNR mean?
WSPR SNR is reported relative to the noise floor in a 2.5 kHz reference bandwidth. A value of −20 dB means the signal is 20 dB below the noise floor in that bandwidth — well below what any conventional mode could decode, but within WSPR's exceptional sensitivity. The WSPR decoder can work down to approximately −30 dB in the 2.5 kHz bandwidth, which corresponds to the signal being visible only in the 6 Hz WSPR channel after correlation. These extreme negative values are normal for long-distance DX paths.
Is WSPR receive-only useful for antenna testing?
Receive-only WSPR (monitoring other stations' transmissions without transmitting yourself) is useful for propagation monitoring but not for antenna comparison testing of your own transmit antenna. However, running WSPR receive-only on two different receive antennas and comparing SNR from the same transmitting stations is an excellent method for comparing receive antenna performance — particularly useful for comparing receive-only antennas (K9AY loops, pennant antennas, beverage wires) against a reference.