AWS costs: Glacier retrieval - the bill for wanting your data back

Logeshwaran.C

Retrieving data from Amazon S3 Glacier is not free, and what it costs depends almost entirely on how fast you want it back, not on how much data you have. Bulk retrieval is free but takes 5–12 hours. Standard retrieval runs about a cent a gigabyte plus a small per-request fee. Expedited retrieval, the option most people click in a panic, adds a $10-per-1,000-requests charge on top of $0.03 a gigabyte — which means the exact same 100 TB restore that costs $0 done as Bulk can run past $150,000 done as Expedited, on request fees alone.

⚡ Quick Answer

Retrieving data you're never in a hurry for → use Bulk retrieval — free for S3 Glacier Flexible Retrieval, 5–12 hours

Retrieving data you need today → use Standard retrieval — about $0.01/GB plus $0.05 per 1,000 requests, 3–5 hours

Genuine emergency, small amount of data → use Expedited retrieval — $0.03/GB plus $10 per 1,000 requests, 1–5 minutes

The number of separate files (requests) you restore usually costs more than the gigabytes. See the million-small-files trap below before you click Expedited.

Jake found this out the hard way. He runs a small phone repair and resale shop, and three years ago he moved every warranty document, repair invoice, and customer sign-off — about 40,000 individual PDF files — into Amazon S3 Glacier Flexible Retrieval to save on storage. It cost him almost nothing to store. Then a customer disputed a repair from 2023, his lawyer wanted the signed intake form and the diagnostic photos within the day, and Jake restored the whole folder using the fastest option in the console without reading past the word "Expedited."

‍♂️ Jake's Reality Check

"It's like, 40,000 files. That's not even that much data, right? Why would that cost me anything real?"

Because Amazon doesn't charge you for the data you asked for — it charges you for the act of asking, 40,000 separate times. Each restored object is its own request, and Expedited requests are billed at $10 per 1,000 of them. Jake's 40,000-file restore generated $400 in request fees alone before a single gigabyte was counted.

What an S3 Glacier retrieval actually costs

Amazon S3 has three archival storage classes, and the one people mean when they say "Glacier" today is usually S3 Glacier Flexible Retrieval — the successor to the original standalone Amazon Glacier service. Objects in S3 Glacier Flexible Retrieval and S3 Glacier Deep Archive are not available for immediate download. You have to call the RestoreObject API (or click Restore in the console) first, and that restore is billed on two separate dimensions: how much data you're pulling back, and how many individual objects you asked for.

A third class, S3 Glacier Instant Retrieval, skips the restore step entirely — objects come back with a plain GET request in milliseconds, the same as S3 Standard, because it's built for data you might need on short notice even though you rarely touch it. You pay for that convenience in the retrieval fee itself, not in a waiting period.

Here is what an actual worked restore looks like, using AWS's own published example: retrieving 15,000,000 objects totaling 100 TB (102,400 GB) from S3 Glacier Flexible Retrieval.

Retrieval tier Speed Rate Total for this example
Bulk 5–12 hours Free $0
Standard 3–5 hours $0.01/GB + $0.05/1,000 requests $1,024 + $750 = $1,774
Expedited 1–5 minutes $0.03/GB + $10/1,000 requests $3,072 + $150,000 = $153,072

Look at where the money actually goes. Between Bulk and Standard, the per-gigabyte charge is the whole story — $1,024 for 100 TB is nothing dramatic. But Expedited's request fee is what turns a $3,072 data charge into a $153,072 bill. The per-object price on Expedited is 200 times higher than Standard's. If you're restoring a small number of very large files, that difference barely registers. If you're restoring millions of small files — log lines, thumbnails, individual customer records — it's the entire bill.

✅ Why Bulk is the default worth defending

Bulk retrieval on S3 Glacier Flexible Retrieval costs nothing beyond the wait — no per-GB charge, no per-request charge. If your 5–12 hour window is survivable, it's the only tier that doesn't turn object count into a line item. Reach for Standard or Expedited only when the wait itself is the problem, not the money.

Why your bill exploded — the charges nobody mentions

A lot of "why is my Glacier bill so high" complaints aren't about the retrieval tier at all. They're about charges that happen automatically, whether or not you noticed them coming.

You're paying for two copies of the data, not one

When you restore an archived object, Amazon S3 doesn't move it — it makes a temporary copy, accessible with a normal GET request using the same object key, and leaves the original archived copy exactly where it was. You are billed for both: the archive itself, still charged at the S3 Glacier Flexible Retrieval or S3 Glacier Deep Archive storage rate, and the temporary copy, charged at the S3 Standard storage rate for however many days you told it to stick around. If you set a 30-day restoration window "just in case" and forget about it, you're paying S3 Standard rates on a full second copy of that data for 30 days, on top of the archive rate you were already paying.

