NAT Gateway vs NAT instance cost: when a self-managed box wins
A NAT Gateway costs about $0.045 per hour plus $0.045 per GB processed, while a NAT instance is just an EC2 box with no per-GB processing fee. For low traffic the instance can be far cheaper, but it trades money for operational risk. Here is the math.
Quick answer
A managed NAT Gateway bills about $0.045 per hour (roughly $32.85 per month) plus $0.045 per GB of data processed, so the per-GB fee dominates on busy subnets. A NAT instance is just an EC2 instance you run yourself: a t3.nano at about $0.0052 per hour (roughly $3.80 per month) with no per-GB processing charge, only normal data transfer. For low, steady egress a NAT instance can cost a fraction of a NAT Gateway, but you own patching, failover, and throughput limits. The rule of thumb: NAT instances win on price at low traffic, NAT Gateway wins on reliability and scale, and most production teams accept the gateway fee for the managed reliability.
The NAT Gateway is one of the most common sources of a surprise AWS networking bill, because it charges twice: an hourly fee for existing and a per-GB fee for every byte it processes. The older NAT instance, a plain EC2 box configured to forward traffic, has no per-GB processing fee at all. That difference makes the NAT instance genuinely cheaper for some workloads, so it is worth knowing exactly when the trade pays off.
How each one bills
| Factor | NAT Gateway | NAT instance |
|---|---|---|
| Hourly fee | ~$0.045/hr (~$32.85/mo) | EC2 rate, e.g. t3.nano ~$3.80/mo |
| Per-GB processing | $0.045/GB | None (normal data transfer only) |
| Management | Fully managed, auto-scaling | You patch, size, and handle failover |
| Throughput | Up to ~100 Gbps, scales automatically | Limited by instance size and network |
A managed NAT Gateway costs about $0.045 per hour, roughly $32.85 a month before any traffic, then adds $0.045 for every GB it processes. A NAT instance is billed only as the EC2 instance it runs on, plus standard data transfer, with no separate processing fee. That per-GB gap is the whole story.
The break-even math
Consider a subnet pushing 500 GB of egress a month. The NAT Gateway costs about $32.85 for hours plus $22.50 for processing, roughly $55 before the data transfer both options share. A t3.nano NAT instance costs about $3.80 for the instance and zero processing, roughly a tenth of the price for the same traffic. At 2 TB a month the gateway processing fee alone is about $90, while the instance still processes it for free (though a nano may not keep up, pushing you to a t3.small at about $15 a month). The higher your data volume, the larger the gateway's processing fee looms, so the instance's advantage grows with traffic even as it needs a bigger box.
What the NAT instance costs you elsewhere
The savings are real, but so are the responsibilities. A NAT instance is a single point of failure unless you build your own high-availability setup, it caps throughput at whatever the instance and its network can push, and you own the operating system patches and monitoring. A NAT Gateway handles all of that automatically and scales to about 100 Gbps without intervention. For production traffic that must not drop, many teams pay the gateway fee precisely to avoid becoming the on-call for their own NAT box.
When each choice makes sense
Use a NAT instance for development and test subnets, low-traffic workloads, and cost-sensitive environments where a brief outage is tolerable and someone can maintain it. Use a NAT Gateway for production, high-throughput, or anything where reliability matters more than the monthly fee. Better still, cut NAT traffic entirely withVPC endpoints so traffic to S3, DynamoDB, and other AWS services never touches NAT at all, which often beats both options. And consolidate NAT paths rather than running one per subnet, as covered inhow many NAT gateways you need.
The NAT Gateway processing fee is one of the classicunexpected charges, so whichever path you pick, estimate the egress volume first. Price your NAT design against theresource catalog so the hourly and per-GB fees are visible before the subnet ships, not discovered on the invoice.
FAQ
Is a NAT instance cheaper than a NAT Gateway?
Often yes, especially at low to moderate traffic. A NAT Gateway costs about $0.045 per hour plus $0.045 per GB processed, while a NAT instance is just an EC2 box (a t3.nano at about $3.80 a month) with no per-GB processing fee. For a 500 GB subnet the gateway costs roughly $55 and the instance roughly $4. But the instance trades that saving for operational work, failover risk, and throughput limits.
Why is the NAT Gateway so expensive?
Because it charges both an hourly fee (about $32.85 a month) and a per-GB data processing fee of $0.045 for every byte it handles. On busy subnets the processing fee dwarfs the hourly cost: 2 TB a month adds about $90 in processing alone. That per-GB charge, which a NAT instance does not have, is what makes the gateway a frequent surprise on AWS networking bills.
What are the downsides of a NAT instance?
It is a single point of failure unless you build your own high-availability setup, its throughput is capped by the instance size and network rather than scaling automatically, and you own the operating system patching, monitoring, and on-call. A NAT Gateway handles all of that and scales to about 100 Gbps unattended. The instance saves money but adds operational risk that production workloads may not tolerate.
When should I use a NAT Gateway instead of an instance?
For production, high-throughput, or any workload where reliability matters more than the monthly fee. The managed gateway auto-scales, handles failover within an availability zone, and needs no patching. Use a NAT instance for development, test, and low-traffic cost-sensitive subnets where a brief outage is acceptable and someone can maintain the box.
How do I avoid NAT costs entirely?
Add VPC endpoints so traffic to AWS services like S3 and DynamoDB (gateway endpoints, which are free) and interface-endpoint services bypasses NAT completely. This removes both the processing fee and much of the data transfer for that traffic, often beating both NAT Gateway and NAT instance. Consolidating NAT paths rather than running one per subnet also reduces cost.
How does C3X help with NAT cost?
C3X prices your NAT Gateways, NAT instances, and VPC endpoints from Terraform before you deploy, so the hourly and per-GB fees are visible in the pull request. That lets you compare a managed gateway against a NAT instance for your expected egress, and see where a VPC endpoint would remove the NAT traffic entirely, at design time rather than on the monthly bill.
What to do next
Compare NAT Gateway and NAT instance cost before you deploy. C3X reads your Terraform and prices your resources against a live catalog. Start with the quickstart.
Share this post
Try C3X on your own Terraform
Free and open source. No API key required. One command to install, one command to estimate.