LoRa & LoRaWAN DISCUSSION

How do spreading factor, bandwidth and coding rate determine LoRa bit rate and airtime?

Started by amritlal LoRa spreading factorLoRa data ratetime on aircoding rateLoRa sensitivity
5 replies 248 views 6 participants
Latest activity · 30 Sep 2026

How do spreading factor, bandwidth and coding rate determine LoRa bit rate and airtime?

amritlal LoRa & LoRaWAN Forum
#1

I am configuring an SX1276 module, and the library lets me set spreading factor 7 to 12, bandwidth 125, 250 or 500 kHz and coding rate 4/5 to 4/8. I know that a higher spreading factor gives more range and less speed, but I would like to calculate the actual bit rate and how long a 10-byte packet stays on air for a given combination.

What are the formulas, and why does each step in spreading factor cost so much airtime?

Community replies 5

Re: How do spreading factor, bandwidth and coding rate determine LoRa bit rate and airtime?

#2

A LoRa symbol is one chirp that sweeps the whole bandwidth, and it carries SF bits by choosing one of 2^SF starting positions. The chip rate equals the bandwidth, so the symbol time is T_sym = 2^SF / BW and the bit rate is R_b = SF × (BW / 2^SF) × CR, where CR is the coding rate as a fraction (4/5 = 0.8).

At 125 kHz and 4/5: SF7 gives 7 × (125000 / 128) × 0.8 = 5469 bit/s with a 1.024 ms symbol. SF12 gives 12 × (125000 / 4096) × 0.8 = 293 bit/s with a 32.77 ms symbol. Each step up adds one bit per symbol but doubles the symbol time, so the rate roughly halves.

Re: How do spreading factor, bandwidth and coding rate determine LoRa bit rate and airtime?

#3

Airtime has two parts. The preamble lasts (n_preamble + 4.25) × T_sym, with 8 programmed symbols as the usual default. The payload part is a whole number of symbols: n_payload = 8 + max(ceil((8×PL - 4×SF + 28 + 16×CRC - 20×IH) / (4×(SF - 2×DE))) × (CR + 4), 0). PL is the payload length in bytes, CRC is 1 when the CRC is on, IH is 1 for implicit header, DE is 1 when low data rate optimisation is on, and CR is 1 to 4 for 4/5 to 4/8.

For 10 bytes at SF7, 125 kHz, 4/5, explicit header and CRC: ceil(96 / 28) = 4, times 5 is 20, so 28 payload symbols. 28 × 1.024 ms plus 12.25 × 1.024 ms is about 41 ms.

Re: How do spreading factor, bandwidth and coding rate determine LoRa bit rate and airtime?

#4

The same packet at SF12 shows the cost. Low data rate optimisation is required when the symbol time exceeds 16 ms, which means SF11 and SF12 at 125 kHz, so DE = 1. The formula gives ceil(76 / 40) = 2, times 5 is 10, so 18 payload symbols. 18 × 32.77 ms is 590 ms, the preamble adds 12.25 × 32.77 ms = 401 ms, and the total is about 991 ms, roughly 24 times longer than at SF7.

Note that the preamble alone is 0.4 s. For short packets at high spreading factors the fixed overhead dominates, so removing a few payload bytes saves less than you would expect.

Re: How do spreading factor, bandwidth and coding rate determine LoRa bit rate and airtime?

#5

What you buy with that airtime is sensitivity. The demodulator needs a lower signal-to-noise ratio at each step: about -7.5 dB at SF7 down to -20 dB at SF12, in steps of 2.5 dB. Sensitivity is approximately -174 + 10×log10(BW) + NF + SNR_min. For 125 kHz (51 dB) and a 6 dB noise figure that is about -124.5 dBm at SF7 and -137 dBm at SF12.

Bandwidth works the other way: going from 125 to 500 kHz makes everything four times faster but raises the noise floor by 6 dB. A stronger coding rate such as 4/8 adds redundancy against bursts of interference at the price of a longer payload.

Re: How do spreading factor, bandwidth and coding rate determine LoRa bit rate and airtime?

#6

In practice, start at the lowest spreading factor that gives a reliable link with margin, not the highest one available. Read the SNR and RSSI that the radio reports for each received packet: if the SNR at SF7 sits well above the -7.5 dB limit, stepping up only wastes energy and channel time. Energy per packet scales with airtime, so the SF12 example costs about 24 times the transmit energy of the SF7 one.

Both ends must use the same frequency, spreading factor, bandwidth and sync word. A receiver set to a different spreading factor will not see the packet at all, because different spreading factors are close to orthogonal.

TEP COMMUNITY