Public IPv4 address cost: the charge AWS added to every address
AWS now charges about $0.005 per hour for every public IPv4 address, in use or idle, adding roughly $3.65 per month per address. For fleets with hundreds of public IPs the total is real. Here is how the charge works and how to cut it.
Quick answer
AWS charges about $0.005 per hour for every public IPv4 address you have, whether it is attached and in use or sitting idle. That is roughly $3.65 per month per address. The charge applies to Elastic IPs, public IPs auto-assigned to instances, and public IPv4 addresses on load balancers, NAT Gateways, and other services. For a large fleet with hundreds of public IPv4 addresses, the total reaches hundreds or thousands of dollars a month. The fix: reduce how many public IPv4 addresses you use through IPv6, private subnets, shared load balancers, and consolidated NAT, and release idle addresses.
AWS used to give you public IPv4 addresses attached to running resources for free, charging only for idle Elastic IPs. That changed: now every public IPv4 address carries an hourly charge whether in use or not. For a single instance it is trivial, but across a large environment with hundreds of public addresses, the charge is a genuine line item that rewards reducing your public IPv4 footprint.
How the charge works
| Address type | Charged? |
|---|---|
| Public IPv4 in use | ~$0.005/hr (~$3.65/mo) |
| Idle Elastic IP | ~$0.005/hr (~$3.65/mo) |
| Private IPv4 | Free |
| IPv6 address | Not subject to this charge |
The charge is about $0.005 per hour, roughly $3.65 per month, for each public IPv4 address, regardless of whether it is attached to a running resource. It applies to Elastic IPs, auto-assigned public IPs on instances, and public IPv4 addresses fronting load balancers, NAT Gateways, and similar services. Private IPv4 addresses and IPv6 addresses are not subject to this per-address charge.
Where it adds up
One address at $3.65 a month is nothing. But consider an environment with 200 instances each holding a public IPv4 address: that is 200 times $3.65, about $730 a month, purely for addressing. Add public IPs on load balancers, NAT Gateways across availability zones, and a pile of Elastic IPs allocated over the years, and a large organization can be paying thousands a month for IPv4 addresses alone. Because the charge is small per address, it hides in the aggregate rather than jumping out on any single resource.
Reducing your IPv4 footprint
The most direct fix is to use fewer public IPv4 addresses. Put instances in private subnets that reach the internet through a shared NAT Gateway rather than each holding a public IP, so hundreds of instances share a handful of public addresses instead of one each. Front services with a shared load balancer rather than giving each instance a public IP. Adopt IPv6 where your stack supports it, since IPv6 addresses avoid the charge entirely. And release Elastic IPs you allocated but no longer need, a classic source of idle waste covered in the Elastic IP cost guide.
Auditing existing addresses
Inventory your public IPv4 addresses and ask which truly need to be public. Many instances given public IPs by default never need inbound internet access and can move to private subnets. Idle Elastic IPs left from decommissioned resources bill $3.65 each for nothing and should be released. This is a straightforward cleanup among the cloud waste categories, and one of thecharges that grew with the pricing change.
Because the total depends on how many public IPv4 addresses your architecture uses, it is best minimized at design time. Price your networking against the resource catalog so the per-address charge is counted and the public IPv4 footprint is deliberate before you deploy hundreds of them.
FAQ
How much does a public IPv4 address cost on AWS?
About $0.005 per hour, roughly $3.65 per month, for every public IPv4 address whether it is attached and in use or sitting idle. The charge applies to Elastic IPs, auto-assigned public IPs on instances, and public IPv4 addresses on load balancers, NAT Gateways, and other services. Private IPv4 and IPv6 addresses are not subject to this per-address charge.
Does AWS charge for public IPv4 addresses in use?
Yes. AWS used to give public IPv4 addresses attached to running resources for free and charge only for idle Elastic IPs, but now every public IPv4 address carries the roughly $0.005 per hour charge whether in use or idle. So an instance with an attached public IP is billed for it the same as an unused Elastic IP, about $3.65 a month either way.
How do I reduce public IPv4 address cost?
Use fewer public addresses. Put instances in private subnets reaching the internet through a shared NAT Gateway so hundreds share a few public IPs rather than one each, front services with a shared load balancer instead of per-instance public IPs, adopt IPv6 where supported since it avoids the charge, and release idle Elastic IPs left from decommissioned resources. Auditing which resources truly need to be public is the first step.
Does IPv6 avoid the IPv4 address charge?
Yes, IPv6 addresses are not subject to the per-address IPv4 charge. Adopting IPv6 where your stack and dependencies support it removes the charge for those addresses. Many architectures still need some IPv4 for compatibility, but shifting internet-facing traffic to IPv6 and dual-stack designs reduces the count of billable public IPv4 addresses and therefore the aggregate cost.
Why is the public IPv4 charge easy to miss?
Because it is small per address, about $3.65 a month, so it never jumps out on any single resource. It hides in the aggregate: an environment with 200 instances each holding a public IP pays about $730 a month, and adding load balancer IPs, NAT Gateway IPs, and old Elastic IPs pushes a large organization into thousands a month for addressing alone, all in tiny increments.
How does C3X help with public IPv4 cost?
C3X prices your networking from Terraform before you deploy, so the per-address public IPv4 charges are visible in the pull request when a design assigns public IPs to many resources. That helps you see the aggregate addressing cost at design time and choose private subnets with shared NAT, shared load balancers, or IPv6 to reduce the public IPv4 footprint before hundreds of addresses land on the bill.
What to do next
Price your public IPv4 footprint 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.