LoRaWAN Spreading Factor Explorer

LoRaWAN Spreading Factor Explorer

Explore how Spreading Factor affects range, data rate, power consumption, and airtime

animation
lorawan
spreading-factor
airtime
energy

LoRaWAN Spreading Factor Explorer

AnimationLoRaWANAirtime and energy

LoRaWAN Spreading Factor Explorer

Explore how Spreading Factor affects range, data rate, power consumption, and airtime.

1.024 msSymbol duration
56.58 msTime on air
4.85 mJPacket energy at 26 mA
5.47 kb/sApproximate bit rate
TryCalculate airtime for a 20 B payload at Spreading factor SF7, then repeat at SF12 with Bandwidth unchanged.
ObserveCompare Symbol duration, Time on air and Packet energy; the higher spreading factor occupies the channel much longer for the same payload.
ExplainSymbol duration is 2 raised to SF divided by bandwidth. Increasing SF therefore trades a lower symbol rate and longer airtime for additional processing gain.
Technical boundariesAirtime is computed for one LoRa packet configuration; regional dwell-time and duty-cycle rules, interference, capture, oscillator error, coding implementation, antenna gain, gateway diversity and retransmissions are outside the calculation.
Colour keyLoRaWAN identitycurrent selectioncomparison datawithin targetairtime caution

Packet configuration

Transmission Characteristics

1.024 msSymbol duration
43 symbolsPayload symbols
56.58 msTime on air
4.85 mJPacket energy
5.47 kb/sApproximate bit rate
1.0× baselineProcessing-gain range index

Spreading Factor Comparison Chart

SF7 keeps this 20 B packet brief.Use the comparison bars to see the channel and energy cost of extra processing gain.

Model reference and interpretation

From symbols to packet airtime

The calculator first derives one symbol's duration from the selected spreading factor and bandwidth. It then applies the configured preamble, header mode, CRC choice, coding rate, and payload length to determine how many symbols the radio must transmit.

That order matters. A payload is not converted straight from bytes to seconds: header and error-protection choices change the symbol count, while spreading factor and bandwidth change the duration of every one of those symbols.

Tsymbol = 2^SF / BW
Tpreamble = (Npreamble + 4.25) × Tsymbol
Tpacket = Tpreamble + Npayload × Tsymbol

Reading range and energy honestly

The range index is a processing-gain teaching indicator, not a kilometre prediction. Higher spreading factors can make a weaker signal decodable, but terrain, antenna height, obstruction loss, gateway placement, interference, and receiver implementation determine the field result.

Packet energy is the configured supply voltage multiplied by transmit current and time on air. It prices one successful transmission only. A deployment budget must add wake-up, sensing, processing, receive windows, retries, leakage, and regulator losses.

Epacket (mJ) = Vsupply × Itx (A) × Tpacket (s) × 1000

Why SF12 is not automatically “better”

Extra link robustness is useful only when the path needs it. For the same 20 B payload and 125 kHz bandwidth, moving from SF7 to SF12 makes each symbol thirty-two times longer before symbol-count effects are considered. The channel stays occupied longer and the transmitter consumes energy for that entire interval.

LoRaWAN capacity is shared. Unnecessarily slow packets raise collision exposure and duty-cycle pressure for the device and its neighbours. ADR therefore tries to retain enough margin while selecting a faster data rate and, when possible, a lower transmit power.

Low data-rate optimisation

Long symbols are more exposed to clock drift. The Automatic setting enables low data-rate optimisation when the calculated symbol duration reaches 16 ms. In this model that typically affects SF11 and SF12 at 125 kHz, and its altered denominator changes the payload-symbol calculation.

Use the explicit On and Off choices to inspect that mechanism, but follow the radio and regional stack's mandated configuration in real firmware. A teaching override is not permission to create a non-compliant packet.

Field checklist before fixing a spreading factor

Measure the path: collect repeated uplinks at the intended antenna position, across representative weather and occupancy conditions. Record received signal strength, signal-to-noise ratio, gateway diversity, retries, and packet loss rather than treating one successful packet as a link budget.

Test the fastest credible rate: begin with the lowest spreading factor supported by the measured margin, then repeat the difficult parts of the route. Increase robustness only when the evidence shows that the faster setting cannot meet the reliability target.

Budget the whole device: combine the packet-energy result with sensing, computation, receive windows, acknowledgements, retries, sleep current, regulator efficiency, and the expected reporting interval. Confirm regional channel, duty-cycle, dwell-time, and transmit-power rules in the deployed LoRaWAN regional parameters.

Revisit the choice: installations change as foliage, buildings, antenna placement, gateway availability, and interference change. Where the network supports it, ADR should use a sufficiently long observation window; mobile or rapidly changing links may need a deliberately different strategy.

Factor Symbol time at 125 kHz Nominal processing gain Typical direction of change Deployment question
SF7 1.024 ms baseline fastest / least packet energy Does measured margin support the shortest airtime?
SF8 2.048 ms +2.5 dB class airtime roughly doubles Is one robustness step enough for the path?
SF9 4.096 ms +5 dB class middle-rate compromise Can ADR move down after stable gateway evidence?
SF10 8.192 ms +7.5 dB class longer occupancy Are obstruction and fade margin measured or assumed?
SF11 16.384 ms +10 dB class low-rate optimisation relevant Will duty-cycle and battery budgets tolerate the packet?
SF12 32.768 ms +12.5 dB class longest / most packet energy Is the extra processing gain genuinely required?
Worked check

Use symbol duration 2^SF divided by bandwidth, then apply the preamble and payload symbol counts. The same payload at SF12 occupies substantially more symbols-in-time than at SF7.