HF Link Planner

Methodology & Accuracy

What the engine computes, which ITU-R recommendations it implements, where it deviates from the literal text, and its measured compliance against ITURHFProp, the ITU's own implementation of P.533-14.

Last updated: 5 October 2026 Engine version: 2.20.0 · validated against ITURHFProp (P533 v14.2)

1. What the engine computes

Given a transmit/receive pair, date/time, and space-weather indices, the engine produces the frequency window that will support the link (basic and operational MUF50, FOT, LUF), an expected time availability (reliability), and field-strength / SNR predictions per candidate frequency. The computation follows ITU-R P.533-14 as its top-level algorithm, with ionospheric inputs from ITU-R P.1239-4 (the CCIR maps) and noise from ITU-R P.372.

  • Frequency window: the path basic MUF of ITU-R P.533-14 §3.1 (the higher of the lowest-order E and F2 modes' basic MUFs; fBM of §5.3.1 beyond 9000 km) and its decile envelope (10 / 50 / 90 %); operational MUF50 = basic MUF50 · Rop for F2 (ITU-R P.533-14 §3.7, P.1240-2 Table 1; fM of §5.3.1 beyond 9000 km); FOT = OWF, the operational MUF exceeded on 90% of days (P.533-14 §3.7, P.1240-2 §7: Fl · OPMUF, not capped), so it can sit above the basic MUF50 and is always below the operational MUF50; and the LUF, the lowest frequency whose P.842 basic circuit reliability meets the required reliability at the required SNR.
  • Field strength and SNR: ITU-R P.533-14 Part 2 by path length. Up to 7000 km, the §5.2.2 field of every mode §5.2.1 selects, each on its own ray (§5.1: eq 13 at the reflection height of eqs 14 to 16 for the operating frequency), with Lz = 8.72 dB and the transmit and receive antenna gains read at that mode's own takeoff angle, summed by power (eq 28 for the field, eq 44 for the received power the SNR is worked from). From 7000 to 9000 km the §5.2 and §5.3 results are interpolated (§5.4, eq 42); beyond 9000 km the §5.3 composite field is used alone (eq 39, Ly = −0.14 dB, with the largest antenna gain between 0 and 8 degrees). The LUF is searched on the same field.
  • Ionospheric layers: foF2, foF1, foE, foEs, M(3000)F2, hmF2 at path midpoint and per-hop reflection points.
  • Absorption: P.533-14 equation 20 for each mode, averaged over the Table 1d control points along the great circle and scaled by that mode's number of hops.
  • Mode selection: the field strength sums the modes P.533-14 §5.2.1 selects: up to three E modes on paths up to 4000 km and six F2 modes from the lowest-order one. F1 and sporadic-E modes are not in that sum. The engine also reports a controlling mode (the fewest hops at an elevation of at least 2 degrees), which P.533 does not define.
  • Reliability: ITU-R P.842-5 Table 1 Step 11 basic circuit reliability, the probability that the predicted SNR meets the SNR the circuit requires, given the upper and lower deciles of that SNR. It is quoted against a required SNR that you set, because a reliability figure without its threshold cannot be checked by the person reading it. The day to day spread of the maximum usable frequency is already carried inside the P.842 deciles and is not applied a second time.
  • Antennas: horizontal dipoles, inverted Vs, LPDAs and Yagis use the image method over a perfectly conducting ground, with height and frequency, less a flat 1.5 dB allowance for average ground; rhombics and Beverages use empirical elevation patterns; imported patterns are used as supplied.
  • Path routing: short-path (great-circle) and long-path (antipodal) both supported.

2. ITU-R recommendations implemented

RecommendationScopeWhere
P.533-14HF propagation prediction (master algorithm)HFPropagationEngine.ts
P.1239-4Reference ionospheric characteristics: CCIR foF2 & M(3000)F2 from the 1.5 degree gridded maps the ITU reference implementation reads, with the Fourier coefficients (76/49 coeffs) as the fallback while a month's map loadsccirGrid.ts, ionosphericModel.ts, ccirEvaluation.ts
P.1239 Annex 2 (Bradley-Dudeney)hmF2 from M(3000)F2 + foF2 / foE ratioionosphericModel.ts::calculateHmF2
P.533-14 §5.2.2Non-deviative absorption (D & lower-E region): equation 20 as printed, with the absorption factor of Figures 1 to 3absorptionModel.ts::p533NonDeviativeAbsorption, p533AbsorptionTerm.ts
P.1240-2Operational MUF: Rop of Table 1 applied to the F2 basic MUFp1240Muf.ts, p1240Opmuf.ts
P.533-14 §5.1 to §5.4, §6Median field strength and received power: the §5.2 mode sum (each mode on its §5.1 ray, with its own antenna gains, Lz = 8.72 dB) up to 7000 km, the §5.4 interpolation to 9000 km, the §5.3 composite field (Ly = −0.14 dB) beyondmultiModeField.ts, fieldStrength.ts::makeP533SignalModel, longPathField.ts
P.531-13SID / X-ray flare absorption (Davies 1990 calibration)absorptionModel.ts::calculateSIDAbsorption
P.533 §5.2.2 Table 2Auroral and other signal losses (Lh), averaged over the Table 1d control points as the Recommendation requires. A K-index storm increment is added on top as a documented non-ITU extension, because Table 2 carries no geomagnetic term.p533Auroral.ts, absorptionModel.ts
P.372-13Radio noise. Atmospheric noise uses the real worldwide numerical map (CCIR Report 322), ported from the ITU reference implementation and reproducing it to within 0.003 dB. Galactic and man-made noise are the P.372 curves, with the man-made noise deciles of P.372-17 Table 2.p372Atmospheric.ts, noiseModel.ts
P.842-5Basic circuit reliability, Table 1 Step 11 piecewise BCR, computed against a required SNR that you set. Measured against ITURHFProp: mean error 10.2 points, bias +2.3 points (section 4).statisticalReliability.ts
P.525Free-space basic transmission lossfieldStrength.ts
IGRF-14 (epoch 2025)MODIP grid for the coefficient fallback only; the gridded maps carry the CCIR maps' own 1958 fieldmodipCalc.ts

3. Documented deviations from ITU-R literal

These are the places where the engine departs from, or adds to, the printed Recommendations, each with its rationale. Deviations the engine no longer applies are kept below, marked removed, so that a result from an older engine version can still be read.

3.1 Equatorial Ionisation Anomaly (EIA) damping (REMOVED)

This engine used to damp predicted foF2 in the daytime on paths whose midpoint fell in the anomaly crest region. That damping has been removed. It is not part of ITU-R P.1239, and the engine agrees better with the ITU reference implementation without it. foF2 is now the CCIR map value everywhere.

3.2 Tropical reliability ceiling (REMOVED)

This engine used to cap reliability between 75 and 95 per cent, graded on latitude, for paths whose midpoint sat within 20 degrees of the equator. That cap has been removed.

It was not a refinement, it was a defect. ITU-R P.533 Attachment 1 correctly returns zero probability of equatorial scattering in daylight, and the engine was reading that correct zero as "no value supplied" and falling back to the empirical ceiling. On a daytime equatorial path the reliability the tool reported was the ceiling itself, not a prediction: it did not respond to power, antenna, frequency or noise. Equatorial scattering is now applied only where P.533 says it occurs.

3.3 Greyline reduction (REMOVED)

This engine used to take 8, 5, 4 or 2 dB off the absorption, and so off the LUF, on paths that cross or touch the solar terminator. That reduction is no longer applied: it is not in P.533-14, and the field now follows the Recommendation. The planner still marks a greyline path, and the figure shown beside that mark does not enter the prediction.

3.4 Multi-mode Rayleigh fading σ

The default reliability takes its spread from P.842-5 itself: the signal, within-the-hour and noise deciles it prescribes. The engine also works out an SNR spread σ of its own, which it reports with each prediction and uses for the stability labels. When it identifies multiple co-present propagation modes, that σ is widened to 4.5 / 6.5 / 8 dB for 2 / 3 / 4+ active modes to reflect the measured multipath penalty. It sets the reliability only in the VOACAP-compatible calibration mode.

3.5 Sporadic-E

foEs and its deciles come from the ITU-R P.1239 numerical maps. P.533 has no sporadic-E propagation model, so the rest is the engine's own. The probability that foEs exceeds 5 MHz is read from those deciles as a log-normal distribution, and multiplies the reliability when the controlling mode is sporadic-E. When an empirical blanketing frequency (0.65 × foEs) is above the operating frequency, the reliability of the other modes is multiplied by the probability that the layer is absent. This extends P.533 rather than contradicting it.

3.6 LUF ≥ 25 MHz semantic

VOACAP emits LUF ≥ 25 MHz as a "no frequency meets the required reliability" sentinel. Our LUF is defined differently (the lowest frequency whose P.842 basic circuit reliability meets the required reliability at the required SNR, as section 4.2 states), so the two are not directly comparable above about 25 MHz. The VOACAP check in §4.1 drops LUF comparisons above that threshold rather than pretending they're comparable.

3.7 Above-MUF experimental extrapolation (REMOVED)

This engine used to estimate availability above MUF50 with a scattering-loss model of its own. That estimator is no longer used. Above each mode's basic MUF the field now carries the loss ITU-R P.533-14 §5.2.2 prescribes there (equations 24 to 26, as printed) on paths up to 9000 km; beyond 9000 km the §5.3 method is used alone. The frequency chart still hatches the band above the basic MUF10 and labels it experimental, as a caution: the basic MUF reaches that band on fewer than 10 per cent of days.

3.8 D-region sec(φ) cap and cosp exponent (REMOVED)

This engine used to work the non-deviative D-layer absorption from a fitted constant, with sec(i) capped and the cosp exponent fixed at p = 1.3. Those are gone. The absorption is now equation 20 of ITU-R P.533-14 §5.2.2 as printed: the absorption factor varies with latitude and month (Figure 1), its daily exponent p with magnetic dip and month (Figure 3), and sec(i) is not capped.

In one place this departs from ITURHFProp, on purpose. Figure 1 prints a southern-hemisphere month axis six months on from the northern one, and the engine enters the figure that way; the reference implementation does not. On southern-hemisphere paths the two differ by design.

3.9 Sudden Ionospheric Disturbance (SID) calibration

ITU-R P.531-13 §4.3 acknowledges D-region absorption boost during X-ray flares but does not publish a dB-vs-flux fit. The engine uses an empirical Davies (1990, Fig 10.4) fit: +12 dB at 10 MHz per decade of flux above 10⁻⁷ W/m², applied from C1 (10⁻⁶ W/m²) upward, gated by cos(χ) so only the dayside is affected, and scaled f−1.5 to account for the same frequency dependence as quiet D-region absorption. C-class peaks ≈ +12 dB; M-class ≈ +24 dB; X1 ≈ +36 dB on directly sub-solar paths, fading to zero at the terminator.

3.10 Auroral storm increment

The auroral loss Lh itself is P.533-14 §5.2.2 Table 2 (section 2). Table 2 has no geomagnetic storm term, so the engine adds an empirical K-index increment on top: the rise of its own auroral model above its value at K = 2, so it is zero at K ≤ 2. It is latitude-banded (largest poleward of 70°, smaller at 60 to 70° and 55 to 60°, and nothing below 55° unless K ≥ 7), steepens at K = 5, 7 and 9, scales as f−1.5, and counts once per hop. It is not calibrated against riometer or storm data: treat its size at high K as indicative.

3.11 P.842 reliability: piecewise BCR and multiplicative decomposition

The SNR term is computed by default from the P.842-5 Table 1 Step 11 piecewise basic-circuit-reliability (BCR) curve: the literal asymmetric sigmoid, not a symmetric Gaussian CDF. The Gaussian-CDF form is used only in the VOACAP-compatible calibration mode. That BCR term is then combined multiplicatively into R = BCR · P(Es open) · (1 − P(Es blanket)), where the first sporadic-E factor applies only when the controlling mode is sporadic-E and the second only when a sporadic-E layer could blanket the operating frequency (§3.5). Where P.533-14 Attachment 1 predicts equatorial scattering, R is limited by its probability (§3.2). The day to day spread of the MUF is not a separate factor: it is already carried inside the P.842 deciles. The sporadic-E factors are engine extensions beyond P.842's single-circuit formula.

3.12 Additional σ contributions: TID and EIA spread-F

Beyond the multi-mode Rayleigh σ in §3.4, the engine root-sum-squares two further independent variance sources into its σSNR: a Travelling Ionospheric Disturbance contribution (2 dB, rising by 0.3 dB for each K above 3, so 3.2 dB at K=7) per Hunsucker (1982), and a tropical Equatorial Ionisation Anomaly / spread-F contribution (peak 5 dB at the geographic equator, falling linearly to 0 at ±35°) per Abdu (1997) and ITU-R P.531 §3.4. Like the σ of §3.4, they set the reliability only in the VOACAP-compatible calibration mode. These are extensions, not contradictions, of P.842. Neither is published with dB values in the recommendation.

3.13 Where P.533-14 leaves the field geometry open

Equation 14's E1 is a cubic in f / foF2. On a hop longer than ds at a frequency many times foF2, far above every mode's basic MUF, it gives a reflection height of zero or less, where equation 13 has no ray. There the engine uses the mode's ray at its basic MUF, the ray §5.2.2 already prescribes for the absorption above the basic MUF. Such a mode carries the full above-the-MUF loss and adds nothing to the sum. The largest antenna gain between 0 and 8 degrees (§5.3) is found on a 0.25 degree grid.

4. Compliance with the ITU reference implementation

The engine is measured against ITURHFProp, the ITU's own implementation of Recommendation P.533-14, published by ITU-R Study Group 3 (source). This is the benchmark that matters. Our engine implements the same Recommendation, so a disagreement is a defect in one of the two, and it is overwhelmingly likely to be ours. It is a compliance measurement, not a similarity measurement.

30 international paths across 29 frequencies (1 MHz grid, 2 to 30 MHz), isotropic antennas at both ends so the antenna model is removed from the comparison entirely, 1 kW, 3 kHz, rural noise, required SNR 10 dB. Measured on the 624 vectors where the Recommendation predicts a real signal.

QuantityMean abs errorMedianP90Bias
Basic MUF0.94 MHz0.46 MHz2.83 MHz+0.76 MHz
Field strength3.23 dB1.49 dB8.61 dB+1.15 dB
Noise (P.372)0.52 dB0.30 dB1.23 dB+0.01 dB
SNR3.48 dB2.15 dB7.92 dB+0.21 dB
Basic circuit reliability10.2 pts6.3 pts23.6 pts+2.3 pts

Read the bias column. Scatter is expected on a model with a cliff in it: close to the MUF, a fraction of a megahertz of disagreement swings field strength by tens of decibels. A systematic offset is the thing that reveals a missing, doubled or misapplied term. Part of the offset above is by design: this engine follows P.533-14 as printed in five places where ITURHFProp does not. Since engine 2.19.0: the above-the-MUF loss of equations 25 and 26, F2(dmax)MUF on paths longer than dmax, and the lowest-order mode with no minimum elevation, each of which reads higher than the reference (with those three set to ITURHFProp's forms, the 2.19.0 engine's basic MUF sat a median of 0.06 MHz from the reference and its field strength bias was −0.48 dB). Since engine 2.20.0: Lz of 8.72 dB, as equation 18 prints it, where the reference uses 9.14 dB, which reads 0.42 dB higher on every §5.2 mode; and the §5.1 reflection height (equations 14 to 16) for each F2 mode's field, where the reference uses equation 2, which moves single paths either way. With those two set to ITURHFProp's forms the field strength bias is +0.91 dB. On the open or closed verdict itself, all 30 paths now agree with the reference: the LUF is searched on the field P.533-14 prescribes for the path length, and so is the table. Reliability is compared only where the reference figure sits between 10 and 90 per cent, because vectors on which both models say zero agree trivially and would flatter the average.

Of the 246 vectors on bands the Recommendation calls closed, the number on which this engine claims the circuit meets its required grade of service is zero, and that is gated in the test suite. Recommending a frequency that does not work is the worst thing a planning tool can do.

4.1 Secondary check against VOACAPL

VOACAPL is not P.533. It is the Lucas-Haydon and ICEPAC lineage, a different model with a different reliability definition. Divergence from it is expected and is not, on its own, evidence of a defect. It is kept only as a sanity check, and the figures below should be read in that light rather than as an error budget.

QuantityMean abs errorMedianP90Max
MUF502.1 MHz1.8 MHz4.5 MHz5.4 MHz
FOT3.1 MHz1.9 MHz8.7 MHz9.9 MHz
Reliability (peak-across-freqs)18 pts18 pts41 pts50 pts

4.2 What is not validated here

  • LUF is not an ITU quantity. P.533 does not define it and ITURHFProp does not report it. It is defensible only as a derived figure: the lowest frequency whose P.842 basic circuit reliability meets the required reliability, at the required SNR. That rule is stated with every LUF the tool produces, and the required SNR and required reliability are both inputs you set.
  • Sporadic-E, the flare (SID) and geomagnetic storm absorption increments, and the other additions in section 3 are documented extensions. They are not part of P.533 and are not claimed to be.

4.3 Ionospheric layer accuracy vs PyIRI / IRI-2020

The coefficient form of the ionospheric layer model, the fallback used while a month's gridded map loads (section 2), is separately benchmarked against 384 reference vectors from PyIRI (IRI-2020). This isolates the CCIR layer model from downstream propagation physics.

QuantityMean abs errorP95MaxWithin tolerance
foF20.01 MHz0.03 MHz0.17 MHz100.0 %
foE0.15 MHz0.35 MHz0.50 MHz100.0 %
foF12.44 MHz4.99 MHz5.24 MHz100.0 %
M(3000)F20.0010.000.01100.0 %
MODIP0.07°0.29°0.40°100.0 %

foF1 tolerance is wider because our foF1 < foE ⇒ 0 truncation differs from IRI's behaviour of reporting a raw value; the downstream impact on mode selection is marginal (F1 contributes only to mid-lat daytime sub-MUF absorption).

5. Known outliers

These are the paths that sit furthest from VOACAPL in the secondary check (§4.1), as the benchmark run of 5 October 2026 on engine 2.20.0 measured them. Across all of its paths the engine's MUF50 sits 1.3 MHz below VOACAP's on average and its reliability 10.6 points above. Against the ITU reference implementation (§4) the basic MUF bias is +0.76 MHz and the reliability bias +2.3 points, so a gap to VOACAP is not, on its own, evidence of a defect.

  • Hawaii → Auckland (MUF −4.5 MHz) and Singapore → Nairobi (MUF −5.4 MHz, REL +19 pts): trans-equatorial paths. The CCIR foF2 maps do not resolve the equatorial ionisation anomaly crests, and the two models handle that region differently.
  • Hanoi → Manila (MUF +4.5 MHz): tropical daytime over the EIA crest region, the same cause as Singapore → Nairobi. The engine has no EIA model beyond the CCIR maps (the damping of §3.1 was removed).
  • Reliability: Moscow → Vladivostok (+50 pts), London → Sydney at solar minimum (+42 pts), London → Sydney (+41 pts) and at solar maximum (+36 pts). VOACAP bakes a man-made noise margin into its REL figure; this engine takes the required SNR as an explicit input. The two are not the same quantity, and basic circuit reliability is compared against ITURHFProp in §4, where its mean error is 10.2 points.
  • Without a documented cause: Reykjavik → Wellington (REL −30 pts), Cape Town → Perth (REL −27 pts) and London → Sydney at solar maximum (MUF −4.3 MHz) are among the larger gaps and are listed here rather than explained.

6. When to trust this tool (and when not to)

An honest three-tier answer for an RF engineer evaluating whether to use this in a workflow:

Use caseSuitable?Why
Pre-planning and band selection (which bands to try, at what hours, which season) Yes, confidently Basic MUF sits within a median of 0.46 MHz of the ITU reference implementation, well inside any allocation width. The frequency window recommendation is the strongest thing this tool does.
Engineering design with documented uncertainty (antenna sizing, power budget, availability targets) Yes, with the envelope shown Use MUF90 and MUF10 as design bounds rather than MUF50 as a point estimate. Quote reliability with the required SNR it was computed against, and with its envelope: "80 per cent at a required SNR of 10 dB in 3 kHz, plus or minus 10 points".
Regulatory and tender submissions (spectrum licensing, ACMA coordination, client deliverables) Yes, with the PDF report attached The engine implements ITU-R P.533-14 and is measured against the ITU's own implementation of it, with the error and bias of every quantity published in section 4: basic MUF within a median of 0.46 MHz (bias +0.76 MHz), field strength bias +1.15 dB, part of it by design where this engine follows the printed Recommendation. That is a traceable claim: same normative method, same reference software, published error budget, and a run hash and engine version stamped on every result. The PDF report's Validation and quality assurance section states the bounds. Two caveats belong in the submission: reliability carries roughly 10 points of scatter, and the non-ITU extensions listed in section 4.2 are extensions, not the Recommendation.
Safety-of-life circuits (aviation HF, maritime distress) No No monthly median HF prediction, this one or any other, should be the sole basis for a safety-of-life circuit. Day to day conditions routinely depart from the median by more than ten decibels. Design with real margin and a fallback band.

Questions or corrections? Contact us. If you find an outlier with a physical explanation we haven't documented, we'll credit the fix.