LoRaWAN Airtime & Duty Cycle Calculator
Enter the LoRa and LoRaWAN packet settings to calculate time on air, hourly duty-cycle use, and the largest payload that still fits your airtime allowance.
Total packet airtime (ms)61.7
- Total PHY payload
- 25
- Symbol duration (ms)
- 1.02
- Preamble airtime (ms)
- 12.54
- Payload symbols
- 48
- Payload airtime (ms)
- 49.15
- Schedule duty-cycle use
- 0%
- Minimum interval at allowance (seconds)
- 6.17
- Maximum messages per hour
- 583
- Largest payload fitting the schedule
- 242
- Schedule status
- Within the entered duty-cycle allowance.
Airtime components
| Component | Value | Unit |
|---|---|---|
| Symbol duration | 1.02 | ms |
| Preamble duration | 12.54 | ms |
| Payload duration | 49.15 | ms |
| Packet duration | 61.7 | ms |
| Low-data-rate optimization | Disabled |
LoRaWAN mode adds MHDR, FHDR, FOpts, an FPort when application data is present, and MIC before timing the PHY payload.
Regional maximum payload sizes, dwell-time rules, acknowledgments, retries, and receive windows are not included.
How to use this calculator
- Choose whether the payload field is application data or the complete raw PHY payload.
- Enter the spreading factor, bandwidth, coding rate, preamble, header mode, CRC setting, and low-data-rate optimization mode.
- Set the planned message rate and the duty-cycle allowance you want to check.
- Read the packet airtime, hourly use, minimum interval, and reverse-solved payload limit.
How LoRaWAN airtime is calculated
LoRa packet airtime starts with the symbol duration. For spreading factor SF and bandwidth BW in hertz, Tsym = 2^SF / BW. A higher spreading factor doubles the symbol time each step, while a wider bandwidth shortens it in direct proportion.
The preamble is timed as Tpreamble = (NP + 4.25) * Tsym, where NP is the programmed preamble length. LoRaWAN commonly uses eight programmed symbols, so the timed preamble is 12.25 symbols before the payload begins.
The payload symbol count follows Semtech's ceiling-based equation:
Npayload = 8 + max(ceil((8PL - 4SF + 28 + 16CRC - 20IH) / (4(SF - 2DE))) * (CR + 4), 0)
- PL is the LoRa PHY payload length in bytes.
- CRC is 1 when the optional PHY payload CRC is enabled and 0 when it is disabled.
- IH is 0 for explicit-header mode and 1 for implicit-header mode.
- DE is 1 when low-data-rate optimization is enabled. In automatic mode this calculator enables it when
Tsym >= 0.016seconds. - CR is the coding-rate index: 1 for 4/5, 2 for 4/6, 3 for 4/7, and 4 for 4/8.
Payload airtime is Tpayload = Npayload * Tsym, and total packet airtime is Tpacket = Tpreamble + Tpayload.
How LoRaWAN overhead is handled
In raw mode, the PHY payload length is exactly the bytes you enter. In LoRaWAN mode, the calculator converts application bytes to a PHY payload. A data frame with application data adds MHDR, FHDR, FPort, MIC, and any FOpts bytes, so PL = application bytes + FOpts + 13. If application data is zero, there is no FPort and PL = FOpts + 12.
The result rejects combinations where the computed PHY payload is greater than 255 bytes. That is the LoRa PHY payload field limit used by the airtime equation, not a promise that every regional LoRaWAN data rate can carry that many bytes.
How the duty-cycle checks work
For M messages per hour and a duty-cycle allowance D percent, hourly use is U = 100 * M * Tpacket / 3600. The minimum interval at the allowance is I = Tpacket / (D / 100), and the maximum messages per hour is floor(3600 * D / 100 / Tpacket).
The largest payload result searches integer payload sizes from zero up to the 255-byte PHY cap and returns the largest one whose hourly airtime stays within the entered allowance. When messages per hour is zero, airtime use is zero, so the reverse result is limited only by the PHY payload length cap.
What this calculator leaves out
The calculation covers one transmitted LoRa packet. It does not add receive windows, acknowledgments, retries, join traffic, collisions, listen-before-talk behavior, gateway scheduling, or regional dwell-time and payload-size limits. SF6 and implicit-header mode also need matching radio configuration beyond the arithmetic shown here.
Worked example
Suppose a LoRaWAN device sends 12 application bytes with no FOpts at SF7, 125 kHz bandwidth, coding rate 4/5, an eight-symbol preamble, explicit header mode, payload CRC enabled, and automatic low-data-rate optimization. The application payload becomes a 25-byte PHY payload: 12 application bytes plus 13 bytes of LoRaWAN overhead.
The symbol duration is 1.024 ms. The preamble is 12.25 symbols, or 12.544 ms. The payload equation gives 48 payload symbols, so payload airtime is 49.152 ms and total packet airtime is 61.696 ms.
At one message per hour, the schedule uses about 0.0017% duty cycle. With a 1% allowance, the minimum interval is 6.17 seconds, the theoretical maximum is 583 messages per hour, and the largest application payload fitting that schedule is 242 bytes before regional limits are considered.
Common questions
How is LoRa time on air calculated?
LoRa time on air is the preamble duration plus the payload duration. The preamble is a fixed number of symbols, while the payload symbol count comes from Semtech's equation using payload length, spreading factor, coding rate, header mode, CRC, and low-data-rate optimization.
What overhead does LoRaWAN add to application data?
A normal LoRaWAN data frame adds MHDR, FHDR, FPort, and MIC around the application payload, plus any FOpts MAC-command bytes. This calculator adds 13 bytes when application data is present and 12 bytes when there is no FPort because the application payload is zero.
Why does spreading factor increase airtime so sharply?
Symbol duration is proportional to 2 raised to the spreading factor. Moving from SF7 to SF8 doubles each symbol time, and the payload symbol equation can add more symbols as the frame changes. That is why high spreading factors quickly dominate battery and duty-cycle budgets.
When should low-data-rate optimization be enabled?
Semtech guidance enables low-data-rate optimization when symbol duration reaches 16 ms. In automatic mode this calculator follows that threshold. Some modem configurations may require setting it explicitly, so the on and off choices are also available.
Does a 1% duty cycle apply everywhere?
No. The duty-cycle field is only a planning input. Actual LoRaWAN operation can depend on region, sub-band, channel plan, dwell-time rules, listen-before-talk rules, operator policy, and the regional parameters for the selected data rate.
Why can the regional payload limit be lower than 255 bytes?
The 255-byte value is the PHY payload cap used by the LoRa airtime equation. LoRaWAN regional parameters can set smaller maximum MAC payload sizes for a specific region and data rate, especially at slower data rates or where dwell-time restrictions apply.