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.

Your numbers
Choose whether the entered bytes are LoRaWAN application data or the complete raw LoRa PHY payload.
Enter application bytes in LoRaWAN mode or the complete transmitted PHY payload in raw mode.
Enter MAC-command bytes carried in FOpts; this is ignored in raw mode.
Higher spreading factors lengthen each symbol and usually improve receiver sensitivity.
Select the modem bandwidth used for the transmission.
Select the LoRa forward-error-correction rate.
LoRaWAN commonly uses eight programmed preamble symbols.
LoRaWAN data frames use explicit-header mode.
Include the optional LoRa PHY payload CRC in the packet-duration equation.
Automatic mode enables optimization when symbol duration reaches 16 milliseconds.
Enter the planned transmission frequency for airtime-budget calculations.
Enter the airtime allowance for the device, channel, sub-band, or project budget.

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
ComponentValueUnit
Symbol duration1.02ms
Preamble duration12.54ms
Payload duration49.15ms
Packet duration61.7ms
Low-data-rate optimizationDisabled

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

  1. Choose whether the payload field is application data or the complete raw PHY payload.
  2. Enter the spreading factor, bandwidth, coding rate, preamble, header mode, CRC setting, and low-data-rate optimization mode.
  3. Set the planned message rate and the duty-cycle allowance you want to check.
  4. 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.016 seconds.
  • 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.

Put this calculator on your site

Paste the snippet below where you want the calculator to appear. It stays up to date automatically and links back here.

<iframe src="https://countfolk.com/embed/lorawan-airtime-duty-cycle-calculator/" title="LoRaWAN Airtime & Duty Cycle Calculator" width="100%" height="640" style="border:0;max-width:44rem" loading="lazy"></iframe>