Small objects carry metadata overhead you never uploaded

Every object archived to S3 Glacier Flexible Retrieval or S3 Glacier Deep Archive carries an additional 40 KB of metadata — 8 KB billed at S3 Standard rates and 32 KB billed at the archive class's own rate. That's how AWS lets you get a real-time list of everything in your account without pulling archives back. For a 500 MB video file, 40 KB is nothing. For a bucket holding ten million 5 KB thumbnails, that overhead alone can outweigh the actual data you're storing.

You deleted early and triggered the minimum duration charge

Objects archived to S3 Glacier Instant Retrieval and S3 Glacier Flexible Retrieval carry a 90-day minimum storage duration. S3 Glacier Deep Archive carries a 180-day minimum. Delete, overwrite, or transition an object to a different storage class before that window closes, and you're billed the normal storage charge plus a pro-rated charge for the remaining days of the minimum — as if you'd left it there the whole time.

⚠️ What this actually breaks

A lifecycle rule that automatically ages data into S3 Glacier Deep Archive and then deletes it 90 days later will quietly bill you for the full 180-day minimum every single time, because it never reaches day 180 before the delete fires. Check your lifecycle policy's timeline against the minimum duration for the class you're moving into, not just the class you're moving out of.

Downloading the restored copy is a separate charge again

Restoring an object gets it into a downloadable state. Actually downloading it out of AWS — to your laptop, to a customer, to another cloud — is billed as standard S3 data transfer out to the internet, on top of everything above. The first 100 GB a month is typically free, aggregated across your account's usage of several AWS services, but past that it's billed per gigabyte on its own tiered schedule. A restore that looked cheap on the S3 bill can still generate a real data-transfer line if what you're actually doing is shipping the data somewhere else.

Bulk vs. Standard vs. Expedited: picking the right one

Standard retrieval is the default AWS applies if you don't explicitly specify a tier — which means the first time most people restore anything, they're already paying the mid-tier price without meaning to.

  1. Decide how badly you actually need it right now. A legal deadline today is different from "I'd like to have it eventually." Be honest here — most restores aren't emergencies, they just feel urgent because you didn't plan the retrieval in advance.
  2. Count roughly how many objects you're restoring, not just the total size. Ten files at 50 GB each behave completely differently, cost-wise, from 500,000 files at 1 MB each. If your object count runs into the tens of thousands or more, Expedited's per-request fee dominates the math.
  3. Choose Bulk if the 5–12 hour window (48 hours for Deep Archive) works. It's free on S3 Glacier Flexible Retrieval and the cheapest option on Deep Archive regardless of the current per-GB rate.
  4. Choose Standard if you need it the same business day but not the same hour. The $0.05-per-1,000-requests fee is small enough that even large object counts stay reasonable.
  5. Reserve Expedited for small, genuinely urgent restores — a handful of files, not a folder of thousands, and only from S3 Glacier Flexible Retrieval, since Deep Archive doesn't offer it at all.

 What changed between versions

  • Before: the original standalone Amazon Glacier service used its own vault-based API, separate from S3, with its own pricing structure.
  • Now: Amazon Glacier (the legacy vault service) stopped accepting new customers as of December 15, 2025. Existing data in it remains accessible indefinitely, but AWS is directing all new archival storage to the S3 Glacier storage classes covered in this article.
  • What that means for you: if you set up "Amazon Glacier" years ago and it still uses vault and archive IDs rather than S3 bucket and object keys, you're on the legacy service. It still works, but AWS's own migration guidance points toward moving that data into S3 Glacier storage classes going forward.

The million-small-files trap

This is the single most common way a Glacier bill goes from "fine" to "why is this four figures." Every restored object is billed as a separate request, regardless of its size. A 2 TB video archived as one file and a 2 TB archive of two million tiny sensor readings cost wildly different amounts to restore, even though they're the same number of gigabytes.

I asked Ethan, who's been doing backend and infrastructure work for over a decade and has strong opinions about exactly this, why this catches people so often.

"People price out storage by the gigabyte because that's the number on the sticker," Ethan said. "Then they build a system that archives a million tiny JSON files instead of a handful of large ones, and the sticker price stops meaning anything. Object count is the hidden variable in every Glacier bill I've ever seen blow up. If you're archiving anything you generated programmatically — logs, events, individual records — batch it into fewer, larger files before it goes to Glacier. Don't archive it the way your application happened to write it."

