Chapters

8 LoRa Modulation and Spreading Factors

lorawan
lora
modulation

  1. Radio Remi watches a field sensor send a short radio message that fades just before the receiver, with several transmission choices still unresolved.

    What could help the short message cross the weak link?

CP-0139 pre-concept hook: What could help the short message cross the weak link?

8.1 Start Simple

This section: Start Simple — Picture a field sensor whose short message barely reaches the receiver.

Trade One Weak-Link Gain Against Airtime

Picture a field sensor whose short message barely reaches the receiver. Making the radio easier to hear may keep it on air much longer, which costs energy and shared channel time. The first comparison changes one setting and measures both effects.

Bandwidth means the range of radio frequencies used to carry a signal. Modulation means changing a radio signal over time to carry information. A payload means the useful reading or command inside a message.

Record spreading setting, bandwidth, error protection, payload size, signal margin, airtime, energy, and receiver result. Weaken the path, repeat the packet, change one setting, and restart the receiver. Compare successful delivery with total channel cost.

This runway does not prove coverage, legal compliance, or fleet capacity from one bench link. The deeper sections explain chirps, spreading, coding, data rate, airtime, sensitivity, regional limits, and measured trade-offs.

Imagine turning one radio knob and getting two effects at once: a weaker signal may become readable, but the message occupies the channel for longer. That is the central LoRa modulation tradeoff. Spreading factor, bandwidth, coding rate, payload size, and regional limits are not isolated facts. They become airtime and link-margin evidence that the network must be able to defend.

The mathematical gist. At this chapter’s SF10 and 125 kHz, one symbol lasts 8.192 ms, the chirp slope is 15.3 MHz/s, and the 1,024 dechirped FFT bins are 122.07 Hz apart. Symbol 256 therefore starts 31.25 kHz, or exactly 25%, across the channel. The starting-frequency offset carries the symbol; amplitude does not.

Math Bridge · guided foundationsHow do ten bits become one chirp starting frequency?Let Eddie walk from symbol time to chirp slope, FFT bins, and offset.

Overview: LoRa Modulation Turns Radio Settings Into Airtime Evidence

LoRa is the physical radio modulation used by LoRaWAN. It sends symbols as chirps: controlled sweeps across a channel span. LoRaWAN adds the network behavior around that radio, but modulation review starts with radio settings, payload size, observed link evidence, and time on air.

The beginner mistake is choosing the highest spreading factor by habit. Higher spreading factors can help weak links, but they also keep the channel occupied longer. A defensible choice records why the setting fits the device group, message schedule, gateway evidence, regional profile, and ADR handoff.

If you only need the intuition, this layer is enough: spreading factor is not a quality slider. It is a tradeoff between link margin and airtime, and the release decision needs evidence for both sides.

A simple scale check keeps the tradeoff concrete. With a 125 kHz LoRa bandwidth, symbol time is about 1.024 ms at SF7 because 2^7 / 125,000 seconds is 0.001024. At SF12 it is about 32.768 ms, or 32 times longer before payload, preamble, header, coding-rate, and retry details are counted. If 200 sensors all default to the slowest setting, the release problem is no longer only "can one device be heard"; it becomes whether the shared channel, gateway duty, retry pattern, and application schedule still fit.

Inspect Figure 8.1 to see how radio settings turn into time on air. First trace the calculated SF10 chirp across a 125 kHz channel, then compare the symbol-duration bars from SF7 to SF12 at the same bandwidth.

Calculated LoRa SF10 symbol-256 spectrogram at 125 kHz, starting 31.25 kHz above the channel’s lower edge and wrapping at 6.144 ms within an 8.192 ms symbol. Below, a zero-based bar chart plots SF7 through SF12 symbol times of 1.024, 2.048, 4.096, 8.192, 16.384, and 32.768 milliseconds.
Figure 8.1: A calculated SF10 LoRa chirp sweeps across a 125 kHz channel. At the same bandwidth, each step from SF7 to SF12 doubles symbol duration, from 1.024 ms to 32.768 ms; complete packet airtime also includes payload and protocol overhead.

In See the chirp, symbol 256 begins 31.25 kHz above the lower channel edge, wraps at 6.144 ms and lasts 8.192 ms. In Plot symbol duration, each increase in spreading factor doubles the symbol time: SF7 takes 1.024 ms and SF12 takes 32.768 ms, a 32-fold difference. These are calculated symbol durations, not measured packet airtimes. Payload, preamble, headers and coding affect a complete packet; retries add further channel use. The release review still needs link evidence to justify the airtime cost and an explicit ADR policy.

