IoT Hub quotas and throttling
Overview
Azure IoT Hub enforces a set of quotas and throttling rules to ensure reliable service for all customers. These limits protect the platform from excessive usage, maintain performance, and provide predictable pricing.
Service limits
| Resource | Limit (per IoT Hub) | Notes |
|---|---|---|
| Device identities | 10 million (standard tier) / 1 billion (enterprise tier) | Includes disabled devices. |
| Device-to-cloud messages per second | 400 / 2 000 (standard) / 10 000 (enterprise) | Depends on selected tier. |
| Cloud-to-device messages per second | 50 / 250 (standard) / 1 250 (enterprise) | One message per device per second. |
| Device twins | 10 million | Each device may have one twin. |
| Modules per device | 32 | Only for IoT Edge devices. |
| Device method calls per second | 200 (standard) / 1 000 (enterprise) | Aggregated across all devices. |
Throttling behavior
If an operation exceeds a quota, the service returns an HTTP 429 Too Many Requests response. The response includes a Retry-After header indicating how long to wait before retrying.
| Operation | Throttle limit | Retry strategy |
|---|---|---|
| Device telemetry | Exceeding messages per second | Exponential back‑off with jitter. |
| Device twin updates | 50 operations / second per hub | Queue locally and retry after Retry-After. |
| Cloud‑to‑device messages | Exceeding messages per second | Batch and resend after delay. |
| Device provisioning | 30 requests / second per DPS scope | Implement client‑side rate limiting. |
Best practices
- Implement exponential back‑off with jitter when handling
429responses. - Batch telemetry where possible to reduce per‑message overhead.
- Use Azure IoT Hub SDKs which handle throttling automatically.
- Monitor
IncomingMessagesandOutgoingMessagesmetrics in Azure Monitor. - Scale to a higher tier if you regularly approach quota limits.