Direct answer: using verifiable official prices retrieved on 8 November 2026 (AWS us-east-1 / Azure eastus / Google Cloud public prices, USD, pay-as-you-go, excluding tax and discounts), container image registry storage is broadly USD 0.10/GB-month: AWS ECR Standard 0.10/GB-month; Google Artifact Registry 0.10/GiB-month (0.5GiB free); Azure ACR adds a daily fee — Basic 0.1666/day (10GB included), Standard 0.6666/day (100GB), Premium 1.6666/day (500GB), with additional storage at 0.10/GB-month. At 100GB: AWS about USD 10/month, GCP about 9.31, Azure Basic about 14; at 1TB: AWS about 100, GCP about 93.13, Azure Premium about 100; at 10TB: AWS about 1,000, GCP about 931.32, Azure Premium about 1,000. At scale the three converge; the differences are mainly the daily fee/included quota, cross-region replication, scanning and egress.
This guide is for DevOps, platform engineering, FinOps and procurement teams comparing AWS ECR, Azure Container Registry (ACR) and Google Artifact Registry storage/TCO, with 100GB/1TB/10TB estimates and an optimisation checklist. Prices come from the AWS ECR pricing page, the Azure Container Registry pricing page and Azure Retail Prices API (serviceName=Container Registry, eastus) and the Google Artifact Registry pricing page (all accessed 8 November 2026). Official price facts, editorial calculations and excluded items are kept separate.
(1) A registry is not "just per GB": Azure ACR has a daily fee + included quota, while AWS/GCP are mainly per GB/GiB; at small volumes Azure's daily fee weighs more. (2) Storage is around 0.10 at all three; the real differences are cross-region replication, egress, scanning and build minutes. (3) Deleting untagged/old images usually saves more than switching vendors; fix retention and tag policy first.
Scope: storage, daily fee, included quota, replication and scanning
The billing structures differ: AWS ECR charges GB-month (Standard 0.10/GB-month; Archive is cheaper but has a 90-day minimum storage duration); Google Artifact Registry charges GiB-month (0.10/GiB-month, 0.5GiB free); Azure ACR charges a daily fee + included storage (Basic/Standard/Premium include 10/100/500GB; additional storage 0.10/GB-month), plus geo-replication, connected registry and task vCPU fees. This article converts 1TB = 1,000GB = 931.32GiB for GCP and multiplies Azure daily fees by 30 days.
| Billing item | AWS ECR | Azure ACR | Google Artifact Registry |
|---|---|---|---|
| Storage | Standard 0.10/GB-month | 0.10/GB-month (above included quota) | 0.10/GiB-month |
| Fixed/daily fee | None | Basic 0.1666/day; Standard 0.6666/day; Premium 1.6666/day | None |
| Included storage | 500MB private (new customers, 1 year); 50GB public free | 10/100/500GB | 0.5GiB free |
| Cross-region replication | Cross-region data transfer/replication fees | Premium 1.6666/day per replicated region | Multi-regional repository same price; cross-region traffic separate |
| Scanning/build | Inspector/CodeBuild separate | Defender/ACR Tasks separate | Scanning/Cloud Build separate |
| Egress | Standard data transfer rates | Standard networking charges | Based on destination/region |
Sources: AWS ECR pricing page, Azure Container Registry pricing page and Azure Retail Prices API (serviceName=Container Registry, eastus), Google Artifact Registry pricing page (accessed 8 November 2026). Rates are retail/pay-as-you-go and exclude tax, discounts, egress, scanning, build and support; the invoice governs.
TCO: 100GB / 1TB / 10TB
At 100GB, 1TB and 10TB: AWS is 0.10/GB-month; GCP is 0.10/GiB-month (1TB = 931.32GiB); Azure is daily fee x 30 plus 0.10/GB-month above the included quota, using the cheapest tier at each volume. The result: at 100GB, AWS 10, GCP 9.31, Azure Basic 14; at 1TB, AWS 100, GCP 93.13, Azure Premium 100; at 10TB, AWS 1,000, GCP 931.32, Azure Premium 1,000. Azure's Basic daily fee (about USD 5/month) makes 100GB more expensive than pure per-GB pricing; at 1TB/10TB, Premium's 500GB included quota plus 0.10/GB is essentially level with AWS.
| Storage | AWS ECR | Azure ACR (best tier) | Google Artifact Registry | Lower |
|---|---|---|---|---|
| 100GB | about 10.00 | about 14.00 (Basic) | about 9.31 | GCP |
| 1TB | about 100.00 | about 100.00 (Premium) | about 93.13 | GCP |
| 10TB | about 1,000.00 | about 1,000.00 (Premium) | about 931.32 | GCP |
Editorial calculation: AWS = GB x 0.10; GCP = GiB x 0.10 (1TB = 931.32GiB); Azure = daily fee x 30 + max(0, GB - included quota) x 0.10 (Basic 10GB/$5, Standard 100GB/$20, Premium 500GB/$50). Excludes egress, replication, scanning, build, tax and discounts; the invoice governs.
Azure tiers: how to choose the daily fee and included quota
Azure ACR's key is the "daily fee + included quota" combination: Basic is about USD 5/month with 10GB; Standard about USD 20/month with 100GB; Premium about USD 50/month with 500GB. At 100GB, Basic (5 + 90 x 0.1 = 14) is cheaper than Standard (20 includes 100GB); at 1TB, Premium (50 + 500 x 0.1 = 100) is level with AWS, while Standard is 20 + 900 x 0.1 = 110; at 10TB, Premium is 50 + 9,500 x 0.1 = 1,000. So: small volumes use Basic, medium volumes compare Standard/Premium, and large volumes benefit from Premium's included quota.
| Storage | Basic (10GB) | Standard (100GB) | Premium (500GB) |
|---|---|---|---|
| 100GB | about 14.00 | about 20.00 | about 50.00 |
| 1TB | about 104.00 | about 110.00 | about 100.00 |
| 10TB | about 1,004.00 | about 1,010.00 | about 1,000.00 |
Editorial calculation: daily fee x 30 + max(0, GB - included quota) x 0.10; Basic $0.1666/day, Standard $0.6666/day, Premium $1.6666/day; excludes replication, egress, scanning, build, tax and discounts. Tiers differ in features (geo-replication, connected registry, throughput), so price alone is not the decision.
Hidden costs: replication, egress, scanning, build and retention
A registry bill is rarely just storage. Cross-region replication/multi-regional repositories add replication and traffic fees; pulling images to another region or the internet incurs egress; vulnerability scanning, image signing and build tasks (ACR Tasks/CodeBuild/Cloud Build) are separate; untagged images, old tags and CI caches keep consuming storage. The most underestimated item is retention: several builds per day with every tag retained can turn 100GB into terabytes within months. Fix retention/cleanup before considering a vendor switch.
| Cost item | Trigger | Control |
|---|---|---|
| Cross-region replication | Multi-region deployment/DR | Replicate production images only; compare provider fees |
| Egress | Cross-region/internet pulls | Same-region pulls; CDN/cache; check egress rates |
| Scanning | Vulnerability/enhanced scanning | Enable per repository/image; distinguish free/paid |
| Build | ACR Tasks/CodeBuild/Cloud Build | Budget by vCPU/minute; local build/cache |
| Retention | Old tags, untagged images, CI cache | Retention policy, periodic cleanup |
| Support/tax | Enterprise support, cross-border purchasing | Tax-inclusive/support-inclusive basis |
Editorial synthesis; specific replication/egress/scanning/build rates follow AWS/Azure/GCP official pricing pages and invoices. Tax, discounts and migration costs are not included.
How to choose: by team size, regions, security and ecosystem
Start with four questions: total image volume, whether multi-region is required, whether image scanning/signing is required, and whether you are already tied to a Kubernetes/CI ecosystem. For small teams under 100GB, GCP/ECR's pure per-GB pricing is simpler; if you already use Azure/AKS, ACR Basic's daily fee is acceptable; for multi-region/HA, Premium geo-replication or GCP multi-regional repositories fit better; for strong security, compare ECR Inspector, ACR Defender and GAR scanning coverage/price; if egress/replication dominates, fix topology before switching vendors.
| Scenario | Prefer | Check first |
|---|---|---|
| Small team, up to 100GB | ECR/GAR (pure per GB) or ACR Basic | Daily fee, free quota |
| AKS/Azure ecosystem | ACR (Basic/Standard) | Included quota, Defender |
| Multi-region/DR | ACR Premium or GAR multi-regional | Replication, egress |
| Strong scanning/signing | ECR+Inspector / ACR+Defender / GAR scanning | Coverage and price |
| Large volume, cost first | GCP GiB pricing or ACR Premium | Unit, replication, egress |
Editorial selection framework, not a vendor recommendation; validate against ecosystem, compliance, security and actual invoices.
90-day optimisation checklist
Use the first 90 days to establish image volume, tag policy, retention, replication/egress and scanning/build. The order is: inventory, cleanup, retention policy, topology/replication, scanning/build, procurement.
| Phase | Action | Output |
|---|---|---|
| Weeks 1-2 | Inventory repositories, images, tags, untagged images and monthly storage | Image list, bill baseline |
| Weeks 2-3 | Delete untagged/expired images; consolidate duplicate tags | Cleanup record, savings estimate |
| Weeks 3-5 | Set retention policy and CI cache strategy | Retention rules, automation |
| Weeks 5-7 | Assess multi-region/replication and same-region pulls | Topology options, replication cost comparison |
| Weeks 6-8 | Check scanning/build cost and coverage | Scanning plan, build budget |
| Weeks 8-10 | Compare 1/3-year TCO and features across providers | Selection recommendation, renewal plan |
| Weeks 10-12 | Monitor storage/egress/replication alerts | Dashboard, alert rules |
Editorial optimisation advice, not an official template; retention, replication, scanning and compliance follow enterprise standards and vendor documentation.
FAQ
How is a container registry billed?
Usually per GB/GiB-month of storage, plus egress, cross-region replication, scanning and build. AWS ECR Standard is 0.10/GB-month; GCP Artifact Registry 0.10/GiB-month; Azure ACR has a daily fee (Basic 0.1666/day, Standard 0.6666/day, Premium 1.6666/day) + included quota (10/100/500GB) + 0.10/GB-month above it.
What does 100GB cost?
Under the assumptions here: AWS about USD 10/month; GCP about 9.31; Azure Basic about 14 (5 daily fee + 90GB overage). Actual cost varies with free quota, egress, scanning, tax and discounts.
Why does Azure have a daily fee?
ACR charges a daily registry fee and includes storage (Basic 10GB, Standard 100GB, Premium 500GB). At small volumes the daily fee can exceed pure per-GB pricing; at large volumes the included quota dilutes it.
Which is cheaper at 1TB?
Under the assumptions here: AWS about 100, Azure Premium about 100, GCP about 93.13. They are close; GCP is slightly lower because of GiB pricing. Real differences come more from replication, egress, scanning and build.
Are cross-region replication/pulls charged?
Usually yes. Azure Premium geo-replication is 1.6666/day per replicated region; AWS/GCP cross-region data transfer/replication is separate. Keep images in the same region as workloads and replicate only what is necessary.
Is vulnerability scanning charged?
It depends on the provider/feature: AWS ECR basic scanning vs Inspector enhanced scanning, Azure Defender for Containers, GCP Artifact Analysis/scanning all have different pricing. Check coverage (OS packages, language packages, continuous scanning) before comparing prices.
How much can image cleanup save?
It depends on build frequency and tag count. Several builds per day with all tags retained can turn 100GB into terabytes; retention policies, deleting untagged images and consolidating duplicate tags are usually the fastest savings.
How does self-hosted Harbor compare?
Harbor software is free, but you pay for servers, storage, backup, bandwidth, operations and HA; a managed registry's 0.10/GB usually buys managed operations, replication, scanning and ecosystem integration. With very large volumes and an existing Kubernetes/storage team, self-hosting may be cheaper; otherwise managed is simpler.
Research method and limitations
This article separates "official price facts" from "editorial calculations": AWS ECR Standard USD 0.10/GB-month comes from the AWS ECR pricing page; Azure ACR daily fees 0.1666/0.6666/1.6666, included 10/100/500GB and 0.10/GB-month overage come from the Azure Container Registry pricing page and Azure Retail Prices API (serviceName=Container Registry, eastus); GCP Artifact Registry 0.10/GiB-month and 0.5GiB free come from the Google Artifact Registry pricing page (accessed 8 November 2026). TCO, unit conversion and the 90-day list are editorial calculations/advice.
Eight limitations: (1) only public pay-as-you-go prices are used, excluding tax, enterprise/commit discounts and support; (2) egress, cross-region replication, scanning, build and connected registry are not included; (3) the scenario assumes 30 days/month and no free quota except where noted; (4) GCP bills in GiB and this article converts 1TB to 931.32GiB; (5) Azure tiers differ in features, so price alone is not the decision; (6) no pull-performance/availability testing was performed; (7) prices change and should be re-queried after publication; (8) self-hosted Harbor/third-party registries are not covered; this is not procurement, commercial or legal advice.
Sources and basis
- AWS, Amazon ECR pricing: aws.amazon.com/ecr/pricing/. ECR Standard USD 0.10/GB-month; Archive, replication, egress and scanning/build are separate. Accessed 8 November 2026.
- Microsoft, Azure Container Registry pricing: azure.microsoft.com/en-us/pricing/details/container-registry/. Basic/Standard/Premium daily fees, included 10/100/500GB, 0.10/GB-month overage, geo-replication. Accessed 8 November 2026.
- Microsoft, Azure Retail Prices API (serviceName=Container Registry, eastus): prices.azure.com/api/retail/prices. Basic 0.1666/day, Standard 0.6666/day, Premium 1.6666/day; Data Stored 0.10/GB-month. Accessed 8 November 2026.
- Google Cloud, Artifact Registry pricing: cloud.google.com/artifact-registry/pricing. 0.10/GiB-month, 0.5GiB free, transfer/scanning separate. Accessed 8 November 2026.
Data cut-off 8 November 2026; prices and specifications follow AWS/Azure/GCP official pages/APIs and the invoice; not procurement, commercial or legal advice.