LoRa link budget calculator

Whether the link closes, how much margin it has, and what each spreading factor actually costs you in airtime.

LoRaWANSensitivityPath lossFresnel zoneTime-on-air
Radio
EU 868 is capped at 14 dBm ERP on most sub-bands.
Antennas and losses
Both ends combined. Enclosure detuning belongs here too, and it is rarely under 2 dB.
The path
Environment

The path-loss exponent. Free space is 2.0 and is physics; everything above it is an empirical stand-in for buildings, terrain and foliage.

Fade margin

dB

Receiver sensitivity
Path loss
Received power
Max range at this SF
Time on air
Duty-cycle limit (1%)
Fresnel radius at midpoint
Fade margin against distance — the link fails where the curve crosses zero
time on air margin at this distance
What each spreading factor costs and buys

The physics

The budget

margin = P_tx + G_tx + G_rx − L_cable − L_path − S_rx

Everything in decibels, so it is addition. What leaves the transmitter, plus whatever the antennas concentrate, minus what the path and the hardware take away, compared against the quietest signal the receiver can still decode. What is left over is your margin against a bad day.

Sensitivity

S = −174 + 10·log₁₀(BW) + NF + SNR_limit

−174 dBm/Hz is thermal noise at room temperature — the floor nothing gets below. Widening the bandwidth lets more of it in, which is why 500 kHz is about 6 dB worse than 125 kHz. NF is the receiver's own noise figure, typically 6 dB.

The interesting term is SNR_limit. Chirp spread spectrum decodes below the noise floor: SF7 needs about −7.5 dB SNR, SF12 about −20 dB. That is the whole trick — roughly 2.5 dB of sensitivity per spreading factor step, bought with airtime.

Path loss

L_fs = 20·log₁₀(d_km) + 20·log₁₀(f_MHz) + 32.44

L_path = L_fs + 10·(n − 2)·log₁₀(d_km)

Free-space loss is exact and pessimistic-free: doubling distance costs 6 dB, always. The second term adds an empirical environment exponent for everything free space ignores — buildings, terrain, foliage, ground reflections. n = 2 is free space; 4.5 is a node inside a building in a dense city.

Time on air, and why it constrains everything

T_symbol = 2^SF / BW

Each SF step doubles symbol duration. A 12-byte payload at SF7/125 kHz takes about 50 ms; the same payload at SF12 takes well over a second. Under the EU 1% duty cycle that single SF12 uplink buys you roughly two minutes of enforced silence.

The Fresnel zone

r = 17.32 · √( d_km / (4 · f_GHz) )     (metres, at midpoint)

Radio does not travel in a line. Keeping 60% of this ellipsoid clear is the usual rule; an obstruction inside it costs signal even with visual line of sight. This is the number that explains most links that "should have worked".

Where this stops being accurate

  • The environment exponent is a planning estimate, not a prediction. Real terrain needs a survey.
  • Antenna gain assumes correct polarization alignment and a proper ground plane. A node antenna against a battery or a metal enclosure can lose more than the whole margin.
  • No allowance for interference — in shared spectrum other traffic raises the effective noise floor.
  • Regional limits on power, duty cycle and dwell time are not enforced here. Check the regulations for your market.
  • Rain and foliage attenuation are not modelled; both matter above 1 GHz and both change with season.

Design guidance, not a manufacturing instruction. Verify every result against your fabricator's stack-up and the applicable standard before release. Closed-form models are approximations; the fab's field solver and process window are the authority.

Questions

What people ask about this

How much fade margin is enough?

A link that closes with 0 dB margin does not work. Rain, foliage in leaf, a person standing in front of the node, a door closing — all move a link by several decibels. Plan on 10 dB for a clear outdoor path with fixed antennas, 15 to 20 dB where anything moves or where the node is indoors. If the margin is under 6 dB, treat the link as broken and fix it before building anything on top.

Why does the highest spreading factor not always win?

SF12 buys roughly 10 dB over SF7, but each step up doubles time-on-air. At SF12 a short payload occupies the channel for over a second, which burns battery, hits regional duty-cycle limits fast, and collides with every other node doing the same. In EU 868 the 1% duty cycle means an SF12 uplink can force a gateway silence of a minute or more. Use the lowest SF that closes the link with margin, not the highest the radio offers.

What path-loss model does this use?

Free-space loss as the floor, plus a selectable environment exponent for anything that is not a clear line of sight. Free space is the physics; the exponent is an empirical fudge that stands in for buildings, terrain and foliage. It is a planning number, good enough to tell you whether a link is plausible and useless as a guarantee. Nothing replaces a site survey with the actual hardware.

Is the Fresnel zone really a problem at these ranges?

Yes, and it is the most common reason a link that should work does not. The radio path is not a line — it is an ellipsoid, and an obstruction intruding into it costs signal even when you can still see the other end. At 868 MHz over 5 km the first Fresnel zone is about 20 m across at midpoint. A hedge line or a roof ridge grazing that ellipsoid will cost you several decibels that no antenna upgrade recovers.

Link budget closes on paper, fails on site?

Antenna placement, ground planes and enclosure detuning cost more link than most budgets allow for. We design the node, the antenna and the test.