Choose the right IoT Hub tier for your solution
Every IoT solution is different, so Azure IoT Hub offers several options based on pricing and scale. This article is meant to help you evaluate your IoT Hub needs. For pricing information about IoT Hub tiers, see IoT Hub pricing.
To decide which IoT Hub tier is right for your solution, ask yourself two questions:
What features do I plan to use?
Azure IoT Hub offers two tiers, basic and standard, that differ in the number of features they support. If your IoT solution is based around collecting data from devices and analyzing it centrally, then the basic tier is probably right for you. If you want to use more advanced configurations to control IoT devices remotely or distribute some of your workloads onto the devices themselves, then you should consider the standard tier. For a detailed breakdown of which features are included in each tier continue to Basic and standard tiers.
How much data do I plan to move daily?
Each IoT Hub tier is available in three sizes, based around how much data throughput they can handle in any given day. These sizes are numerically identified as 1, 2, and 3. For example, each unit of a level 1 IoT hub can handle 400 thousand messages a day, while a level 3 unit can handle 300 million. For more details about the data guidelines, continue to Message throughput.
Basic and standard tiers
The standard tier of IoT Hub enables all features, and is required for any IoT solutions that want to make use of the bi-directional communication capabilities. The basic tier enables a subset of the features and is intended for IoT solutions that only need uni-directional communication from devices to the cloud. Both tiers offer the same security and authentication features.
Only one type of edition within a tier can be chosen per IoT Hub. For example, you can create an IoT Hub with multiple units of S1, but not with a mix of units from different editions, such as S1 and B3, or S1 and S2.
|Capability||Basic tier||Free/Standard tier|
|Message routing and Event Grid integration||Yes||Yes|
|HTTP, AMQP, and MQTT protocols||Yes||Yes|
|Device Provisioning Service||Yes||Yes|
|Monitoring and diagnostics||Yes||Yes|
|Device twins, Module twins, and Device management||Yes|
|Device streams (preview)||Yes|
|Azure IoT Edge||Yes|
IoT Hub also offers a free tier that is meant for testing and evaluation. It has all the capabilities of the standard tier, but limited messaging allowances. You cannot upgrade from the free tier to either basic or standard.
Azure IoT Hubs contain many core components of Azure Event Hubs, including Partitions. Event streams for IoT Hubs are generally populated with incoming telemetry data that is reported by various IoT devices. The partitioning of the event stream is used to reduce contentions that occur when concurrently reading and writing to event streams.
The partition limit is chosen when IoT Hub is created, and cannot be changed. The maximum partition limit for basic tier IoT Hub and standard tier IoT Hub is 32. Most IoT hubs only need 4 partitions. For more information on determining the partitions, see the Event Hubs FAQ How many partitions do I need?
Once you create your IoT hub, you can upgrade from the basic tier to the standard tier without interrupting your existing operations. For more information, see How to upgrade your IoT hub.
The partition configuration remains unchanged when you migrate from basic tier to standard tier.
The free tier does not support upgrading to basic or standard.
IoT Hub REST APIs
The difference in supported capabilities between the basic and standard tiers of IoT Hub means that some API calls do not work with basic tier hubs. The following table shows which APIs are available:
|API||Basic tier||Free/Standard tier|
|Get registry statistics||Yes||Yes|
|Get services statistics||Yes||Yes|
|Create or update device||Yes||Yes|
|Create or update module||Yes||Yes|
|Query IoT Hub||Yes||Yes|
|Create file upload SAS URI||Yes||Yes|
|Receive device bound notification||Yes||Yes|
|Send device event||Yes||Yes|
|Send module event||AMQP and MQTT only||AMQP and MQTT only|
|Update file upload status||Yes||Yes|
|Bulk device operation||Yes, except for IoT Edge capabilities||Yes|
|Purge command queue||Yes|
|Get device twin||Yes|
|Get module twin||Yes|
|Invoke device method||Yes|
|Update device twin||Yes|
|Update module twin||Yes|
|Abandon device bound notification||Yes|
|Complete device bound notification||Yes|
The best way to size an IoT Hub solution is to evaluate the traffic on a per-unit basis. In particular, consider the required peak throughput for the following categories of operations:
- Device-to-cloud messages
- Cloud-to-device messages
- Identity registry operations
Traffic is measured on a per-unit basis, not per hub. A level 1 or 2 IoT Hub instance can have as many as 200 units associated with it. A level 3 IoT Hub instance can have up to 10 units. Once you create your IoT hub you can change the number of units or move between the 1, 2, and 3 sizes within a specific tier without interrupting your existing operations. For more information, see How to upgrade your IoT Hub.
As an example of each tier's traffic capabilities, device-to-cloud messages follow these sustained throughput guidelines:
|Tier||Sustained throughput||Sustained send rate|
|B1, S1||Up to 1111 KB/minute per unit
|Average of 278 messages/minute per unit
(400,000 messages/day per unit)
|B2, S2||Up to 16 MB/minute per unit
|Average of 4,167 messages/minute per unit
(6 million messages/day per unit)
|B3, S3||Up to 814 MB/minute per unit
|Average of 208,333 messages/minute per unit
(300 million messages/day per unit)
In addition to this throughput information, see IoT Hub quotas and throttles and design your solution accordingly.
Identity registry operation throughput
IoT Hub identity registry operations are not supposed to be run-time operations, as they are mostly related to device provisioning.
For specific burst performance numbers, see IoT Hub quotas and throttles.
If you are approaching the allowed message limit on your IoT Hub, you can use these steps to automatically scale to increment an IoT Hub unit in the same IoT Hub tier.