Bluetooth LE Throughput Calculator
Model theoretical data throughput for any Bluetooth LE connection. Adjust PHY, connection interval, DLE, MTU, and encryption to see the impact on data rate.
- Connection Subrating (Bluetooth 5.3) — dynamically skip connection events without renegotiating parameters
- Sub-millisecond Connection Intervals (Bluetooth 6.0) — CI values down to 375 microseconds
- Channel Sounding / HADM (Bluetooth 6.0) — high-accuracy distance measurement features that share radio time
Connection Parameters
Calculation Control
Packets/Event Cap (Optional)
Real devices often limit packets per connection event. Phones are the most common bottleneck — iOS typically caps at 4–7 packets.
Results
Step-by-Step Breakdown
| Step | Calculation | Result |
|---|
Real-World Reference
Implementation-specific parameters that affect actual throughput on phones and embedded controllers.
| Parameter | iOS (iPhone) | Android 14+ |
|---|---|---|
| ATT MTU | ~244 bytes (iOS 18). Can support up to 527 but 244 is commonly observed. | 517 bytes (forced by OS since Android 14) |
| MTU API control | None — iOS negotiates automatically | requestMtu() exists but Android 14 overrides to 517 |
| Min connection interval | 15 ms (11.25 ms for HID) | 11.25 ms (AOSP default since ~Android 8) |
| 2M PHY | Yes, automatic (iPhone 8+) | Yes, via setPreferredPhy() |
| Coded PHY | No (removed in iOS 14) | Chipset-dependent |
| DLE (max) | 251 bytes (iPhone 7+) | 251 bytes |
| Packets/event | ~4–7 | ~6 (varies by chipset) |
| Max GATT throughput | ~400–800 kbps | ~700–1,400 kbps |
The Bluetooth specification does not define a maximum number of packets per connection event — this is entirely implementation-specific.
| Platform | Typical Pkts/Event | Configurable? | Notes |
|---|---|---|---|
| Nordic nRF | 2–10+ | Yes | GAP_EVENT_LENGTH + Connection Event Extension |
| Infineon CYW20829 | 4–6+ (est.) | Indirectly | Controller manages internally |
| TI CC26xx | Unlimited* | Yes | MAX_NUM_PDU (time-constrained only) |
| Silicon Labs EFR32 | 3–10+ | Yes | max_ce_length (0.625 ms units) |
Operation type also matters: Notifications/Write Commands allow multiple packets per event. Indications/Write Requests are limited to one ATT-level round-trip per event.
When MTU exceeds what a single LL packet can carry (247 bytes), L2CAP fragments across multiple LL packets. Choosing the right MTU avoids wasted space:
MTU 502: ATT PDU splits into exactly 2 full LL packets — 244 + 251 bytes of app data. No waste.
MTU 512: Requires 3 LL packets — 244 + 251 + only 10 bytes in the third. Nearly a full packet wasted.
This is why MTU 502 is often recommended over 512 for maximum throughput efficiency.