CommCalc
Offline-first · No accounts · Built for the fieldOffline-first · OPSEC-safe · Built for the field

Field radio planning that works with no signal.

Antennas, bearings and ranges, HF propagation and skip zones, rebroadcast relay siting, terrain coverage and a full signaller reference — computed on your device, in your browser. Nothing leaves the radio unless you press a network button.

See what it does
✓ Works offline (PWA)✓ 130+ tested calculations✓ MGRS · UTM · OSGB · lat/long✓ ATAK / KML export

Everything you plan on the bands, in one placeEverything a signaller plans, in one place

Nineteen tools, grouped so you go straight to the job.

Built like a field tool, not a website

📡

Truly offline

Every calculation runs on your device. Installs as an app and keeps working with no connection — the maps, terrain and space-weather fetches are optional and consented.

🔒

OPSEC by design

No accounts, no tracking, no backend. Coordinates are session-only and wiped on close or inactivity. A strict Content-Security-Policy blocks any undocumented egress.

🎯

Verified maths

The physics lives in one tested core — 130+ unit tests — so every value on screen is a value that was checked. Planning-grade, and honest about it.

🧭

Field-ready

Metric or imperial, degrees or mils, grid/magnetic bearings, a Zulu clock and a signaller reference card. Export the plan to ATAK, KML or a printable siting card.

⚠ EXERCISE — notional data, not for operational use

Conditions now

Not yet fetched — tap Update (needs a connection).
Live HF space weather from NOAA SWPC — solar flux (SFI) drives the usable high bands; the planetary K index (Kp) flags geomagnetic storms that degrade HF. Feeds §5 propagation and the §19 band planner. Planning-grade.

Quick start

Jump straight to a band — sets the frequency and computes the antenna cut, band and propagation for it.

Enter a callsign (and your grid in §2) for country, beam heading and distance.
📋 Basic view — just the essentials for a plan (antenna, location, path & propagation, siting card). Switch to Advanced (top right) for bearing tools, terrain, arrays, coverage and plugins.

1 · Frequency & Antenna

The only field the antenna output needs.
Advanced: ground & elevation pattern
Elevation pattern from the Fresnel ground-reflection coefficient (εc = εr − j·18000·σ/f). Real ground lifts the take-off angle above the ideal — most for verticals over poor soil. Uses the own antenna height from §4.

2 · Location — own & distant station

🔒 Locations are held only for this session and are wiped on close or inactivity — never saved to disk or presets.
🔒 Your locations stay on this device — no account, no tracking, nothing uploaded. They're kept for this session only and wiped on close or idle.
🛡️ OPSEC — coordinates never leave the device, are wiped on close or after 15 min idle, and are never written to disk, presets or a shared URL. Use the red Wipe button in the top bar to sanitise instantly before handing off.
4/6/8/10-figure grids accepted. Leave distant blank to just decode your own grid.
From the map margin. Converts grid → magnetic (compass) bearing.

3 · Bearing tools

Back-bearing = bearing ± 180° (± 3200 mils). NATO mil: 6400 mils = 360°.

4 · Path, horizon & link budget

Also sets the take-off angle in §1.
Link budget (optional)
Fading & reliability (planning)
Fade margin is added on top of the link budget above. Requires Tx power, frequency and Rx sensitivity.

5 · Propagation planner

Day/night is worked out from this time and your grid.
Blank = derive from distance.

6 · Sky-wave hops

A side-on view of the HF path in §5: the ray leaves your antenna at the take-off angle, refracts off the reflecting ionospheric layer (E/F1/F2, drawn at scale), and bounces back to earth once per hop. Diamonds mark the intermediate ground bounces where a multi-hop contact touches down; the dashed line is the skip distance — the nearest range a sky wave returns to, inside which lies the zone of silence. Heights and hop counts come straight from the propagation model; everything is drawn offline.

7 · Terrain line-of-sight

No terrain cached yet.
Samples ground elevation along the great-circle path (Open-Meteo, needs internet), corrects for 4/3 effective earth radius, and checks first-Fresnel-zone clearance for the frequency in §1. Antenna heights from §4 are added at each end. Offline reuse: profiles you fetch are cached for this session; tick Keep terrain offline to store them on this device so the same paths and coverage work with no signal in the field. The OPSEC Wipe clears the cache.
Fires 16 radials from your own station, samples the ground along each (Open-Meteo, needs internet) and finds how far a receiver stays in line-of-sight over the terrain — the radio horizon where the ground is low, cut short by hills. Uses the §4 own-antenna height. A north-up viewshed; planning aid, not a full ITM/Longley-Rice model.