Jake's situation is the same shape at a much smaller scale. Forty thousand individual PDFs is a rounding error next to the terabyte examples enterprises deal with, but the request-fee math scales the same way at any size, because the per-request price doesn't care how big your business is.

The practical fix, when you control how the data gets archived in the first place, is consolidation: zip or tar a folder of related small files into one archive object before it goes to S3 Glacier, rather than archiving each file individually. One request to restore a 500 MB zip costs the same request fee as one request to restore a 500 KB file. If you don't control the upload process — the files are already sitting there as thousands of individual objects — your remaining lever is the retrieval tier itself: Bulk turns the request-count problem into a non-issue, because Bulk requests aren't billed per-object at all on S3 Glacier Flexible Retrieval.

Choosing the right Glacier storage class before you archive anything

The retrieval bill you get is a direct consequence of the storage class you chose months or years earlier. Getting this decision right up front avoids most of the surprises above.

Storage class Access speed Minimum duration Best for
S3 Glacier Instant Retrieval Milliseconds, no restore needed 90 days Data touched roughly once a quarter that must come back instantly — medical images, media assets
S3 Glacier Flexible Retrieval Minutes to 12 hours, restore required 90 days Backups and disaster recovery data where free Bulk retrieval covers most needs
S3 Glacier Deep Archive 9 to 48 hours, restore required, no Expedited option 180 days Compliance archives and data you expect to touch less than once a year

S3 Glacier Deep Archive is the cheapest storage in the lineup — published at $0.00099 per GB-month, roughly $1 per terabyte per month — but that low sticker price is exactly why people put data there that they later need faster than the class allows. There is no Expedited option on Deep Archive at all. If there's any realistic chance you'll need same-day access, Flexible Retrieval's free Bulk tier and available Expedited tier make it the safer default, even though it costs more to store.

⚠️ What this actually breaks

Amazon publishes exact current per-GB retrieval rates for S3 Glacier Deep Archive on the S3 pricing page, and those numbers can and do move over time and by region. Don't budget a Deep Archive restore off a number you saw on a blog post, including this one — check the current published rate on aws.amazon.com/s3/pricing before you commit to a restore of any real size.

How to restore data without a surprise bill

The console makes this easy to click through without seeing the cost until the bill arrives. Slowing down for two extra minutes avoids most of the damage.

  1. Open the S3 console and find the object or folder. Navigate to the bucket, select the archived object (or objects — you can select multiple), and choose Restore from the actions menu.
  2. Read the retrieval tier options before selecting one. The console will show Expedited, Standard, and Bulk with their expected timeframes. It does not show you a dollar estimate — that's on you to work out from the current pricing page and your object count.
  3. Set the number of days the temporary copy stays available deliberately, not by default. This is a separate field from the retrieval tier. A shorter window means less time paying S3 Standard rates on the duplicate copy. Set it to how long you actually need access, not the maximum allowed.
  4. For a large number of objects, use S3 Batch Operations instead of restoring one at a time. Batch Operations lets you submit a restore job against a manifest of objects in one request, and Standard-tier restores submitted this way typically start within minutes rather than needing individual triggering.
  5. Confirm and wait for the retrieval to complete before downloading. You'll see the object's restoration status change once the temporary copy is ready; downloading before it completes will simply fail.

If you're comfortable with the AWS CLI, the same restore is a single aws s3api restore-object call where you specify the bucket, key, number of restoration days, and the glacier job parameters — including the retrieval tier. Scripting the restore is worth it once you're doing this more than once, because it forces you to state the tier explicitly instead of leaving it to default to Standard.

What happens if you delete or move data early

Deleting an object stored in S3 Glacier Flexible Retrieval before its 90-day minimum, or in S3 Glacier Deep Archive before its 180-day minimum, doesn't waive the remaining storage charge. AWS bills you the normal storage rate plus a pro-rated charge covering the days you didn't stay. The same applies if you transition the object to a different storage class early, or overwrite it with a new upload under the same key.

This trips people up most often with lifecycle rules that were configured with good intentions but bad timing — for instance, a rule that moves logs into Deep Archive after 30 days and then deletes them entirely after 90. The delete fires at day 90, which is 90 days short of the 180-day minimum, and every one of those deletions bills the remaining balance. If a lifecycle policy is going to delete data eventually, make sure the deletion date sits past the minimum duration for whatever class the data is sitting in at the time.

Restoring a lot of data at once

