What this estimate does and does not do
This calculator estimates a LoRa link budget, theoretical free-space range, and packet time-on-air. It is useful for early planning of LoRa, LoRaWAN, Meshtastic-style, and point-to-point sub-GHz links.
It does not guarantee real-world range. Free-space calculations assume ideal line of sight with no obstructions, reflections, foliage, terrain, body loss, antenna mismatch, or interference. Real deployments require field testing with the actual antennas, radio modules, heights, terrain, and regional radio settings.
Link budget formula
The received power at a checked distance is:
received power = TX power + TX antenna gain - TX cable loss + RX antenna gain - RX cable loss - other losses - FSPLThe link margin is:
link margin = received power - receiver sensitivity
fade margin remaining = link margin - required fade marginMaximum allowable free-space path loss is:
max path loss = TX power + gains - losses - receiver sensitivity - required fade marginFree-space path loss formula
FSPL dB = 32.44 + 20 log10(frequency MHz) + 20 log10(distance km)Solving for distance:
distance km = 10 ^ ((max path loss - 32.44 - 20 log10(frequency MHz)) / 20)Time-on-air formula
The calculator uses the standard Semtech-style LoRa time-on-air model:
symbol time = 2^SF / bandwidth
preamble time = (preamble symbols + 4.25) × symbol time
payload symbols = 8 + max(ceil((8PL - 4SF + 28 + 16CRC - 20IH) / (4(SF - 2DE))) × (CR + 4), 0)
time on air = preamble time + payload symbols × symbol timeWhere:
PLis payload bytesSFis spreading factorCRis 1–4 for coding rates 4/5 to 4/8CRCis 1 if CRC is enabledIHis 1 for implicit header, 0 for explicit headerDEis low-data-rate optimisation, automatically enabled here when symbol time is at least 16 ms
Worked example
For a 915 MHz LoRa link at 5 km, with 14 dBm TX power, 2 dBi antennas at each end, 0.5 dB cable loss at each end, 6 dB other losses, SF9 / 125 kHz, and 10 dB required fade margin:
FSPL at 5 km ≈ 105.7 dB
receiver sensitivity at SF9 / 125 kHz ≈ -129 dBm
received power ≈ 14 + 2 - 0.5 + 2 - 0.5 - 6 - 105.7 = -94.7 dBm
link margin ≈ -94.7 - (-129) = 34.3 dB
fade margin remaining ≈ 34.3 - 10 = 24.3 dBThat link closes in a free-space model with a good margin, but buildings, terrain, vegetation, antenna height, and interference can consume that margin quickly.
How to use the result
- Use fade margin remaining to see whether the checked distance is plausible.
- Use max free-space range only as a theoretical upper bound.
- Increase SF to improve sensitivity, but watch time-on-air and duty-cycle limits.
- Improve antenna placement and height before assuming more transmit power is the solution.
- Add realistic other losses for vegetation, indoor placement, body loss, cable loss, and antenna mismatch.
- Check local EIRP, duty-cycle, dwell-time, and band-plan regulations before deployment.
Assumptions and limitations
- Receiver sensitivity is estimated from typical SF/BW values and may differ by module, PCB, noise figure, temperature, and interference.
- The range model is free-space only.
- It does not model earth curvature, antenna height, Fresnel zone clearance, terrain diffraction, or indoor path loss.
- Time-on-air is raw LoRa PHY airtime for the entered payload bytes. LoRaWAN MAC overhead may add bytes.
- Regional duty-cycle and dwell-time rules vary.
Frequently asked questions
How do you calculate LoRa link budget?
Add transmit power and antenna gains, subtract cable and other losses, subtract receiver sensitivity and required fade margin. The remaining allowable path loss can be converted into free-space range.
How is LoRa free-space range calculated?
The calculator solves the free-space path loss formula FSPL = 32.44 + 20 log10(frequency MHz) + 20 log10(distance km) for distance.
Why is theoretical LoRa range so large?
LoRa can have a very large link budget, especially at high spreading factors. Real terrestrial range is usually limited by terrain, antenna height, line of sight, Fresnel clearance, foliage, buildings, interference, and regulations.
What is LoRa time-on-air?
Time-on-air is how long a packet occupies the radio channel. It depends on spreading factor, bandwidth, coding rate, preamble length, payload size, CRC, and header mode.
What spreading factor should I use?
Lower spreading factors have shorter airtime and better battery life. Higher spreading factors improve sensitivity and range, but greatly increase airtime and duty-cycle pressure.