LoRaWAN spreading factor narrated tour

Play silently with captions on provisional storyboard timing; narration audio is pending. Production pacing is not protocol time. Choose Reduced motion for a complete still at each beat.

Play the tour to open the workbench. Pause, replay a beat, or read the full transcript below. Some situations cannot be shown by this teaching model; those beats keep the existing frame and provide captions only.

Full transcript — LoRaWAN spreading factor (8 beats)

B1 — Field sensor tradeoff
You are the engineer choosing radio settings for two hundred field sensors. A short message barely reaches the receiver. Making that message easier to hear could help, but longer transmissions cost energy and shared channel time. How much extra time does a higher spreading factor cost?

Model caption: Your task: choose radio settings for 200 field sensors. Weak-signal reception competes with energy and shared channel time.

B2 — Chirps and symbols
The radio carries symbols using chirps, controlled sweeps across a span of frequencies. Bandwidth names that span. Spreading factor controls how long each symbol lasts. Longer symbols can help a receiver recover a weak signal, while keeping the channel occupied for longer.

Model caption: A chirp sweeps across a frequency span. Bandwidth is that span; spreading factor controls symbol duration.

B3 — SF7 calculation
For your sensors, hold bandwidth at one hundred twenty-five kilohertz. Start with spreading factor seven. Two raised to the seventh power gives one hundred twenty-eight. Divide one hundred twenty-eight by one hundred twenty-five thousand to get zero point zero zero one zero two four seconds per symbol.

Model caption: 125 kHz = 125,000 Hz. Two to the seventh power = 128; 128 ÷ 125,000 = 0.001024 seconds per symbol.

B4 — Change to SF12
In milliseconds, that is one point zero two four per symbol. Keep the same bandwidth and change to spreading factor twelve. Two raised to the twelfth power gives four thousand ninety-six. Divide four thousand ninety-six by one hundred twenty-five thousand to get zero point zero three two seven six eight seconds.

Model caption: SF7: 1.024 ms. SF12 at the same bandwidth: two to the twelfth power = 4,096; 4,096 ÷ 125,000 = 0.032768 seconds = 32.768 ms.

B5 — Thirty-twofold symbol time
That is thirty-two point seven six eight milliseconds per symbol. Divide thirty-two point seven six eight by one point zero two four: each symbol now takes thirty-two times as long. The bandwidth stayed fixed; changing the spreading factor stretched the time needed for a symbol.

Model caption: 32.768 ÷ 1.024 = 32. Each symbol takes 32 times as long at SF12 as at SF7, with bandwidth fixed at 125 kHz.

B6 — Whole packet airtime
A whole packet also carries overhead alongside its payload, so symbol time is only part of its airtime. Longer symbols lengthen the packet's time on air. For your sensor fleet, more time per message means less shared capacity. The weak signal benefit comes with a channel cost.

Model caption: Symbol duration is part of packet airtime. Payload and overhead also contribute. Longer packets use more shared channel time.

B7 — Link margin tradeoff
The misconception is that the highest spreading factor is always the safest choice for every sensor. It can help weak links, but the extra airtime uses shared capacity. Link margin means breathing room for receiving a weak signal; gaining that room has a time cost.

Model caption: Highest spreading factor for every sensor is not automatically safest: weak-signal breathing room costs shared airtime.

B8 — Shared capacity
Choose spreading factor to give a weak signal enough breathing room while leaving shared channel time for the fleet.

Model caption: Choose spreading factor to give a weak signal enough breathing room while leaving shared channel time for the fleet.

Spreading Factor

Controls symbol duration. Lower settings reduce airtime; higher settings can support weaker links when the evidence justifies the cost.

Bandwidth

Defines the channel span used by the chirp. It interacts with sensitivity, data-rate choices, and regional profile constraints.

Coding Rate

Adds redundancy for error tolerance. More redundancy can help robustness, but it also adds transmitted symbols.

Payload Fit

Payload length, headers, joins, MAC commands, retries, and acknowledgements all affect the channel budget.

Overview Knowledge Check

Practitioner: Write the Modulation Review Record

