Compare Two Antennas with WSPR
At the end of this tutorial you have a number instead of a gut feeling: how many dB one antenna is ahead of the other, measured by real receivers around the world. Hands-on it takes about 15 minutes — plus the measurement time, in which the beacon simply runs.
Prerequisites
- HAM-Tools installed (WSPR also runs in demo mode — nothing is logged)
- Transceiver with a USB audio codec, connected to the Mac via USB
- CAT set up — not mandatory, but then the app sets band and frequency itself
- Two antennas for the same band — and a plan for switching between them (re-plugging, antenna switch, second feed point …)
- Callsign and locator in Settings → Station
Step 1 — Verify reception
Before the beacon transmits, the return channel should work.
- Open WSPR in the sidebar (among the main applications, below Winlink)
- Set Audio → Input (RX) to the transceiver's USB codec — not the Mac microphone. The first time, macOS asks for the microphone permission.
- Pick Operation → Band (20 m is rewarding during the day, 40 m in the evening). With CAT connected, the radio jumps to the frequency itself.
- Mode USB, better USB-D (data mode) — there the audio comes from the USB codec, with no compressor in front of it.
- Start receiving and wait two to four minutes.
Once the first rows appear under I hear, the chain works. "Waiting for the next even minute" is normal — WSPR only starts on even UTC minutes.
The dial frequency is not the transmit frequency
The WSPR window sits 1400–1600 Hz above the dial frequency — on 20 m the radio shows 14.0956 MHz while the signals sit at ~14.0971 MHz. Don't adjust anything, that's how it's meant to be.
Step 2 — Set up the beacon
- Set Audio → Output (TX) to the USB codec
- Check My details: callsign, four-character locator, power — 23 dBm (200 mW) is the usual beacon level. The value ends up in other people's evaluations, so it should be honest.
- Enable Transmit → Allow transmitting
- Send tuning tone and watch the ALC on the radio: reduce the output level until the ALC just barely responds. The tone has the same amplitude as the later transmission — what's right now is right for the beacon. (20 seconds at most — the tone covers the narrow WSPR window.)
- Leave the transmit fraction at 20 %
Transmit once
The Transmit once button sends one transmission in the next window regardless of the transmit fraction — good for checking the chain before the measurement starts.
Step 3 — Session for antenna A
Now the actual measurement begins.
- Connect antenna A and tune it if needed
- On the left under Operation, type the setup after the pre-filled date in the session field — e.g.
20260828 Dipole— and press Start session - Let reception and transmission run — 45–60 minutes is a good target. At 20 % transmit fraction that works out to five or six transmissions.
- End session
The longer the session, the more stations hear both setups — and the more robust the comparison becomes.
Step 4 — Switch antennas, session for antenna B
- Connect antenna B — change nothing else on the radio: same band, same power, same audio level. Anything that changes along with the antenna ends up in the measurement.
- Name a new session (
20260828 Vertical) and press Start session — a running session is closed automatically - Measure for the same length as antenna A, then End session
Measure back to back
Propagation changes more over hours than any antenna does. The closer the two sessions are together, the less ionosphere ends up in the result. The comparison largely cancels this out via common stations — but "A in the morning, B in the evening" remains a worse measurement than "A and B back to back".
Step 5 — Fetch the transmit-side reports
Whoever heard your beacon reported it to WSPRnet — HAM-Tools fetches the reports via wspr.live:
- Switch the view to Hearing me
- Click Fetch
The transmit side needs patience
The reports often only arrive there completely hours after operation. Thanks to the sessions this doesn't matter: reports arriving later fall into the right time range by themselves. So simply Fetch again in the evening or the next day — the comparison tells you if it still considers the transmit side incomplete.
Step 6 — Evaluate
- Switch the view to Comparison
- Select the two sessions — they appear by name, no reconstructing times from memory
- Set the band in the filter bar
- Evaluate
The result is the median SNR difference over stations that heard both sessions — only those count, because "twelve stations versus eight" measures the ionosphere, not the antenna. The number of common stations sits right next to it, with equal weight: a result from three stations is a hint, one from thirty is a verdict.
If the comparison warns about sessions of very different length, accept the offer to trim to the shorter duration. And on the map (under I hear / Hearing me, with the time range set to one session at a time) you can see whether the two setups differ in a direction — that's what the great circles are for.
Typical pitfalls
| Pitfall | Remedy |
|---|---|
| ALC at full deflection | Reduce the output level — overdrive creates spurious emissions in the 200 Hz wide window |
| Transmit power changed between sessions | Same power for A and B — otherwise you're measuring the power knob |
| "Hearing me" is nearly empty | wspr.live delay — Fetch again later |
| List looks dead but the decoder runs | The time filter is set elsewhere — the notice strip above the list resets it |
| Comparing across several bands | Set one band in the filter bar — cross-band results say nothing |
Next steps
- The WSPR module in detail — automatic band cycling, map, km/W
- Antenna simulator — model the same antenna first: calculate, build, measure, compare
- Session times off? Manage sessions — a corrected boundary reassigns the spots immediately