azurerm_public_ip cost estimation
Public IPv4 or IPv6 address. Standard SKU at $0.005/hour ($3.65/month). Basic SKU is deprecated and retiring. Per-IP charges apply whether the IP is attached or unattached.
An azurerm_public_ip is a public IP address that can be attached to VMs, load balancers, application gateways, NAT gateways, and other resources. Pricing depends on the SKU.
Basic SKU: Free when allocated dynamically and attached to a resource. Deprecated; retiring September 2025. Don't use for new deployments.
Standard SKU pricing: - $0.005/hour per IP ($3.65/month) - Charged regardless of attachment status - Charged whether dynamic or static allocation - Zone-redundant by default
Global Standard SKU: $0.01/hour for anycast IPs used with cross-region LBs and Front Door. Used in HA architectures spanning regions.
Reserved Public IPs (static allocation) cost the same as dynamic Standard. The 'reserved' label refers to the IP address not changing, not the billing model.
IPv6 addresses don't have separate billing — they're free, like IPv4 was historically. For IPv6-capable applications, dual-stack can serve some traffic without IPv4 costs.
Per Microsoft's announcements, retirement of Basic SKU means all dynamic public IPs will need to migrate to Standard, adding $3.65/month per IP that was previously free.
c3x estimates Public IPs based on the sku, allocation_method, and whether the IP is associated with a resource.
Terraform example
A minimal but realistic configuration that C3X can estimate.
resource "azurerm_public_ip" "vm" {
name = "vm-public-ip"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
allocation_method = "Static"
sku = "Standard"
zones = ["1", "2", "3"]
tags = {
Environment = "Production"
}
}Pricing dimensions
What you actually pay for when you provision azurerm_public_ip.
| Dimension | Unit | What's being charged |
|---|---|---|
| Standard IP hours | per hour | Hourly cost of a Standard SKU public IP. Charged whether attached or unattached. $0.005/hour ($3.65/month) |
| Global IP hours | per hour | Global Standard SKU for cross-region anycast IPs. $0.01/hour |
| Outbound data transfer | per GB | Egress data transfer through the public IP. Standard Azure egress rates apply. $0.087/GB (first 5 GB free) |
| IPv6 address | free | IPv6 addresses are free. No per-hour billing for IPv6. Free |
Optimization tips
Common ways to reduce azurerm_public_ip cost without changing the workload.
Release unused Public IPs
$3.65/month per released IPStandard IPs bill whether attached or not. After deleting VMs/LBs, ensure associated IPs are also deleted. A handful of forgotten IPs across subscriptions cost hundreds per month.
Use NAT Gateway for outbound from many VMs
Significant for fleetsInstead of attaching a public IP to each VM for outbound, route outbound through a NAT Gateway. One NAT Gateway with one IP can serve thousands of VMs. Cheaper than per-VM Public IPs at scale.
Audit and release on subscription deletion
VariableWhen subscriptions or resource groups are decommissioned, public IPs sometimes stick around in 'standalone' state. Use Azure Resource Graph to find orphan IPs across subscriptions.
Enable IPv6 dual-stack
IPv6 traffic doesn't bill per-address. For IPv6-capable clients, dual-stack deployments serve some traffic over IPv6 without per-IP charges (though data egress still bills).
FAQ
Is the Standard SKU really $3.65/month even if I don't use the IP?
Yes. Standard SKU bills $0.005/hour regardless of attachment status. Once you allocate the IP, it bills until you delete it. This is different from Basic SKU which only billed when attached.
Are IPv4 IPs more expensive in 2026?
All Public IPv4 addresses bill at the Standard SKU rate ($3.65/month) regardless of whether they're EIPs, auto-assigned, or attached to NAT/LB. AWS made a similar change in 2024 due to IPv4 scarcity. IPv6 remains free.
Do I save by using dynamic vs static allocation?
No. Both bill the same Standard SKU rate. The difference is whether the IP changes on reallocation. For DNS-bound services, use static. For ephemeral resources, dynamic.
What's the difference between Public IP and Public IP Prefix?
Public IP Prefix lets you reserve a contiguous block of IPs (e.g., a /28) at once. Useful for services requiring predictable IP ranges for firewall whitelisting. Prefixes bill per included IP at the standard rate.
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_public_ip.