A practical modulation record ties the setting to one message class and one deployment condition. The reviewer should not approve "LoRa works" as a broad claim. The record should say which payload, which message schedule, which regional profile, which gateway evidence, which data-rate or ADR policy, and which retest trigger are in scope.

Before deciding the “symbol”–“chirp” decision, inspect “symbol” in Figure 8.2 and compare it with “Chirp”. That contrast matters because Chirp spread spectrum explains the radio mechanism; the release record still needs observed link and airtime evidence.

LoRa chirp spread spectrum decoding flow with data symbol, chirp offset, swept signal, receiver dechirp, frequency peak, and decoded symbol.
Figure 8.2: Chirp spread spectrum explains the radio mechanism; the release record still needs observed link and airtime evidence.

Trace Figure 8.2 by asking what “symbol” establishes and what “Chirp” changes. Check “offset” next, ending at “swept signal”. That progression is the mechanism behind Chirp spread spectrum explains the radio mechanism; the release record still needs observed link and airtime evidence and the evidence order needed for the “symbol”–“chirp” decision.

Record Field
Evidence To Capture
Common Gap
Review Action
Payload and cadence
Encoded payload size, normal cadence, alarm cadence, join behavior, retries, and maintenance traffic.
The review tests one small message but approves every message pattern.
Split message classes or revise the scope.
Radio setting
Spreading factor, bandwidth, coding rate, transmit setting, preamble, and regional profile.
The chosen data rate is not tied to observed link evidence.
Require a measured or explicitly bounded assumption.
Gateway evidence
Gateway hearing path, packet metadata, field location, antenna condition, and expected movement or obstruction.
One lab point is treated as field coverage evidence.
Record where the evidence applies and where it does not.
ADR handoff
Whether ADR owns the final data-rate adjustment, what history it can trust, and when manual override is allowed.
ADR is enabled without a device profile that makes historical evidence useful.
Define the ADR suitability boundary.
Release trigger
Payload, firmware, placement, antenna, gateway, regional profile, ADR policy, or message-schedule change.
The release record has no condition that reopens the review.
Add a retest trigger before approval.

Accept

The selected setting has enough link evidence, payload evidence, airtime evidence, regional fit, ADR ownership, and retest boundaries.

Revise

The setting may be plausible, but the record lacks payload, airtime, field, or ADR evidence for the reviewed scope.

Defer

The reviewer cannot tie the radio setting to a real device group, regional profile, gateway path, or release owner.

Practitioner Knowledge Check

Under the Hood: Symbol Time Drives the Tradeoff

LoRa symbols are represented by chirps. Spreading factor changes how many possible symbol states are represented and how long each symbol occupies the channel. A higher spreading factor can make weak-link decoding more practical, but it also extends the time on air for the same payload family.

That is why modulation review is a system decision, not only a radio decision. Airtime affects channel occupancy, retries, downlink opportunities, regional profile fit, battery behavior, and gateway capacity. ADR can help only when the device pattern gives it useful, recent evidence.

The useful under-the-hood shortcut is Tsymbol = 2SF / bandwidth. At 125 kHz, SF10 gives 1024 / 125,000 = 8.192 ms per symbol, while SF12 gives 4096 / 125,000 = 32.768 ms. That fourfold jump from SF10 to SF12 happens before counting low-data-rate optimization, coding-rate overhead, preamble, headers, acknowledgements, or retries. A field record that says "SF12 worked once" therefore proves only a narrow reception event unless it also shows the payload family, traffic count, retry rate, gateway diversity, and regional airtime headroom.

A release decision about the “same 125 khz channel, same time window — each step up in sf doubles the chirp period”–“sf7 — symbol time 1.024 ms” decision needs “11 chirps in this window”, not a slogan. Inspect Figure 8.3 through “Same 125 kHz channel, same time window — each step up in SF doubles the chirp period” and “SF7 — symbol time 1.024 ms” to check this claim: The raw chirp shape behind the symbol-time formula: each step up in SF doubles the chirp period, so half as many chirps fit in the same window.

Three stacked frequency-versus-time plots of raw LoRa up-chirps for SF7, SF8, and SF9, showing the chirp period doubling with each step up in spreading factor.
Figure 8.3: The raw chirp shape behind the symbol-time formula: each step up in SF doubles the chirp period, so half as many chirps fit in the same window.

