Cloud Parts

Azure IoT Hub

Azure’s device gateway: a registry of device identities, telemetry into an Event Hubs-compatible stream, and device twins, direct methods and cloud-to-device messages, sold in fixed-price units with a daily message quota.

Type
Managed service on Azure
Made by
Microsoft
License
Proprietary; the Azure IoT device and service SDKs are open source (MIT)
Facts checked
6 October 2026

What it is

Every device has an entry in the hub’s identity registry and signs in with a symmetric key (a SAS token) or an X.509 certificate. It connects over MQTT 3.1.1, AMQP or HTTPS, with MQTT and AMQP also available over WebSockets on port 443. IoT Hub is not a general MQTT broker: a device publishes telemetry only to its own fixed topic, devices/{device-id}/messages/events/, and can’t talk to other devices. Telemetry lands in a built-in, Event Hubs-compatible endpoint, split into partitions (chosen at creation and fixed, up to 32) and kept for one to seven days, which any Event Hubs reader, Azure Functions or Stream Analytics can consume. Routes with queries over message properties, body and twin tags can also send messages to Blob Storage, Service Bus, Event Hubs or Cosmos DB. The Standard tier adds the other direction: a per-device queue of cloud-to-device messages, a device twin (a JSON document with desired and reported properties and tags), direct methods (a synchronous call to an online device that waits 5 to 300 seconds for an answer), and jobs that apply these across a fleet. The Device Provisioning Service assigns new devices to the right hub on first boot.

You buy a hub as units of one edition. Each unit has a daily message quota, counting 4 KB per message: 400,000 a day on B1 or S1, 6 million on B2 or S2, 300 million on B3 or S3. In US East a unit costs $10, $50 or $500 a month on Basic, and $25, $250 or $2,500 on Standard; a Free hub allows 8,000 messages of 0.5 KB a day. Twin reads and updates and direct method calls draw on the same quota. When the quota runs out, requests fail with 403002 IotHubQuotaExceeded until the next UTC day or until you add units. For open publish/subscribe between devices, Microsoft now points to the MQTT broker in Azure Event Grid, and for factory-floor edge sites to Azure IoT Operations.

Why teams pick it

  • Device management built in on Standard: twins, direct methods with timeouts, a cloud-to-device queue, and jobs across thousands of devices
  • Telemetry arrives in an Event Hubs-compatible stream that Azure Functions, Stream Analytics and Event Hubs SDKs read directly, with routing to Storage, Service Bus and Cosmos DB
  • A flat monthly price per unit: connection time and routing to several endpoints add nothing to the hub bill, and cost changes only when you add units
  • The Device Provisioning Service gives zero-touch enrollment and spreads devices across hubs, at $0.10 per 1,000 operations

Watch out for

  • Not a full MQTT broker: MQTT 3.1.1 only, fixed topics, no retained messages, no QoS 2, no device-to-device or broadcast messaging; Event Grid’s broker covers those
  • Hard daily quotas: a burst past the quota is rejected for the rest of the UTC day, and you pay for each unit all month whether you use it or not
  • Basic tier has no cloud-to-device messages, twins or direct methods; Standard can’t be downgraded to Basic, a Free hub can’t be upgraded, and partition count is fixed at creation
  • Caps of 1,000,000 devices and modules per hub, 50 hubs per subscription, 256 KB per device-to-cloud message and 50 pending cloud-to-device messages per device
  • Microsoft has been retiring the services around it: Time Series Insights shut down in July 2024 and IoT Central will retire on 20 September 2029

Alternatives

What all iot device messaging have in common →

How it fits with other technologies

Create a hub, register a device, send telemetry and call a direct method · bash

az extension add --name azure-iot

# A Standard S1 hub with 4 partitions on the built-in endpoint (fixed for life)
az iot hub create --name acme-plant-hub --resource-group iot-rg \
  --sku S1 --unit 1 --partition-count 4

# A device identity with a symmetric key
az iot hub device-identity create --hub-name acme-plant-hub --device-id pump-17

# Simulate the device: send one telemetry message
az iot device send-d2c-message --hub-name acme-plant-hub --device-id pump-17 \
  --data '{"temp": 84.2}'

# Change desired state in the twin; the device sees it on connect
az iot hub device-twin update --hub-name acme-plant-hub --device-id pump-17 \
  --desired '{"reportEverySeconds": 60}'

# Call a direct method; fails with 404 if the device isn't online
az iot hub invoke-device-method --hub-name acme-plant-hub --device-id pump-17 \
  --method-name reboot --method-payload '{"delaySeconds": 5}' --timeout 30

# Watch telemetry arriving on the built-in endpoint
az iot hub monitor-events --hub-name acme-plant-hub --device-id pump-17

Tiers and units#

List prices in US East, checked 6 October 2026. Each hub is one edition; you scale by adding units of that edition, or by moving between sizes within the same tier.

