LoRa time on air and EU 868 MHz duty cycle calculator
How long one LoRa packet is on the air, from Semtech's formula, and how many of them you may send per hour and per day in each EU 868 MHz sub-band. Pick a Meshtastic preset or set the radio parameters yourself. Results update as you type.
Indicative calculation; verify before use. For the EU (CEPT) 863–870 MHz band only.
Radio settings
Payload = every byte the radio sends after the LoRa header, protocol headers and encryption overhead included (1–255).
Time on air
- Symbol time Ts = 2SF/BW
- –
- Low data rate optimize
- –
- Preamble (n + 4.25 symbols)
- –
- Header + payload symbols
- –
- Header + payload time
- –
- Nominal bit rate
- –
EU 868 MHz duty-cycle budget for this packet
ERC Recommendation 70-03, Annex 1 (non-specific short range devices). The duty cycle is the share of one continuous hour a single device may transmit in the sub-band.
| Annex 1 | Sub-band | Duty cycle | Packets / hour | Packets / day | Average gap | Air time / hour | Max e.r.p. |
|---|
Meshtastic's EU_868 region uses 869.4–869.65 MHz (h1.7) with a 10 % duty cycle. Each row also allows LBT+AFA (listen before talk with adaptive frequency agility) instead of the duty-cycle limit; this table assumes the duty-cycle route. National rules can differ: check your country's implementation of Rec 70-03.
Meshtastic presets with this payload
Same payload, header and CRC as above, preamble 16 symbols as in the Meshtastic firmware, in the 10 % band h1.7. Only the presets available in EU_868; the 500 kHz Turbo presets are not.
| Preset | SF | BW | CR | Time on air | Packets / hour at 10 % |
|---|
One message you send is often more than one transmission: every node that rebroadcasts it uses its own air time, and acknowledgements and position or telemetry packets count too.
How it works
A LoRa packet is a preamble, an optional header and the payload. Each symbol carries SF bits spread over 2SF chips, so one step up in spreading factor doubles the symbol time and roughly doubles the time on air; doubling the bandwidth halves it. The coding rate adds forward error correction: 4/8 sends twice as many coded bits as 4/5 for the payload part. Payload symbols come in blocks, so one extra byte sometimes changes nothing and sometimes adds a whole block. Semtech's datasheet says low data rate optimize is mandatory when a symbol lasts longer than 16 ms (SF11 and SF12 at 125 kHz, SF12 at 250 kHz); this calculator switches it on there and off elsewhere, and both ends must use the same setting.
In the EU, the 863–870 MHz short range device band is split into sub-bands with their own power and duty-cycle limits in ERC Recommendation 70-03 Annex 1, implemented through ETSI EN 300 220. A 1 % duty cycle is 36 seconds of transmitting per hour, 0.1 % is 3.6 seconds, and 10 % is 360 seconds. The rules here are for the EU and CEPT countries; other regions such as the 915 MHz band in the Americas have different rules, which this page does not cover.
Worked example (Meshtastic Long Fast): SF11, 250 kHz, CR 4/5, preamble 16, explicit header, CRC on, 50 bytes. T_s = 2048 / 250 000 = 8.192 ms, below 16 ms, so DE = 0. Preamble = (16 + 4.25) × 8.192 ms = 165.888 ms. n_payload = 8 + ceil((400 − 44 + 28 + 16) / 44) × 5 = 8 + 10 × 5 = 58 symbols = 475.136 ms. Time on air = 641.024 ms. In h1.7 (10 %, 360 s per hour) that is floor(360 / 0.641024) = 561 packets per hour.
Worked example (SF12, 125 kHz): CR 4/5, preamble 8, explicit header, CRC on, 10 bytes. T_s = 4096 / 125 000 = 32.768 ms, above 16 ms, so DE = 1. n_payload = 8 + ceil((80 − 48 + 28 + 16) / 40) × 5 = 18 symbols, and T_air = (8 + 4.25 + 18) × 32.768 ms = 991.232 ms. In a 1 % sub-band (36 s per hour) that is 36 packets per hour. The same packet at SF7 takes (8 + 4.25 + 28) × 1.024 ms = 41.216 ms.
Sources (checked 2026-11-03):
- Time-on-air formula, symbol rate, low data rate optimize above 16 ms symbol time, nominal bit rates: Semtech SX1276/77/78/79 datasheet, Rev. 4, March 2015, sections 4.1.1.4–4.1.1.7: https://cdn-shop.adafruit.com/product-files/3179/sx1276_77_78_79.pdf
- EU sub-bands h1.3–h1.9, e.r.p. and duty cycle, definition of duty cycle over one hour: ERC Recommendation 70-03, edition of February 2025, Annex 1 and Appendix 5: https://docdb.cept.org/download/4635
- Meshtastic presets (SF, bandwidth, coding rate, data rate): https://meshtastic.org/docs/overview/radio-settings/
- Meshtastic EU_868 region (869.4–869.65 MHz, 10 % duty cycle over a rolling hour): https://meshtastic.org/docs/configuration/radio/lora/
- Meshtastic preamble length 16 symbols: firmware source, src/mesh/RadioInterface.h: https://github.com/meshtastic/firmware/blob/master/src/mesh/RadioInterface.h