Read Figure 8.3 from “Same 125 kHz channel, same time window — each step up in SF doubles the chirp period” to “SF7 — symbol time 1.024 ms”. Next, trace “11 chirps in this window” into “SF8 — symbol time 2.048 ms”. This ordering shows why The raw chirp shape behind the symbol-time formula: each step up in SF doubles the chirp period, so half as many chirps fit in the same window. For the “same 125 khz channel, same time window — each step up in sf doubles the chirp period”–“sf7 — symbol time 1.024 ms” decision, record “Same 125 kHz channel, same time window — each step up in SF doubles the chirp period” as the starting condition and reopen “SF8 — symbol time 2.048 ms” if “11 chirps in this window” changes.

The same shortcut can be written as a rate check. Symbol rate is Rs = bandwidth / 2SF, and an uncoded bit-rate intuition is Rb = SF x bandwidth / 2SF. With 125 kHz bandwidth that puts SF7 near 6.84 kbit/s before 4/5 coding lowers the nominal rate to about 5.47 kbit/s. SF12 is only a few hundred bit/s; low-data-rate optimization also matters at that setting. Coding, headers, preamble, MAC commands, acknowledgements, and retries determine delivered application throughput.

A release record should not stop at the raw formula. Forward error correction adds redundancy, and the regional data-rate table also accounts for low-data-rate optimization at SF11 and SF12. For the EU863-870 LoRaWAN profile at 125 kHz, the specified indicative physical bit rates are:

Spreading Factor Chips per Symbol EU863-870 Bit Rate (125 kHz)
SF71285.470 kb/s
SF82563.125 kb/s
SF95121.760 kb/s
SF101,024980 b/s
SF112,048440 b/s
SF124,096250 b/s

Use the selected region's specified data rate for a release record. These are indicative physical rates, not delivered application throughput or packet airtime; calculate airtime from the complete frame, preamble, header, payload, coding rate, and low-data-rate optimization. Whitening and interleaving do not independently reduce the bit rate.

Use that arithmetic when checking ADR too. If a fixed meter has weeks of stable uplinks, ADR may be able to move it toward a lower spreading factor and return channel capacity. If a tracker moves between basements, loading docks, and outdoor yards, old uplinks can overstate the current margin. The review should name when ADR owns the decision, when a manual boundary is safer, and which movement or gateway change reopens the calculation.

Inspect Figure 8.4 to see how increasing spreading factor changes symbol rate and symbol time when bandwidth stays fixed.

LoRa symbol-rate equation showing symbol rate as bandwidth divided by two raised to the spreading factor.
Figure 8.4: The spreading-factor tradeoff comes from the symbol-rate equation: increasing SF lowers symbol rate and lengthens airtime for the same channel bandwidth.

In Figure 8.4, hold bandwidth at 125 kHz and compare SF7 with SF12. At SF7, the denominator is 2^7 = 128, so 125,000 Hz / 128 = 976.5625 symbols/s, or about 976.6 symbols/s. The SF12 row shows a much lower symbol rate and a much longer symbol time because each symbol spans far more chips at the same bandwidth. That longer time can improve the receiver’s ability to recover a weak signal, but it also lengthens packet airtime and reduces shared capacity. Spreading factor is therefore a rate-and-airtime choice tied to field conditions, not a free range setting.

Symbol Duration

Longer symbols can support weaker links, but every longer frame also consumes more shared channel time.

Payload Coupling

Headers, MAC commands, joins, retries, acknowledgements, and encoded payload size all change the airtime record.

ADR Limits

ADR is strongest for relatively stable devices with useful history. Mobile or bursty devices may need narrower review boundaries.

Retest Boundary

Antenna, gateway, firmware, payload, schedule, region, or ADR-policy changes can make the modulation record stale.

Inspect Figure 8.5 with one question from the “size”–“profile” decision: how does “size” constrain “Profile”? The answer supports The release record turns radio evidence into an approval, revision, exception, or retest decision.

LoRa modulation release record lists payload size, profile plan, selected setting, link and airtime evidence, ADR handoff, exception rule and owner record. The map collects these review fields without showing a final decision or retest trigger.
Figure 8.5: The release record puts payload size, profile plan, selected radio setting, link and airtime evidence, ADR handoff, exception rule, and owner together.

Begin Figure 8.5 at “size”, but do not stop there. Compare “Profile”, then follow “plan” until “Selected”. The resulting chain supports The release record turns radio evidence into an approval, revision, exception, or retest decision; it also gives the “size”–“profile” decision a specific retest boundary.