Restoring tens of millions of objects, or hundreds of terabytes, runs into throughput limits that have nothing to do with the price tier you chose. AWS applies a retrieval-request quota of 1,000 transactions per second per account for S3 Glacier restore requests; exceed it and otherwise-valid requests get throttled, returning a ThrottlingException. Once requests are accepted, S3 Glacier supports restoring large datasets at a throughput of up to 1–2 petabytes per day per account, and individual objects larger than 5 TB take longer than the standard timeframes regardless of tier — AWS's own documentation gives the example of a 50 TB S3 Glacier Flexible Retrieval object potentially taking up to 48 hours even though the class's typical Bulk window is 5–12 hours.

S3 Batch Operations exists specifically to work around the request-rate ceiling: it lets you submit a restore job against a manifest of objects as a single managed operation, fully using the available restore rate rather than triggering objects one API call at a time from a script. If you're restoring anything beyond a few thousand objects, Batch Operations is worth the setup time.

Most cost-saving articles on this topic say the same thing: always use Bulk retrieval, it's free. That advice is right for backups and cold archives, and wrong for anything time-sensitive. Bulk on S3 Glacier Flexible Retrieval takes 5–12 hours; on S3 Glacier Deep Archive it's typically within 48 hours. If a customer, an auditor, or a legal deadline needs that data today, "it's free" is not a useful answer — you'll pay for Standard or Expedited anyway, just later and under more pressure, after the free option has already failed to meet your timeline.

The honest framing is that Bulk is the right default when you can plan the restore in advance, and the wrong default when the restore is a reaction to something that already happened. Build in a buffer: if you know a data request is coming, submit the Bulk restore the moment you know, not the moment you need the file.

Checking the cost before you commit to a restore

The AWS Pricing Calculator lets you model a restore — storage class, object count, total size, and retrieval tier — and get an estimate before you touch the console. It won't stop you from clicking Restore with the wrong tier selected, but it will tell you, in advance, whether you're looking at a $2 line item or a $150,000 one. Given how far apart Bulk and Expedited land on the same dataset, running the numbers first costs nothing and takes less time than most people spend picking a font for the invoice.

You can also set an account-level data retrieval policy that caps free-tier or Bulk-only retrievals, preventing anyone on a team from accidentally kicking off an expensive Expedited restore. It's a blunt instrument — it will also block a legitimate emergency restore if you're not careful with the configuration — but for teams where the retrieval tier keeps getting picked wrong by habit, it closes the door entirely rather than relying on everyone reading the pricing page first.

✅ Why this is the one habit worth building

Before restoring anything beyond a handful of files, count the objects, not just the gigabytes. That single number tells you more about the coming bill than anything else on this page.

What we can't tell you

We can't give you an exact dollar figure for your specific restore, because pricing varies by AWS Region, and the published per-GB rates move over time. Anyone quoting you a single universal number for "what Glacier retrieval costs" without asking your region and object count is guessing. Run your own numbers through the AWS Pricing Calculator against the current published rates for your region before committing to anything beyond a small test restore.

We also can't tell you whether the legacy Amazon Glacier vault service's 10 GB-per-month free retrieval allowance still applies the same way to the modern S3 Glacier storage classes covered in this article — that free-tier figure comes from AWS's own documentation about the older, vault-based Glacier service specifically. If your setup still uses vault and archive IDs rather than S3 buckets and object keys, you're on that legacy service, and the free tier described there is the one to check against your account, not a general S3 Glacier allowance.

Frequently asked questions

Is retrieving data from S3 Glacier really free if I choose Bulk?

For S3 Glacier Flexible Retrieval, yes — Bulk retrievals and requests are free of charge on that class. For S3 Glacier Deep Archive, Bulk is still the cheapest of the available tiers, but it isn't free; check the current published per-GB rate on the S3 pricing page before restoring a large amount.

Why did my Glacier bill include a "temporary copy" storage charge?

Restoring an archived object creates a separate, temporary copy accessible with a normal GET request, charged at S3 Standard storage rates for however many days you specified. You're billed for that copy in addition to the original archived object, for the whole window you set, even if you only needed the data for an hour.

What's the cheapest way to get a large amount of data out of Glacier?

Bulk retrieval from S3 Glacier Flexible Retrieval, submitted with enough lead time to tolerate the 5–12 hour window, and consolidated into as few objects as possible before restoring, since request count drives cost as much as data volume does on the faster tiers.

Can I cancel a Glacier retrieval once I've started it?

Once a restore job is initiated, it generally runs to completion; there isn't a straightforward way to stop it mid-flight and avoid the charge. This is another reason to confirm the tier and object count before submitting rather than after.

Why do I owe money for data I deleted months ago?

If you deleted the object before its minimum storage duration was up — 90 days for S3 Glacier Flexible Retrieval, 180 days for S3 Glacier Deep Archive — AWS charges a pro-rated amount for the remaining days of that minimum, as though the object had stayed.

