HF Planner
HF Propagation Analysis
What It Does
Enter your location and target. HF Planner checks current ionospheric conditions and ranks which bands have the best chance of working right now.
Pulls live data from the KC2G ionosonde network, WSPR.live, PSKReporter (all digital modes), and CloudRF. No API keys needed. Works offline with automatic propagation caching.
Install
Works on Windows, macOS, and Linux. Requires Docker Desktop. Open Docker Desktop first, then open a terminal (PowerShell on Windows, Terminal on Mac, any terminal on Linux). Run each line one at a time:
docker network create hfnet
docker volume create hfnet-data
docker run -d --name api --network hfnet -v hfnet-data:/app/data lfmanifesto/hfnet-planner-api:latest
docker run -d --name ui --network hfnet -p 8880:80 lfmanifesto/hfnet-planner-ui:latest
Wait 10 seconds, then open http://localhost:8880. Station profiles are saved to the hfnet-data volume and survive updates.
Update
Stop and remove the old containers, pull new images, and start fresh. Station data is preserved.
docker stop ui api
docker rm ui api
docker pull lfmanifesto/hfnet-planner-api:latest
docker pull lfmanifesto/hfnet-planner-ui:latest
docker run -d --name api --network hfnet -v hfnet-data:/app/data lfmanifesto/hfnet-planner-api:latest
docker run -d --name ui --network hfnet -p 8880:80 lfmanifesto/hfnet-planner-ui:latest
Wait 10 seconds, then open http://localhost:8880.
Stop / Start / Remove
docker stop ui api # Stop (keeps containers)
docker start api ui # Start (resume stopped)
docker stop ui api && docker rm ui api # Remove containers (data kept)
To remove everything including station data:
docker stop ui api
docker rm ui api
docker volume rm hfnet-data
docker network rm hfnet
Features
Link Analysis
Enter TX and RX grid squares, configure station parameters (power, antenna, noise floor), and get ranked band recommendations with SNR margins for all 10 forward modes.
All Modes at Once
All 10 forward modes (JS8Call Slow/Normal/Fast/Turbo, VARA HF SL1/SL2/SL4, Reticulum DATAC4/DATAC3/DATAC1) assessed simultaneously per band. No mode selector needed. The results table shows a Viable Modes column for each band in a single view.
Band Recommendations
All 10 HF bands ranked by physics-based scoring. Shows propagation type (NVIS vs Skip), estimated SNR, margin above decode threshold, and viable modes per band. SNR estimation uses a single unified path combining WSPR beacons, PSKReporter spots (all modes), CloudRF terrain modeling, and theoretical physics, weighted by data quality and volume.
Offline Fallback
API responses are cached automatically. When live data sources are unreachable, cached data is used with a staleness indicator so you always get results.
Massive Spot Coverage
PSKReporter now queries all digital modes (FT8, FT4, JS8, CW, JT65, JT9, PSK31), providing 10-100x more propagation evidence per path compared to JS8-only queries.
Skip Zone Detection
Flags bands where your signal will overshoot the target. Higher frequencies need longer paths to work via ionospheric skip. The app calculates minimum skip distance for each band.
Bidirectional Link Budget
Calculates both TX-to-RX and RX-to-TX paths. Shows the weaker direction so you know if you can actually have a two-way conversation.
Propagation Dashboard
Global WSPR activity by band, geomagnetic conditions, and real-time foF2 from 97 ionosondes worldwide. Shows which bands are open right now.
Station Wizard
Configure stations by selecting environment (urban/suburban/rural/remote), power level, antenna type, and feed line. The wizard calculates noise floor and losses automatically based on ITU-R P.372.
Mode Thresholds
| Mode | Min SNR | Speed |
|---|---|---|
| JS8Call Slow | -28 dB | 8 wpm |
| JS8Call Normal | -24 dB | 16 wpm |
| JS8Call Fast | -20 dB | 24 wpm |
| JS8Call Turbo | -18 dB | 40 wpm |
| VARA HF SL1 | -21 dB | 18 bps |
| VARA HF SL2 | -18 dB | 41 bps |
| VARA HF SL4 | -14 dB | 88 bps |
| Reticulum DATAC4 | -4 dB | 87 bps |
| Reticulum DATAC3 | 0 dB | 321 bps |
| Reticulum DATAC1 | +5 dB | 980 bps |
Data Sources
| Source | What It Provides |
|---|---|
| prop.kc2g.com | Real-time foF2 and MUF from ionosonde network |
| wspr.live | WSPR beacon spot database |
| pskreporter.info | All digital mode spots — FT8, FT4, JS8, CW, and more |
| hamqsl.com | Solar flux index (SFI), K-index geomagnetic conditions |
| cloudrf.com | Terrain-aware NVIS propagation modeling (optional) |
Troubleshooting
| Issue | Fix |
|---|---|
| “docker: command not found” | Install Docker Desktop first |
| “Cannot connect to the Docker daemon” | Open Docker Desktop and wait for it to finish starting |
| “port is already allocated” | Change 8880 to another port: -p 9090:80 then open http://localhost:9090 |
| “network already exists” | Safe to ignore, skip that step |
| “volume already exists” | Safe to ignore, skip that step. Saved stations are preserved. |
| Page does not load | Wait 10 seconds for the API to start, then refresh |
| No data loading | Check your internet connection. All data comes from external APIs. Cached data is used when offline. |
Changelog
| Version | Changes |
|---|---|
| 3.0.0 | All digital modes from PSKReporter (FT8, FT4, JS8, CW — 10-100x more data), all 10 modes assessed simultaneously, propagation cache with offline fallback, unified SNR estimation, 658 tests / 88% coverage |
| 2.1.0 | Above-MUF loss model (ITU-R P.533), path MUF scaling for skip paths, data source indicators, CloudRF elevated to primary, ionospheric excess loss model |
| 1.2.0 | VARA HF support (SL1/SL2/SL4), foF2 uncertainty fix for false negatives, CloudRF noise floor fix, station edit fix |
| 1.1.0 | 399 backend tests, physics validation against ITU-R, CloudRF integration, PSKReporter JS8Call spots |
| 1.0.0 | Station wizard, auto-fallback WSPR (2h-24h), multi-arch Docker (amd64 + arm64) |
| 0.7.0-beta | Bidirectional link analysis, noise floor fix |
| 0.6.0-beta | UI overhaul, JS8Call/Reticulum side by side |
| 0.5.x | Map tab with WSPR spots, ionosonde stations, NVIS circle |
| 0.4.x | Physics-based band ranking, skip zone detection |
Related
ReticulumHF for running Reticulum over HF radio. For support, join Discord or Matrix.
Requirements
- Docker
- Internet connection (optional with cache)
Package Includes
- 10 HF bands
- Real-time ionospheric data
- All 10 modes assessed simultaneously
- Offline fallback with propagation cache
- All digital mode propagation evidence
- Physics-based band ranking
- Bidirectional link budget