Under-the-Hood Knowledge Check

8.2 Figure Review: Chirp Duration and Sensitivity

This section: Figure Review: Chirp Duration and Sensitivity — Inspect Figure 8.6 to see how spreading factor changes chirp duration rather than merely changing a nominal range label.

Inspect Figure 8.6 to see how spreading factor changes chirp duration rather than merely changing a nominal range label.

LoRa chirps compare SF7, SF9 and SF12 at 125 kHz bandwidth. Higher spreading factor lengthens symbols and lowers uncoded bit rate while occupying the channel longer.
Figure 8.6: LoRa chirp rate, symbol time, and spreading factor.

Read Figure 8.6 from the SF7 · short sweep to SF12 · long; Ts = 2^SF / BW yields 1.024 ms versus 32.768 ms, making the potential sensitivity gain a 32-times-longer per-symbol airtime cost before coding overhead.

8.3 Summary

This section: Summary — Inspect Figure 8.7 to connect chirp encoding and spreading factor with airtime and device-class listening cost.

Inspect Figure 8.7 to connect chirp encoding and spreading factor with airtime and device-class listening cost.

Four-stage LoRa comparison: chirp spread spectrum decoding, SF7-to-SF12 airtime and sensitivity trade-off, Class A B C receive availability, and field evidence and ADR retest.
Figure 8.7: LoRa chirp modulation, spreading-factor airtime, and LoRaWAN device-class listening behaviour form one deployment trade-off.

Read Figure 8.7 from Spreading factor sets time, which contrasts the 1.024 ms SF7 symbol with the 32.768 ms SF12 symbol in the same 125 kHz channel. Class sets downlink availability then separates two post-uplink windows in Class A from scheduled Class B and nearly continuous Class C listening, preventing radio reach and receiver duty from being conflated.

The second view, Figure 8.8, labels the doubling 2^SF count as “chirps/symbol”; technically this is chips per symbol. Its coded rates are idealized calculations, so use the regional data rate for an airtime record.

At 125 kHz, SF7–SF12 rows label increasing chip counts as chirps per symbol and show decreasing idealized coded bit rates; regional rates can differ.
Figure 8.8: SF7 through SF12 are compared using the figure’s “chirps/symbol” labels for chip counts and idealized coded bit rates at 125 kilohertz.

Read across Figure 8.8 from SF7 at the figure’s 128 chirps/symbol label (128 chips per symbol) and about 5.47 kb/s to SF12 at its 4,096 chirps/symbol label (4,096 chips per symbol). One LoRa symbol is one chirp. The figure’s SF11 537 b/s and SF12 293 b/s are idealized coded-rate calculations; EU863-870 specifies 440 b/s and 250 b/s, respectively, at 125 kHz. Use the selected regional data rate and the complete frame when calculating airtime, including preamble, MAC commands, acknowledgements, and retries.

LoRa modulation review connects radio settings to evidence. Spreading factor, bandwidth, coding rate, payload size, regional profile, gateway evidence, and ADR policy all affect whether a LoRaWAN message pattern is fit for release.

The safest review habit is to avoid broad claims. Approve one message class, one deployment condition, one regional profile, and one retest boundary at a time. Higher spreading factors can support weak links, but they also increase airtime pressure and must be justified by observed need.

8.4 Key Takeaway

This section: Key Takeaway

Treat spreading factor as a tradeoff, not a guarantee. The release record should prove enough link margin while keeping airtime, payload, ADR, and retest limits visible.

8.5 See Also

This section: See Also

LoRaWAN Introduction

LoRaWAN Introduction

LoRaWAN Network Architecture

LoRaWAN Network Architecture

LoRaWAN Link Budget and ADR Review

LoRaWAN Link Budget and ADR Review

LPWAN Link Budget and Range

LPWAN Link Budget and Range

Find help

3 reviewed answers.

Where should I start in a module?

Open the module page from the sidebar to see its chapters in order. Use the module map to return to a topic you need.

Modules and paths

Reviewed

What can I try when a project does not work?

Check the symptom, then work through the diagnostic steps. Keep the error message and the smallest example that reproduces it.

When you are stuck

Reviewed

How do interactive examples work?

Use the interactive guide to check how examples and simulations work before changing your project.

Interactive examples guide

Reviewed