8 · Weather & light

Sun & moon are computed on-device and work offline. The weather forecast uses Open-Meteo (needs internet; you'll be asked before your location is sent). Times shown in your device's local zone.

9 · Visualise

Uses this device's Google Maps — no API key needed. Needs internet.
Optional — click-to-place with your own Maps JavaScript API key (advanced)
Click sets:

📡 Rebroadcasting

relay siting & multi-band chains — extend range beyond a single link

10 · Relay siting (RRB)

Plot candidate relay / rebroadcast sites between your own and distant stations. Each site splits the path into two legs — a relay only helps when both legs close. Uses §2 grids and the §4 range; drawn offline.

The map is a north-up offline plot of the stations and candidate relays; the best candidate (★) is joined to both stations. “Relay route in Google Maps” opens the two-leg path on this device’s Google Maps (needs internet, and sends only the plotted coordinates after the one-time consent). Site coordinates are session-only — they’re wiped on close/idle and never saved to presets.

11 · Complex / multi-band relay

Build a relay chain — own → relay 1 → relay 2 → … → distant — where each leg can use its own band. Set the band that reaches each relay; a relay whose inbound and outbound bands differ is a cross-band rebroadcast (⇄). Every leg must close for the chain to work.

Legs are laid out left→right by distance and coloured by band: VHF/UHF (line-of-sight), HF (sky-wave/NVIS), MF/LF (ground wave); a dashed red leg is too far for its band. LOS legs are capped by the §4 radio horizon; HF and lower are propagation-managed (see §5 & §6). Relay coordinates are session-only — wiped on close/idle, never saved to presets.

12 · Siting card

Save the plan (stations, relays & chain) as a map file for ATAK or Google Earth. Written on-device — nothing is sent.

13 · Antenna array & azimuth pattern

Omnidirectional = uniform coverage; directional (Yagi/panel) = a main lobe set by its 3 dB beamwidth and front-to-back ratio. Add several antennas to model a radio that switches between arrays — the plot shows the best-of (max) coverage envelope. North is up; bearings are grid/true degrees.

14 · Coverage & rebroadcast

Each station covers a circle of the given radius (its line-of-sight / reliable planning range — see §4/§5). The heat map shows combined coverage over the area: brighter green = stronger signal, and a blue tint marks where two or more stations overlap (redundancy / hand-over). Coordinates auto-detect MGRS, OSGB or lat/long. Everything is computed offline.

15 · Plugins

No plugins loaded.
Companies and SDR vendors can extend the tool without touching core — adding antenna materials, ground types, live data feeds (e.g. an SDR) and custom panels via CIS.plugins.register(…). See PLUGINS.md. Plugins run under the same offline security policy: scripts are same-origin only, so contacting a new remote host is a deliberate, reviewed change to the CSP.

🧰 Toolbox & reference

quick RF conversions and field references — everything offline

16 · RF toolbox

Pure conversions, computed on-device. Power converts between watts, dBm and dBW; VSWR ↔ return loss ↔ reflection coefficient with the resulting mismatch (reflected-power) loss; EIRP is referenced to isotropic and ERP to a half-wave dipole; wavelength lists the ½, ¼ and ⅝ cuts.

17 · Antenna designs

Starting cut-to-length dimensions from the standard resonant formulas with a ~0.95 wire velocity factor (dipole ≈ 468/f in feet). These are a starting point — always trim to resonance with an analyser/SWR meter. Lengths follow §12 units (metric/imperial). Computed offline.

18 · Signaller reference

—
Phonetic alphabet & numerals
Prowords (voice procedure)
Q-codes
RST — readability / strength / tone
CTCSS tones & DCS codes
A quick field card — NATO/ICAO phonetics and numerals, common voice-procedure prowords, Q-codes, the RST scale, and the standard CTCSS sub-audible tones / DCS codes. All offline. Prowords and Q-codes are aids to plain, clear voice — follow your unit's own voice procedure and CEOI.

📻 24-hour planning

which HF band, which hour — from this app's own ionospheric model

19 · HF band planner (24 h)

A band × hour workability grid for the §2 path, computed offline from this app's ionosphere model with the §8/§5 season and any live SFI (§5). Green = workable (deeper = more margin), red = above the MUF (signal penetrates — lower the band), blue = below the LUF (daytime D-layer absorbs it — raise the band). Hours are UTC; day/night is the sun at the path midpoint. Planning-grade — confirm critical links with a live prediction (e.g. VOACAP) or a sounding.

Co-site frequency check

Paste the frequencies operating at one site (MHz). Flags channels too close together, harmonics, and 3rd-order intermod products that land on another channel — the usual causes of co-site desense.

Harmonics checked to the 3rd; intermod to 3rd order (2·f1±f2). Planning aid — real co-site behaviour also depends on antenna isolation, filtering and power. Frequencies are treated as on-device data (not saved to presets).

How it's computed — methods & accuracy

Every result is computed on your device from published models. This is what each one uses and where its limits are — so you can trust it, and know when to confirm against a reference.

Coordinates & geodesy

WGS84 throughout. Distance and bearing by Vincenty's inverse formula; grid bearing applies a first-order grid-convergence correction; MGRS/UTM are standard; OSGB uses a ~few-metre Helmert transform (not OSTN15).

Distances and bearings are sub-metre; confirm the grid-magnetic angle from your own map sheet.

Path, horizon & link budget

Free-space path loss plus feeder loss (coax dB/100 m scaled by √frequency) and antenna gains; radio horizon from antenna heights over a 4/3 earth.

A clear-path upper bound — real links sit below it once terrain, clutter and multipath are included.

HF propagation & bands

This app's own ionospheric model: F-layer MUF from solar flux, time of day and season, and D-layer absorption for the LUF. The 24-hour band planner and the skip zone build on it.

Planning-grade, not a point-to-point reliability prediction — confirm critical links with VOACAP or a live sounding.

Terrain line-of-sight & coverage

Public elevation data (Open-Meteo), sampled ~1 point / 2 km along the path (or on 16 radials for coverage), with a 4/3 effective earth radius and first-Fresnel-zone clearance for the §1 frequency.

Limited by the elevation model's resolution; verify near-zero clearances on the ground.

Antennas

Resonant ¼λ / ½λ cuts from a velocity-factor constant; elevation and azimuth patterns from idealised models over selectable ground.

Theoretical — trim to resonance with an analyser/SWR meter; real patterns vary with height and ground.

Space weather

Solar flux (10.7 cm) and the planetary K index (Kp) from NOAA SWPC, applied to the propagation model when you fetch them.

Live only when fetched; otherwise a typical baseline is used.

Sun, light & greyline

A standard solar-position algorithm gives sunrise/sunset, civil twilight and solar noon; the greyline window is civil twilight at either end of the path.

Astronomical times are accurate to well under a minute; local terrain can shift practical first/last light.

All computation is offline and on-device. Nothing is transmitted unless you press a network button (live map, terrain, weather, space weather). See README, PRIVACY.md and SECURITY.md.

Planning aid only — verify before operational use. Antenna lengths are theoretical ¼λ cuts (length = material constant ÷ frequency in MHz); trim to resonance with an analyser/SWR meter. Bearings/ranges use the WGS84 ellipsoid (Vincenty); grid bearing uses first-order grid convergence. Confirm the grid-magnetic angle from your own map sheet. Propagation figures are typical planning values, not a live ionospheric prediction (e.g. VOACAP) — actual MUF/foF2 vary with solar activity and space weather. OSGB uses a ~few-metre Helmert transform (not OSTN15). Terrain clearance uses public elevation data — verify near-zero clearances on the ground.

Privacy & data. All calculation runs on your device. Nothing is collected, tracked, or sent anywhere unless you press a network button — and the first time you do, it asks first. Only three services are ever contacted, and only when you use them: the live map and map click send your coordinates to Google Maps; the terrain profile sends the coordinates along your path to Open-Meteo; space weather fetches indices from NOAA SWPC (no location sent). A Content-Security-Policy blocks the app from contacting anything else. Any Google Maps API key you enter is stored only in your own browser. See PRIVACY.md.

OPSEC. Entering real positions and then using the map or terrain buttons transmits those positions to a third party. For sensitive locations, keep to the offline features (which is everything else) or use notional grids.

Legal. This is a calculation and planning aid. It does not transmit on any radio frequency, control any equipment, or provide targeting. You are responsible for complying with the laws that apply to you — including radio-spectrum licensing, export/dual-use rules, data-protection law, and operational-security policy in your jurisdiction. Provided “as is”, without warranty; not legal advice. Do not use where prohibited. See SECURITY.md and the licence.