LoRa range claims vary from a few hundred metres to hundreds of kilometres, and both numbers are true for some link. The way to get a defensible number for your deployment is a simple budget with the right inputs.

1. Receiver sensitivity from first principles
Sensitivity = -174 dBm/Hz + 10 log10(BW) + NF + SNR_required
For BW = 125 kHz, 10 log10(BW) = 51.0 dB. With a receiver NF of about 6 dB and the commonly quoted demodulation SNR limits per spreading factor:
SF7: SNR -7.5 dB, sensitivity about -124.5 dBm
SF8: -10 dB, -127 dBm
SF9: -12.5 dB, -129.5 dBm
SF10: -15 dB, -132 dBm
SF11: -17.5 dB, -134.5 dBm
SF12: -20 dB, -137 dBm
These line up within a dB or two of typical transceiver datasheets. Every step in SF buys about 2.5 dB.

2. What that 2.5 dB costs
Symbol time is Ts = 2^SF / BW, so it doubles with every SF step: 1.024 ms at SF7, 32.8 ms at SF12.
Raw bit rate with coding rate 4/5: Rb = SF * BW / 2^SF * 4/5, about 5.5 kbit/s at SF7 and 293 bit/s at SF12.
Time on air for a 20-byte payload (8-symbol preamble, explicit header, CRC on, low-data-rate optimization on where required): about 57 ms at SF7, 371 ms at SF10, and 1.32 s at SF12.
In a band with a 1 % duty-cycle limit, one SF12 packet means roughly 130 s of silence for that device. Battery life and network capacity scale the same way, which is why adaptive data rate pushes nodes to the lowest SF that still closes the link.

3. Maximum allowable path loss
Example: 14 dBm transmit (typical EU sub-band limit), 2 dBi antennas at both ends, 1 dB of cable and connector loss.
MAPL = 14 + 2 + 2 - 1 - (-137) = 154 dB at SF12, and 141.5 dB at SF7.

4. The free-space trap
At 868 MHz, FSPL = 32.44 + 20 log10(f_MHz) + 20 log10(d_km) = 91.2 dB at 1 km. 154 dB in free space would be well over 1000 km. That only happens with true line of sight and a clear Fresnel zone (mountain tops, balloons), which is where the record numbers come from. On the ground you need a terrain or empirical model.

5. A ground-level estimate
Okumura-Hata (valid roughly 150 to 1500 MHz) for an urban area, gateway at 30 m, node at 1.5 m:
L = 69.55 + 26.16 log f - 13.82 log hb - a(hm) + (44.9 - 6.55 log hb) log d
gives 126 dB at 1 km, 137 dB at 2 km, 143 dB at 3 km and 151 dB at 5 km.
Now subtract margins:
- Fade margin for shadowing and multipath: 10 dB is a reasonable starting point.
- Building penetration for indoor nodes: 10 to 20 dB depending on construction; I use 15 dB.
SF12, outdoor node: 154 - 10 = 144 dB, about 3.2 km.
SF12, indoor node: 154 - 25 = 129 dB, about 1.2 km.
SF7, indoor node: 141.5 - 25 = 116.5 dB, about 0.5 km.
In suburban terrain the Hata correction (about 9.8 dB at 868 MHz) stretches the indoor SF12 case to roughly 2.3 km.

6. Practical points that move the result more than the radio chip
- Gateway antenna height is the biggest lever you control. Raising it from 15 m to 30 m buys several dB in the Hata model and far more in real clutter.
- Antenna efficiency of small node antennas is often 30 to 50 %, i.e. -3 to -5 dB, not the 2 dBi on the datasheet of a reference ground plane.
- Interference raises the effective noise floor. In a busy urban band, a gateway can lose several dB of sensitivity, and no budget formula shows that.
- Measure. Walk or drive the area logging RSSI and SNR at the gateway, and compare against the budget before rolling out hundreds of nodes.

A budget like this will not predict an individual link to the dB, but it tells you whether you are planning for hundreds of metres or for kilometres, which is the question that decides gateway count.