AWS Elastic IP cost: every public IPv4 now costs money
Since February 2024, AWS charges about $0.005 per hour (roughly $3.60/month) for every public IPv4 address, whether attached or idle. Idle Elastic IPs and sprawling public IPs add up fast. Here is what changed and how to cut it.
Quick answer
Since February 2024, AWS charges about $0.005 per hour (roughly $3.60/month) for every public IPv4 address, attached or not. Previously only idle Elastic IPs were billed. So the levers are: release unused Elastic IPs, reduce the number of public IPs, and adopt IPv6 or private networking where you can.
Public IPv4 used to be effectively free while attached to a running instance, with only idle Elastic IPs billed. That changed in February 2024: AWS now charges for every public IPv4 address it allocates to you, whether it is in use or sitting idle. For fleets with many public IPs, this is a real new line.
What changed
The charge is about $0.005 per hour per public IPv4 address, roughly $3.60 a month each. It applies to Elastic IPs, auto-assigned public IPs on instances, and public IPs on managed services. An idle, unassociated Elastic IP is still billed, as before, but now so is one attached to a running instance.
Where it adds up
| Source | Note |
|---|---|
| Idle Elastic IPs | Release them; pure waste |
| Public IP per instance | Each is billed now |
| NAT gateway, load balancer IPs | Consolidate egress and ingress |
A fleet where every instance has a public IP now pays per instance for the privilege. Consolidating outbound through a NAT gateway and inbound through a load balancer reduces the count of directly public IPs.
Reducing IPv4 cost
Release Elastic IPs you are not using, put instances in private subnets and reach the internet through a NAT gateway rather than giving each a public IP, front services with a load balancer instead of public instance IPs, and adopt IPv6 where your architecture supports it, since IPv6 addresses are not charged the same way. The cheapest public IPv4 is the one you do not allocate.
FAQ
Does AWS charge for Elastic IPs now?
Yes. Since February 2024, AWS charges about $0.005 per hour (roughly $3.60 per month) for every public IPv4 address, including Elastic IPs attached to running instances. Previously only idle, unassociated Elastic IPs were billed.
How much does a public IPv4 address cost on AWS?
About $0.005 per hour, roughly $3.60 per month, per public IPv4 address. This applies to Elastic IPs, auto-assigned instance public IPs, and public IPs on managed services, whether the address is in use or idle.
How do I reduce AWS IPv4 cost?
Release unused Elastic IPs, put instances in private subnets and reach the internet through a NAT gateway instead of assigning each a public IP, front services with a load balancer, and adopt IPv6 where supported since it is not charged the same way.
Are idle Elastic IPs still charged?
Yes, and they always were. An unassociated Elastic IP is billed at the hourly rate, so releasing Elastic IPs you are not using is the simplest saving. The change in 2024 was that attached public IPs are now billed too.
Does IPv6 avoid the IPv4 charge?
Yes. The charge applies to public IPv4 addresses; IPv6 addresses are not billed the same way. Where your architecture and clients support IPv6, using it for public connectivity avoids the per-address IPv4 charge.
Does C3X estimate public IP cost?
C3X prices the aws_eip resource and the public IP configuration of instances and services from your Terraform, so the per-address IPv4 charge appears before deploy, including idle Elastic IPs you may have forgotten.
What to do next
Catch idle and sprawling public IPs before they bill. C3X reads your Terraform and prices your networking and the rest of your stack 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.