Home › Decoder › TimedStorage-ByteHrs: the S3 Standard storage line
TimedStorage-ByteHrs: the S3 Standard storage line
TimedStorage-ByteHrs is the monthly charge for data kept in S3 Standard, $0.023 per GB-month for the first 50 TB in US East (N. Virginia); data left there that is rarely read can sit in cheaper classes such as Standard-IA at $0.0125.
In your bill the usage type reads: TimedStorage-ByteHrs, USE1-TimedStorage-ByteHrs
What it costs
| Charge | Price | Unit |
|---|---|---|
| S3 Standard, first 50 TB | $0.023 | per GB-month |
| S3 Standard, next 450 TB | $0.022 | per GB-month |
| S3 Standard-Infrequent Access (TimedStorage-SIA-ByteHrs) | $0.0125 | per GB-month |
| Standard-IA retrieval (Retrieval-SIA) | $0.01 | per GB |
US East (N. Virginia); other regions differ. Checked 2026-11-04. Sources: AWS S3 pricing, AWS price list file, S3, us-east-1.
Example with made-up numbers
30 TB (30,720 GB) in Standard: 30,720 x $0.023 = $706.56 per month
Suppose 20,000 GB of it has not been read for a year. In Standard-IA: 20,000 x $0.0125 = $250.00, against 20,000 x $0.023 = $460.00 in Standard, a saving of $210.00 per month
Reading 500 GB of that back in a month costs 500 x $0.01 = $5.00 in retrieval
Typical causes
Logs, exports and backups that never expire
Buckets that receive daily dumps with no lifecycle rule grow forever and bill every month for every byte.
Old object versions
With versioning on, every overwrite keeps the old version as billable storage until a lifecycle rule expires non-current versions.
Incomplete multipart uploads
Abandoned multipart upload parts stay in the bucket and bill until aborted by a lifecycle rule.
Everything left in Standard
Data that is rarely read stays in the most expensive general-purpose class because nobody set a transition.
The fix, step by step
Verify first
Check these before you change anything: the steps below are suggestions, and only you can see your own configuration.
- Find which buckets hold the bytes: S3 Storage Lens or the CloudWatch BucketSizeBytes metric per storage class shows size per bucket without listing objects.
- Check how often data is actually read (S3 server access logs, CloudTrail data events or a Storage Class Analysis report) before moving it; retrieval from Standard-IA costs $0.01 per GB.
- Read the current S3 pricing page for minimum storage duration and minimum object size rules of the target class before you transition small or short-lived objects; this page does not quote them.
- Check that no application depends on object immediacy or on a specific class, and test the lifecycle rule on one prefix first.
In the console
- S3 console > Buckets > pick the largest bucket > Management tab > Create lifecycle rule.
- Scope the rule to one prefix for the first test.
- Add a transition for current versions to Standard-IA after the number of days your access data supports; add expiry for non-current versions and a rule to delete incomplete multipart uploads after 7 days.
- Save, then watch the storage-class breakdown in S3 Storage Lens over the next days.
- Widen the scope once the first prefix behaves as expected.
With the CLI
aws cloudwatch get-metric-statistics --namespace AWS/S3 --metric-name BucketSizeBytes --dimensions Name=BucketName,Value=EXAMPLE-BUCKET Name=StorageType,Value=StandardStorage --start-time 2026-11-01T00:00:00Z --end-time 2026-11-03T00:00:00Z --period 86400 --statistics Average
aws s3api put-bucket-lifecycle-configuration --bucket EXAMPLE-BUCKET --lifecycle-configuration file://lifecycle.json
aws s3api get-bucket-lifecycle-configuration --bucket EXAMPLE-BUCKET
Rollback
Remove or edit the lifecycle rule to stop further transitions. Objects already moved can be moved back by copying them into Standard, which incurs retrieval and request charges. Expiry rules delete data permanently: use them only on data you are sure you can lose.
Find your S3 storage line in your own bill
Drop in your Cost Explorer or CUR CSV. Billtrim reads it in your browser, finds the S3 storage lines and shows the dollars and steps for your numbers.
Paste your export: how to export a Cost Explorer CSV or CUR file in two minutes.
Questions people ask
Why is my S3 bill growing when traffic is flat?
Storage is cumulative. Without lifecycle rules, every object ever written, every old version and every abandoned multipart part keeps billing monthly.
Should I move everything to Standard-IA?
Not blindly. Standard-IA is $0.0125 per GB-month but has a $0.01 per GB retrieval charge and class-specific minimums on the S3 pricing page, so it suits data you rarely read.
Does this cover S3 request charges?
No. Requests and data transfer are separate lines; this page covers the storage line.
Related
- EBS:VolumeUsage.gp2 - the gp2 volume line, and the cheaper gp3
- DataTransfer-Out-Bytes: internet egress on your bill
- CloudWatch Logs DataProcessing-Bytes: the log ingestion line
Part of the guide: Reduce your AWS bill as a startup: a checklist for teams with no FinOps person