azurerm_route_table cost estimation
A route table is free. User-defined routes and their association to subnets cost nothing. The cost sits in whatever the routes point traffic at.
An azurerm_route_table holds user-defined routes (UDRs) that override Azure's default system routes for a subnet. The route table and every route in it are free. Azure does not charge for the table, the routes, or associating the table with a subnet.
The cost implication of a route table is entirely in where it sends traffic. A UDR with a next hop of a network virtual appliance or Azure Firewall forces traffic through that paid resource, which bills hourly plus per-GB processing. A route that sends outbound traffic to a NAT Gateway or a VPN gateway anchors those hourly and per-GB charges. A route that forces traffic across regions or through a hub network can create cross-region transfer, metered per GB. The route table is free, but it is the switch that decides which paid path packets take.
The useful review is to check what your next hops are. Forcing all egress through a firewall is a deliberate security decision with a real cost, and sometimes a service endpoint or a direct route avoids an appliance hop entirely. c3x prices the firewalls, NAT Gateways, and gateways your routes point at and treats the route table and its routes as the free control plane they are.
Terraform example
A minimal but realistic configuration that C3X can estimate.
resource "azurerm_resource_group" "main" {
name = "network-rg"
location = "eastus"
}
resource "azurerm_route_table" "egress" {
name = "egress-rt"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
route {
name = "to-firewall"
address_prefix = "0.0.0.0/0"
next_hop_type = "VirtualAppliance"
next_hop_in_ip_address = "10.0.0.4"
}
}Pricing dimensions
What you actually pay for when you provision azurerm_route_table.
| Dimension | Unit | What's being charged |
|---|---|---|
| Route table and routes | free | The route table, its user-defined routes, and subnet associations have no charge. $0 |
| Next-hop appliance or gateway | per hour + per GB (billed elsewhere) | An Azure Firewall, NVA, NAT Gateway, or VPN gateway a route points at is billed on its own meter. |
| Traffic forced across regions | per GB | Routes that send traffic through a hub or to another region create metered cross-region transfer. |
Optimization tips
Common ways to reduce azurerm_route_table cost without changing the workload.
Check what your default route points at
A 0.0.0.0/0 route to a firewall or NVA forces all egress through a paid appliance that bills hourly plus per-GB. Confirm that inspection is worth the processing cost for that traffic.
Use service endpoints to skip appliance hops
Routing PaaS traffic to Storage or SQL through a free service endpoint avoids sending it through a metered firewall or NAT Gateway.
Avoid unnecessary cross-region next hops
A route that hairpins traffic through a hub in another region adds per-GB cross-region transfer. Keep regional egress paths regional where possible.
FAQ
Does an Azure route table cost money?
No. Route tables, user-defined routes, and subnet associations are all free. Cost comes from the paid next hops the routes point at, like Azure Firewall, a NAT Gateway, or a VPN gateway.
Is there a charge per user-defined route?
No. There is no per-route charge. Subscription limits cap how many routes a table can hold, but there is no price attached to them.
Why does my route table drive cost?
Because it decides the traffic path. A route with a next hop of a firewall or gateway forces packets through a resource that bills hourly and per GB, so the free table anchors a real charge.
Related resources
Estimate this resource in your own Terraform
Free, open source, no API key. C3X parses your Terraform and shows line-item cost for every resource, including azurerm_route_table.