LoRa airtime calculator

Enter the bytes passed to the radio, then compare the same packet at each spreading factor. The timeline separates preamble time from payload and coding.

Wireless links and radio power Updated Free, no sign-up

PHY payload20Packet airtime1,319

One packet, from the first preamble symbol to the end of the payload.

Preamble 401.4 msPayload and coding 917.5 ms

28 payload symbols · 32.77 ms per symbol · low-data-rate optimisation on

SF756.58 ms
SF8102.9 ms
SF9185.3 ms
SF10370.7 ms
SF11741.4 ms
SF121,319 ms

Payload bytes range from 1 to 255. A spreading-factor change may also change receiver sensitivity.

2.198% transmit time at your interval. Retries and receive windows are separate.

Check the radio link budget

Packet

All bytes passed to the radio, including any LoRaWAN overhead.

bytes
symbols
Header
Payload CRC
Radio and reporting interval
Bandwidth
Coding rate
s

Packet airtime

1,319ms

SF12, 125 kHz, coding rate 4/5. Low-data-rate optimisation on.

One symbol
32.77 ms
Transmit time at this interval
2.198%
PHY payload bits per airtime
121.3 bit/s

One transmission only. Receive windows, retries and regional restrictions are not included.

How it’s calculated
  1. Symbol time = 2^SF ÷ bandwidth=2^12 ÷ 125=32.77 ms
  2. Packet time = (preamble + 4.25 + payload symbols) × symbol time=(8 + 4.25 + 28) × 32.77=1,319 ms

20 PHY payload bytes occupy 1,319 ms at SF12.

Tip: LoRaWAN application bytes are not the complete PHY payload. Include the actual MAC headers, options and integrity code passed to the radio.

Build the packet timing

A small sensor message can occupy the radio channel for tens of milliseconds or more than a second. The spreading factor, bandwidth and coding rate matter as much as the number of bytes. Compare them with the same packet before choosing a reporting interval.

This tool implements the SX1276-style LoRa packet equations for SF7–12 at 125, 250 and 500 kHz. It is a PHY timing calculation, not a LoRaWAN network-capacity or regulatory compliance assessment.

Count the radio payload

PL = bytes passed to the radio

For LoRaWAN, an application payload is wrapped in protocol fields before transmission. Count the complete actual radio payload, including MAC options when present. Do not add the LoRa explicit PHY header to PL: its contribution is represented separately by the equation.

Calculate symbol time

Tsymbol = 2^SF / bandwidth

At SF7 and 125 kHz one symbol lasts 1.024 ms. Low-data-rate optimisation is selected automatically above 16 ms per symbol, matching the supported settings. The receiver must use compatible settings.

Include coding and preamble

Tpacket = (preamble + 4.25 + payload symbols) × Tsymbol

Payload symbols are quantised by the coding block ceiling. Adding one byte does not always increase airtime; crossing a block boundary does. The programmed preamble excludes the 4.25-symbol term already added by the model.

Check the schedule

Transmit fraction = packet time / start-to-start interval

The result covers one packet. Retransmissions, acknowledgements, receive windows and other devices occupy additional time. If a packet is longer than the requested interval, that schedule cannot be met.

LoRa airtime examples

20 PHY bytes at SF7

One symbol is 1.024 ms. The programmed preamble plus 4.25 symbols takes 12.544 ms, and 43 payload symbols take 44.032 ms. Total airtime is 56.576 ms, displayed as 56.58 ms. One packet every 60 seconds occupies approximately 0.0943% of the time.

Packet airtime 56.58 ms Open in the calculator

The same packet at SF12

Low-data-rate optimisation is enabled. A symbol lasts 32.768 ms and the packet takes 1,318.912 ms, displayed as 1,319 ms. This is about 23.3 times the SF7 airtime, before any retransmissions.

Packet airtime 1,319 ms Open in the calculator

Questions about LoRa airtime

Is LoRa airtime the same as LoRaWAN application latency?

No. Airtime is the transmission duration of one radio packet. Scheduling, queueing, receive windows, acknowledgements and retries add latency.

Does the percentage prove that I meet a duty-cycle limit?

No. It is a transmit-time fraction at the entered interval. Applicable sub-band rules, channel access methods, dwell-time restrictions and shared traffic require a separate regional assessment.

Why does one extra byte sometimes add no airtime?

Payload coding rounds to whole blocks of symbols. Several adjacent payload sizes can occupy the same number of blocks.

Can I use this for SF6 or LR-FHSS?

No. The supported model deliberately excludes SF6 special handling, LR-FHSS and FSK. Check the exact radio datasheet for those modes.

Limits of this result

  • Supports SX1276-style LoRa SF7–12 at 125, 250 or 500 kHz. SF6, FSK and LR-FHSS are outside this model.
  • Low-data-rate optimisation is enabled automatically when the symbol time exceeds 16 ms; match both ends of the actual link.
  • Transmit-time percentage is arithmetic for one repeated packet. It does not check regional duty-cycle, dwell-time, channel access, retransmissions or LoRaWAN receive windows.

Related guides

Sources

  1. SX1276/77/78/79 datasheet (opens in a new tab) Semtech, Rev 7, May 2020, LoRa time-on-air equations
  2. SX1276 reference driver (opens in a new tab) Semtech / LoRa-net, SX1276GetLoRaTimeOnAirNumerator; accessed 2026-10-01