AWSAmazon VPCNetworking

aws_route_table cost estimation

A route table is free. It is a set of routing rules for a VPC, and AWS charges nothing for the table, its routes, or its associations. Cost lives in the targets those routes point at.

An aws_route_table holds the rules that decide where network traffic leaving a subnet goes: to a local VPC destination, an internet gateway, a NAT Gateway, a VPC peering connection, a transit gateway, or a VPC endpoint. Route tables, their individual routes, and their subnet associations are all free. There is no per-route or per-table charge.

The cost is entirely in what the routes send traffic toward. A route to a NAT Gateway funnels outbound traffic through a resource that bills hourly plus per-GB processing. A route to a peering connection or transit gateway can incur cross-AZ or inter-region data transfer. A route to an interface VPC endpoint points at a component with its own hourly and per-GB charge. The route table is just the map; the destinations are what appear on the bill.

This makes the route table a useful audit surface. If a private subnet's default route (0.0.0.0/0) points at a NAT Gateway, every byte of internet-bound traffic from that subnet carries NAT processing cost, which a targeted S3 or DynamoDB gateway endpoint route can bypass for free. c3x prices the NAT Gateways, endpoints, and gateways your routes reference, and treats the route table itself as free.

Terraform example

A minimal but realistic configuration that C3X can estimate.

resource "aws_route_table" "private" {
  vpc_id = aws_vpc.main.id

  route {
    cidr_block     = "0.0.0.0/0"
    nat_gateway_id = aws_nat_gateway.main.id
  }

  tags = {
    Name = "private"
  }
}

Pricing dimensions

What you actually pay for when you provision aws_route_table.

DimensionUnitWhat's being charged
Route table and routesfreeThe table, its routes, and subnet associations have no charge.
$0
NAT Gateway targetper hour + per GBA default route to a NAT Gateway sends outbound traffic through a paid component.
~$0.045/hour + $0.045/GB processed
Peering / endpoint targetsper GBRoutes to peering connections or interface endpoints can add cross-AZ, inter-region, or endpoint data-processing charges.
Cross-AZ: $0.01/GB each way

Optimization tips

Common ways to reduce aws_route_table cost without changing the workload.

Add gateway endpoint routes to bypass NAT

Removes NAT processing on S3/DynamoDB traffic

A route to a free S3 or DynamoDB gateway endpoint keeps that traffic off the NAT Gateway, removing the per-GB processing fee on it.

Audit default routes for expensive targets

A 0.0.0.0/0 route pointing at a NAT Gateway means every internet-bound byte is billed. Confirm the subnet actually needs outbound internet before keeping it.

Prefer same-region peering targets

Routes across inter-region peering carry inter-region transfer rates. Keep peered traffic in-region where the architecture allows.

FAQ

Does an AWS route table cost money?

No. Route tables, the routes inside them, and subnet associations are all free. You pay only for the paid targets the routes point at, such as NAT Gateways or interface endpoints.

Is there a charge per route or per association?

No. There is no per-route or per-association fee. There are account quotas on routes per table, but no price attached to them.

How can a route table increase my bill?

Only indirectly, through its targets. A default route to a NAT Gateway makes outbound traffic incur NAT processing, while a route to a free gateway endpoint would avoid it. The table is the map, not the 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 aws_route_table.