EditionPrice per unit per monthMessages per day per unitUnits per hubFeatures
Free$08,000 (metered at 0.5 KB)One free hub per subscriptionAll Standard features; can’t be upgraded
B1$10400,000Up to 200Telemetry, routing, per-device identity, DPS
B2$506,000,000Up to 200As B1
B3$500300,000,000Up to 10As B1
S1$25400,000Up to 200Adds cloud-to-device messages, twins, direct methods, jobs, IoT Edge
S2$2506,000,000Up to 200As S1
S3$2,500300,000,000Up to 10As S1
  • Paid tiers meter every billable operation in 4 KB blocks: a 6 KB message counts as two, and a direct method counts its request and its response. Keep-alives and identity registry calls are free.
  • Throttles also scale with size: an S1 hub allows the higher of 100 device-to-cloud sends per second or 12 per second per unit; each S3 unit allows 6,000.
  • Azure Device Registry and certificate management work only on Free and S1 hubs.
  • Prices from the Azure Retail Prices API (meters effective since 2018) and the IoT Hub pricing page.

IoT Hub and its neighbours#

Microsoft has split IoT work across several services, and retired some of them. Which one fits depends on whether you need a device registry with twins and commands, an open MQTT broker, or software at the edge.

Azure Event Grid MQTT broker

GA Nov 2023

A publish/subscribe MQTT 3.1.1 and 5 broker on custom topics, with retained messages, shared subscriptions, device-to-device and broadcast messaging, and messages up to 1 MB. Billed per throughput unit hour plus MQTT operations metered per 64 KB. No twins or direct methods.

Azure IoT Operations

edge

Kubernetes services on Azure Arc-enabled clusters at the site: an MQTT broker, connectors such as OPC UA, and data flows that clean data before sending it to Event Grid, Event Hubs or Fabric. It can run offline for up to 72 hours.

Azure IoT Central

retires Sept 2029

A hosted IoT application with dashboards, rules and device templates, billed per device. Microsoft announced on 29 September 2026 that it will retire on 20 September 2029, and recommends IoT Hub, DPS, Azure Device Registry and Fabric instead.

Azure Time Series Insights

retired July 2024

An analytics and storage service for IoT time series. Microsoft brought its retirement forward to 7 July 2024 and moved customers to Azure Data Explorer.

See it in a real stack

No architecture uses Azure IoT Hub yet. Drop it into the playground and wire it up yourself.Open playground →
Where it came from2015–2026

In November 2015 Microsoft’s Sam George introduced Azure IoT Suite, ready-made solutions such as remote monitoring that wired several Azure services together. At its centre was IoT Hub, “a new service we’ve introduced to meet the needs of IoT”: a cloud gateway that could scale to millions of connections per hub, authenticated each device separately, and could also send commands back to devices. It spoke HTTP and AMQP, with MQTT through a free open-source protocol gateway.

IoT Hub became generally available in February 2016, now listing HTTP, AMQP, AMQP over WebSockets and MQTT, with general-availability pricing from 1 April 2016. Device management followed in December 2016, and the Device Provisioning Service, for zero-touch enrollment of devices across hubs, reached general availability in December 2017.

IoT Hub kept its tight model of fixed topics per device. When customers wanted an open MQTT broker, Microsoft built one into Azure Event Grid, generally available in November 2023, and added Azure IoT Operations for edge sites. Around the hub, Time Series Insights was retired in 2024, and in September 2026 Microsoft announced that IoT Central will retire in 2029, naming IoT Hub and DPS as the platform to move to.

Why it’s built this way

Telemetry on Event Hubs internals
Event Hubs already handled partitioned, replayable ingestion at scale. Exposing an Event Hubs-compatible endpoint let existing readers, Stream Analytics and Functions consume device data unchanged.
A gateway with per-device identity and fixed topics, not an open broker
Azure’s focus was device-to-cloud telemetry and cloud-to-device commands with per-device authentication and revocation. Fixed topics kept each device to its own channel; open pub/sub came later in Event Grid.
Several protocols, not just MQTT
Devices and gateways in 2015 used HTTP and AMQP as well as MQTT, which was first offered through a separate protocol gateway. IoT Hub normalises them into one message format.
Units with a daily quota instead of per-message billing
A fixed monthly price per unit makes costs predictable for a known fleet size. The trade-off is hard throttles and rejected messages once the day’s quota is spent.

Timeline

  1. 2015

    IoT Hub introduced as the core of Azure IoT Suite (November)

  2. 2016

    Generally available in February, with HTTP, AMQP and MQTT

  3. 2017

    Device Provisioning Service generally available (December)

  4. 2023

    Event Grid MQTT broker generally available, for open pub/sub (November)

  5. 2024

    Time Series Insights retired on 7 July

  6. 2026

    IoT Central retirement announced for 20 September 2029

Sources18 · facts checked 6 October 2026

Improve this page on GitHub