LoRaWAN Spreading Factor Trade-offs
Interactive Visualization of SF7-SF12 Range, Data Rate, and Airtime
LoRaWAN Spreading Factor Explorer
This interactive animation demonstrates how LoRa spreading factors (SF7-SF12) affect range, data rate, airtime, and battery life. Understanding these trade-offs is essential for optimizing LoRaWAN deployments.
This animation visualizes the core LoRa modulation trade-offs:
- Spreading Factor (SF): Higher SF means more signal spreading, increasing range but reducing throughput
- Range Circles: Expand as SF increases (each SF roughly doubles sensitivity)
- Chirp Visualization: Shows how chirp duration increases with SF
- Metrics Panel: Real-time data rate, airtime, and battery impact
- Link Budget: Calculate if your link will work at a given distance
- Adjust the SF slider (SF7-SF12) to see how parameters change
- Watch the range circles expand/contract around the gateway
- Observe the chirp signal stretch as SF increases
- Check the metrics panel for exact values
- Try demo scenarios to see typical deployment configurations
- Use the link budget calculator to validate your deployment
Understanding Spreading Factors
LoRa’s spreading factor is the key to understanding its impressive range capabilities. Each increase in SF:
| SF | Chips/Symbol | Sensitivity | Range | Data Rate (125 kHz) | Airtime (10 bytes) |
|---|---|---|---|---|---|
| SF7 | 128 | -123 dBm | ~2 km | 5.47 kbps | 46 ms |
| SF8 | 256 | -126 dBm | ~3.5 km | 3.13 kbps | 82 ms |
| SF9 | 512 | -129 dBm | ~5 km | 1.76 kbps | 165 ms |
| SF10 | 1024 | -132 dBm | ~7 km | 980 bps | 329 ms |
| SF11 | 2048 | -134.5 dBm | ~10 km | 440 bps | 659 ms |
| SF12 | 4096 | -137 dBm | ~15 km | 250 bps | 1319 ms |
How Chirp Spread Spectrum Works
LoRa uses a technique called Chirp Spread Spectrum (CSS) modulation:
A chirp is a signal whose frequency increases (up-chirp) or decreases (down-chirp) linearly over time. LoRa encodes data by shifting where the chirp starts within the frequency band.
Key insight: Higher spreading factors use more “chips” per symbol, making each bit take longer to transmit but easier to detect in noise.
The Trade-off Explained
SF7: ▃▅▇ Fast chirp → Short range → High data rate → Low battery use
↓
SF12: ▃▃▃▅▅▅▇▇▇ Slow chirp → Long range → Low data rate → High battery use
Each SF increase: - Doubles the time on air (2x energy per message) - Improves sensitivity by ~3 dB (roughly 1.4x range improvement) - Halves the data rate
SF Orthogonality: Simultaneous Transmissions
A powerful feature of LoRa is that different spreading factors are orthogonal. This means:
- A device transmitting at SF7 does not interfere with SF12 transmissions
- The same channel can carry up to 6 simultaneous transmissions (one per SF)
- This effectively multiplies channel capacity
A single LoRaWAN gateway can handle thousands of devices because:
- Frequency diversity: 8+ channels at different frequencies
- SF orthogonality: 6 SFs per channel
- Time diversity: Devices transmit infrequently (1-2 messages/hour)
Result: 8 channels x 6 SFs = 48 “virtual channels” available simultaneously
When to Use Each Spreading Factor
| Scenario | Recommended SF | Why? |
|---|---|---|
| Smart building sensors | SF7-8 | Short range, high throughput, battery savings |
| Urban parking | SF7-9 | Dense gateway deployment, moderate range |
| Agricultural monitoring | SF10-11 | Wide area coverage, infrequent updates |
| Mountain/wilderness tracking | SF12 | Maximum range, minimal infrastructure |
| Industrial with gateways | SF7-8 | Gateways nearby, high update frequency |
Adaptive Data Rate (ADR)
LoRaWAN networks automatically optimize SF using Adaptive Data Rate:
- Device sends uplinks with current SF
- Network server analyzes link quality (SNR, RSSI)
- If link is strong: Server commands device to use lower SF (faster, saves battery)
- If link is weak: Device increases SF (slower, but reliable)
Enable ADR for stationary devices (sensors, meters). Disable ADR for mobile devices (trackers) since link quality changes rapidly as they move.
Link Budget Calculation
To determine if a link will work at a given distance:
Link Budget = TX Power + Antenna Gains - Path Loss
For a link to work:
RSSI > Sensitivity + Margin (typically 10 dB)
Example calculation: - TX Power: 14 dBm (EU868 limit) - Gateway antenna: 6 dBi - Path loss at 5 km (868 MHz): ~120 dB - Received signal: 14 + 6 - 120 = -100 dBm - SF9 sensitivity: -129 dBm - Margin: -100 - (-129) = 29 dB
Conceptual Diagrams
What’s Next
- LoRaWAN Device Classes - Understand Class A, B, C timing
- LoRaWAN Architecture - Network components deep dive
- LoRaWAN Overview - Complete protocol reference
- LPWAN Comparison - Compare with Sigfox, NB-IoT
- Simulations Hub - More interactive visualizations
This animation is implemented in approximately 650 lines of Observable JavaScript. Key techniques:
- D3.js SVG visualization: Range circles, chirp waveform, device status
- Real LoRa parameters: Actual sensitivity, data rate, and airtime values
- Interactive controls: SF slider, bandwidth selector, demo scenarios
- Link budget calculator: Real-world propagation estimates
- ADR context: Explains how networks optimize SF automatically
The animation uses the IEEE color palette for consistency: - Navy (#2C3E50): Primary UI elements - Teal (#16A085): Good signal, high efficiency - Orange (#E67E22): Warnings, high airtime - Gray (#7F8C8D): Neutral elements