Tool
LoRa link budget and range estimator
Work out receiver sensitivity, link budget, free-space range, Fresnel clearance, radio horizon and airtime for a Meshtastic EU_868 preset, and check your UK e.r.p. An upper bound, not a promise.
Updated 29 Oct 2026
Result
Best case, nothing in the way
Free-space range 1,302 km, but the radio horizon for these antenna heights is only 18.4 km.
Link budget 153.5 dB, receiver sensitivity -131.5 dBm, airtime for 50 bytes 641 ms.
Receiver
- Noise floor
- -114 dBm
- -174 dBm/Hz + 10 log10(250,000 Hz) + noise figure 6 dB
- Demodulator SNR limit (SF11)
- -17.5 dB
- Typical value from the SX1261/2 datasheet. LoRa decodes below the noise floor.
- Receiver sensitivity
- -131.5 dBm
- Noise floor plus SNR limit. The weakest signal the radio can decode.
Link budget
- EIRP
- 22 dBm
- TX power minus TX cable loss plus TX antenna gain.
- e.r.p. (what the UK limit measures)
- 19.9 dBm
- EIRP minus 2.15 dB. 500 mW is 27 dBm.
- Link budget
- 153.5 dB
- EIRP plus RX antenna gain minus RX cable loss minus receiver sensitivity.
- Maximum path loss after extra losses
- 153.5 dB
- The link budget minus the extra losses and fade margin you entered.
Distance and geometry
- Free-space range
- 1,302 km
- Distance at which free-space path loss equals the maximum path loss at 869.525 MHz.
- Radio horizon (4/3 earth)
- 18.4 km
- Smooth-earth line of sight between the two antenna heights. Hills and buildings make it shorter; a mast on a hill can make it longer.
- Distance used for the Fresnel figures
- 18.4 km
- The radio horizon, because it is shorter than the free-space range.
- Fresnel zone, 60 % clearance radius at the midpoint
- 23.9 m
- Keep this radius clear all round the straight line. The full first-zone radius is 39.9 m.
- Height of the straight line above flat ground at the midpoint
- 0 m
- Less than the 60 % Fresnel radius, even over perfectly flat ground. Raise an antenna or shorten the link.
Airtime
- Time on air, 50-byte packet
- 641 ms
- 58 payload symbols plus a 166 ms preamble (16 symbols, the Meshtastic default). Symbol time 8.192 ms, low-data-rate optimisation off, explicit header, CRC on.
- Most packets per hour at the 10 % duty cycle
- 562
- Duty cycle for IR2030/1/19. One packet every 6.4 s on average, at most.
What the link looks like at fixed distances
| Distance | Path loss | Margin | 60 % Fresnel |
|---|---|---|---|
| 0.5 km | 85.2 dB | +68.3 dB | 3.9 m |
| 1 km | 91.2 dB | +62.3 dB | 5.6 m |
| 2 km | 97.2 dB | +56.3 dB | 7.9 m |
| 5 km | 105.2 dB | +48.3 dB | 12.5 m |
| 10 km | 111.2 dB | +42.3 dB | 17.6 m |
Margin is the maximum path loss minus free-space path loss at that distance, with none of the obstructions a real path has.
How the numbers are worked out
Everything runs in your browser. Nothing you type is sent anywhere, and the page makes no network calls. The formulas are standard; the sources are listed at the bottom.
Receiver sensitivity
sensitivity (dBm) = −174 + 10 log10(bandwidth in Hz) + noise figure + SNR limit
−174 dBm/Hz is the thermal noise floor at room temperature. The noise figure is how much noise the receiver adds; we assume 6 dB, which is our assumption, not a datasheet value (real boards vary with the antenna switch and any extra amplifier). The SNR limit is how far below the noise a LoRa signal can still be decoded, and it falls as the spreading factor rises. Typical values from Table 6-1 of the Semtech SX1261/2 datasheet:
| Spreading factor | SF7 | SF8 | SF9 | SF10 | SF11 | SF12 |
|---|---|---|---|---|---|---|
| SNR limit (dB) | -7.5 | -10 | -12.5 | -15 | -17.5 | -20 |
Meshtastic's documentation says each step up in spreading factor adds about 2.5 dB of link budget and each doubling of bandwidth costs almost 3 dB. The table above and the formula give exactly those steps (2.5 dB per spreading factor, 3.0 dB per bandwidth doubling).
Link budget and free-space range
link budget = EIRP + RX antenna gain − RX cable loss − sensitivity, where EIRP is TX power minus TX cable loss plus TX antenna gain. The extra losses field is subtracted from that to give the maximum path loss. Free-space path loss in dB is 20 log10(d in km) + 20 log10(f in MHz) + 32.44, where 32.44 is 20 log10(4π × 109 / c) for kilometres and megahertz. The tool inverts that to find the distance at which free-space loss uses up your whole budget. Every doubling of distance costs 6 dB, and every 6 dB of extra loss halves the range.
Fresnel zone
Radio energy fills an ellipsoid around the straight line, not a thin ray. The first-zone radius at the midpoint of a link of length D is 0.5 × √(λ × D), where λ is the wavelength. A common rule of thumb is to keep at least 60 % of that radius clear of obstacles (Wikipedia gives 60 % as the minimum and 80 % as the ideal). The tool shows the 60 % radius at the midpoint of the distance it is evaluating: the free-space range, or the radio horizon if that is shorter. It also shows how high the straight line sits above perfectly flat ground at the midpoint, after subtracting the earth's bulge, so you can see whether the heights you entered can ever clear the zone. Real terrain is never flat. See the worked examples in antenna placement.
Radio horizon
For one antenna of height h metres over smooth ground, the distance to the horizon is √(2 k R h), with Earth radius R = 6,371 km and an effective-radius factor k = 4/3 to allow for the atmosphere bending radio waves slightly downwards (Wikipedia gives a factor of around 4/3, and notes it varies with the weather). That is about 4.12 × √h km. The link horizon is the sum of the two antennas' horizons. It is a ceiling for smooth ground; hills and buildings make it shorter.
Time on air
The calculator uses the LoRa time-on-air equation from the Semtech SX1261/2 datasheet (section 6.1.4), which is the same equation as Semtech application note AN1200.13 (the LoRa modem designer's guide; we have not linked that PDF because Semtech's document links would not load for us). Symbol time is 2SF / bandwidth. Low-data-rate optimisation switches on when the symbol time is above 16 ms. We assume an explicit header, CRC on and a 16-symbol preamble, which is the Meshtastic firmware default. The packet size you enter is the whole LoRa packet, and Meshtastic's own header takes 16 bytes of it (to, from, packet id, flags, channel hash, next hop and relay node).
The packets-per-hour figure divides one hour by the airtime and multiplies by the duty-cycle limit of the UK sub-band your frequency falls in. It is an upper bound on how much one node may send, not a measure of how fast a mesh delivers messages.
The UK power limit
The calculator compares your e.r.p. with the Ofcom IR 2030 v1.16 limit for non-specific short-range devices in whichever sub-band your channel sits in. e.r.p. includes antenna gain and is referenced to a half-wave dipole, so antenna gain in dBi has 2.15 dB subtracted. Meshtastic's EU_868 default of 869.525 MHz with a 250 kHz channel fills the 869.40 to 869.65 MHz slot exactly.
| Interface | Band (MHz) | Max e.r.p. | Access rule |
|---|---|---|---|
| IR2030/1/16 | 868.00 to 868.60 | 25 mW | LBT/AFA per EN 300 220, or 1 % duty cycle or less |
| IR2030/1/17 | 868.70 to 869.20 | 25 mW | 0.1 % duty cycle or less (or equivalent mitigation) |
| IR2030/1/18 | 869.30 to 869.40 | 10 mW | channel of 25 kHz or less, 10 % duty cycle or less |
| IR2030/1/19 | 869.40 to 869.65 | 500 mW | LBT/AFA, or 10 % duty cycle or less |
| IR2030/1/20 | 869.70 to 870.00 | 25 mW | LBT/AFA, or 1 % duty cycle or less |
This is our reading of IR 2030 v1.16 (published 7 April 2026), not legal advice, and a newer version may exist. Check the current Ofcom document before relying on it.
Sanity check against published figures
The table below is computed with the same code as the calculator: 22 dBm, 0 dBi antennas, no cable loss, 869.525 MHz, a 50-byte packet. Meshtastic's radio settings page lists a link budget for each preset on the same assumption (22 dBm, 0 dB antenna gain), so the two columns can be compared directly.
| Preset | SF / BW / CR | Sensitivity (dBm) | Link budget, ours (dB) | Link budget, Meshtastic docs (dB) | 50-byte airtime (ms) |
|---|---|---|---|---|---|
| Short Fast | 7 / 250 kHz / 4/5 | -121.5 | 143.5 | 143 | 53 |
| Short Slow | 8 / 250 kHz / 4/5 | -124.0 | 146.0 | 145.5 | 95 |
| Medium Fast | 9 / 250 kHz / 4/5 | -126.5 | 148.5 | 148 | 181 |
| Medium Slow | 10 / 250 kHz / 4/5 | -129.0 | 151.0 | 150.5 | 341 |
| Long Fast | 11 / 250 kHz / 4/5 | -131.5 | 153.5 | 153 | 641 |
| Long Moderate | 11 / 125 kHz / 4/8 | -134.5 | 156.5 | 156 | 2036 |
- Our link budgets are within about 0.5 dB of Meshtastic's for all six presets (ours are the higher figure). The Meshtastic page says its table is based on data from the official Semtech LoRa calculator.
- The Semtech SX1261/2 datasheet lists typical sensitivities of −124 dBm (125 kHz, SF7), −137 dBm (125 kHz, SF12), −121 dBm (250 kHz, SF7) and −134 dBm (250 kHz, SF12). The formula gives −124.5, −137.0, −121.5 and −134.0. At 500 kHz the formula is 1.5 to 2 dB more optimistic than the datasheet, which does not matter here because 500 kHz presets are not offered.
- Long Fast's preamble comes out at 165.9 ms; the Meshtastic firmware source comments 165 ms as its default for Long Fast. The 641 ms total for a 50-byte packet is our calculation from the datasheet equation; we did not find an independent published figure to compare it with.
Which presets are offered, and why no Turbo
The six general-purpose presets listed are the ones Meshtastic's documentation shows and does not mark as unavailable in EU_868. The three Turbo presets use 500 kHz bandwidth, which Meshtastic says is not legal in all regions and is unavailable in EU_868 (the region the UK uses). The documentation also lists Lite, Narrow and Tiny families for other regions (EU_866, EU_N_868 and amateur-band regions); they are not offered here. See LoRa vs Wi-Fi mesh for the data rates.
What this tool does not tell you
- Real range. Clutter, walls, foliage, rain, a poor antenna, a badly placed node and interference are not modelled. We have no sourced clutter figures, so the tool lets you subtract a loss of your choosing and does not guess one.
- Terrain. The radio horizon and midpoint clearance assume smooth, flat ground. A hill in the path can block a link that looks fine here; a high site can reach beyond a smooth-earth horizon.
- Receiver noise. Sensitivity uses a fixed 6 dB noise figure. Interference from other devices in the band raises the real noise floor.
- Your radio's actual output. Boards quote TX power with a tolerance; Heltec, for example, gives ±1 dB for its 28 dBm V4.
- Legal advice. The e.r.p. check is our reading of IR 2030 v1.16. See the disclaimer.
Next: antenna placement, solar node sizing, hardware buyer's guide.
Sources
- Meshtastic: radio settings (presets, spreading factor, bandwidth, coding rate)
- Semtech SX1261/2 product page and datasheet (we read Rev. 1.2, June 2019)
- Meshtastic firmware: RadioInterface.h (16-symbol preamble, 16-byte packet header)
- Ofcom IR 2030: licence exempt short range devices (v1.16, published 7 April 2026)
- Meshtastic: antenna testing
- Wikipedia: Radio horizon (distance to the horizon, effective Earth radius 4/3)
- Wikipedia: Fresnel zone (60 % minimum clearance rule of thumb)