Does S3 Glacier Instant Retrieval charge a retrieval fee too?

Yes. Unlike Flexible Retrieval and Deep Archive, there's no restore job or waiting period, but a GET request against S3 Glacier Instant Retrieval data does carry a per-GB retrieval charge — you're paying for the instant access rather than for the wait.

What happens if I download the restored copy but never move it back to Standard?

The temporary restored copy simply expires and is removed once the number of days you specified runs out; you don't need to manually delete it. If you need continued fast access, you'd need to either keep re-restoring it or actively change the object's storage class before the temporary copy expires.

Is there a free tier for Glacier retrievals?

The legacy, standalone Amazon Glacier vault service offers a documented 10 GB-per-month free allowance for Standard-speed retrievals. That figure is specific to that older, vault-based service; if you're using the current S3 Glacier storage classes through an S3 bucket, check the current S3 Glacier pricing and Free Tier terms for what applies to your account.

Can I avoid the per-request fee by combining files into one archive?

Yes. If you control how data is written into Glacier, bundling many small files into fewer larger archive objects (a zip or tar file, for instance) before uploading means fewer objects to restore later, and fewer objects means fewer billed requests on Standard or Expedited retrievals.

Why is Expedited retrieval so much more expensive than Standard?

You're paying for guaranteed near-immediate access to infrastructure that is otherwise optimized to sit cold. In AWS's own published example, Expedited's per-request fee is 200 times Standard's per-request fee, which is why the gap between the two tiers grows enormous once you're restoring anything beyond a small number of objects.

What's the difference between S3 Glacier and the "Amazon Glacier" service I set up years ago?

Amazon Glacier, the original standalone service using vaults and its own API, stopped accepting new customers on December 15, 2025. Existing data in it stays accessible indefinitely, but it's a separate system from the S3 Glacier storage classes (S3 Glacier Instant Retrieval, Flexible Retrieval, and Deep Archive) covered throughout this article, which live inside regular S3 buckets and use S3 APIs.

How long can I keep the restored copy available before it goes back to being archived?

You choose the number of days when you initiate the restore. There's no fixed limit stated for how long you can set it — but every extra day is another day of S3 Standard storage charges on the temporary copy, so set it to what you actually need rather than padding it.

Does S3 Glacier Deep Archive support Expedited retrieval?

No. Deep Archive offers Standard and Bulk retrieval only. If there's any chance you'll need an object back within minutes, it shouldn't be archived to Deep Archive in the first place — use S3 Glacier Flexible Retrieval or S3 Glacier Instant Retrieval instead.

Will restoring data trigger a data transfer charge too?

The restore itself doesn't include a data-transfer charge, but downloading the restored copy out of AWS to the internet does, billed at standard S3 data transfer rates once you're past the free monthly allowance. If your goal is to move the data somewhere else entirely, budget for both the restore and the transfer out.

How do I estimate what a retrieval is going to cost before I run it?

Use the AWS Pricing Calculator with your Region, total data volume, object count, and intended retrieval tier. It won't account for every edge case, but it will catch the difference between a few-dollar restore and a five- or six-figure one before you click confirm.

What's the fastest way I can get one file back in an emergency without breaking the bank?

A single Expedited retrieval of one object is a small, bounded cost — the danger is Expedited applied to thousands of objects at once, not to one. If it's genuinely one file you need in minutes, Expedited on S3 Glacier Flexible Retrieval does exactly that at a manageable price; the problem only appears at scale.

Also Read:

AWS costs: The NAT gateway bill - the $32/month nobody planned

 AWS costs: Data transfer pricing - the map of what is free and what is not

 AWS costs: CloudWatch Logs ingestion - the log bill that outgrew the app

 AWS costs: Cross-AZ traffic - the invisible cent per gigabyte

 AWS costs: Unattached Elastic IPs and idle load balancers - the standing waste list

AWS costs: S3 request pricing - when storage is cheap but touching it is not

AWS costs: S3 storage classes decided honestly - IA, Glacier, Intelligent-Tiering

AWS costs: Glacier retrieval - the bill for wanting your data back

Revision note. Written September 2026, covering S3 Glacier Instant Retrieval, S3 Glacier Flexible Retrieval, and S3 Glacier Deep Archive as of the current published AWS documentation, including the December 15, 2025 closure of the legacy Amazon Glacier vault service to new customers. Retrieval pricing changes periodically and varies by AWS Region, so recheck the official S3 pricing page before budgeting a large restore. If a surprise bill already landed on your desk, take a breath — you're not the first person this has happened to, and nothing here is unfixable.

Related