GitHub Actions cache storage cost per GB, and artifacts
GitHub Actions cache storage cost per GB is $0.07 a month beyond a 10 GB per repository allowance, and artifact storage is $0.25 a month beyond an allowance that depends on your plan. The difference that matters is not the rate: past its limit the cache evicts rather than billing, while artifacts simply keep accruing, which is why almost every surprising storage line on an Actions invoice is artifacts.

Storage is the meter that can grow while nothing about your workflows changes. Minutes are spent when a job runs; storage is charged for every hour a file exists, so a retention setting made once in 2023 is still being billed today at a volume that has grown with the team.
This page states both rates, both allowances, the unit GitHub actually bills in, and a worked month you can redo with your own numbers. It also covers the retention change landing on 1 October 2026, which widens what the policy applies to.
Two meters, two rates, two allowances
Actions cache is billed at $0.07 per GB-month, with an allowance of 10 GB per repository. That allowance is per repository rather than per account and it is not shared with anything else.
Artifacts are billed at $0.25 per GB-month, and their allowance is per account and shared with GitHub Packages: 500 MB on Free and on Free for organizations, 1 GB on Pro, 2 GB on Team, and 50 GB on Enterprise Cloud. Because the allowance is shared, a container registry that fills it leaves nothing for artifacts and the first line you notice is the one that grew last.
Custom image storage for larger runners is a third meter at $0.07 per GB-month, with its own allowance of 75 GB on Team and 150 GB on Enterprise Cloud, and it only exists if you are building custom runner images.
| Meter | Rate per GB-month | Allowance | What happens past the allowance |
|---|---|---|---|
| Actions cache | $0.07 | 10 GB per repository | Entries are evicted, and nothing is billed unless the limit was raised |
| Artifacts | $0.25 | By plan, 500 MB to 50 GB, shared with Packages | Accrues every hour until retention deletes the file |
| Custom images | $0.07 | 75 GB on Team, 150 GB on Enterprise Cloud | Accrues per retained image version |
The cache usually does not bill at all
This is the part that surprises people in the right direction. GitHub documents the cache eviction rule as charging only past a raised limit: for a repository with a peak of 15 GB in an hour, "the repository owner will be charged for the 5 GB of usage above the 10 GB included for that repository", and then adds the condition that decides the whole question, that "the repository owner will only be charged if the repository cache storage limit has been configured higher than the included usage".
Left at its default, a repository does not exceed 10 GB of cache, because the eviction process removes older entries to make room. The cost of that is cache misses rather than dollars, which is a real cost in minutes and a different page: the 10 GB cache size limit covers what gets evicted first and how to see it.
Cache is also measured differently. Artifact storage accrues on a running total, while cache "usage is measured by the peak usage for each hour", so one short spike sets the figure for that hour. The two entries also expire differently: cache entries not accessed in over 7 days are removed automatically, and nobody has to configure that.
What GitHub is actually counting
The unit is the GB-hour, and the gigabyte is binary: GitHub states it measures storage in binary gigabytes where 1 GB is 2 to the power of 30 bytes, which is a gibibyte. Storing 3 GB for ten days is 720 GB-hours, and your monthly figure is the total GB-hours divided by the hours in that month.
GitHub's own worked example is worth keeping, because it shows the division: 3 GB for ten days plus 12 GB for twenty-one days is 720 plus 6,048, which is 6,768 GB-hours, divided by the 744 hours in March gives 9.0967 GB-months, rounded to the nearest megabyte as 9.097 GB.
The accrual model has one consequence that generates most of the support questions on this topic. Deleting an artifact reduces your current storage and stops future charges, and it does not remove the hours already recorded, so the bill for this cycle does not fall. The figures also update within 6 to 12 hours, so a deletion you made this morning will not be visible yet either.
A worked month, with the inputs written down
Take a repository whose workflow uploads 200 MB of build output per run, running 40 times a working day across 21 working days. That is 840 runs and 168 GB created in the month, or about 5.6 GB a day.
At the default 90-day retention, the steady state is the daily rate multiplied by the retention: roughly 504 GB held at any moment. On a Team plan with 2 GB included, that is about 502 GB-months at $0.25, or $125.50 a month, for artifacts that nobody has opened since the day they were produced.
Change one line and set retention-days: 5. The steady state falls to about 28 GB, the bill falls to around $6.50, and the only capability you lose is downloading an artifact from a run older than a working week. That is the largest single-line saving available anywhere in Actions billing, and it is invisible until somebody looks at the storage SKU rather than at the minutes.
- uses: actions/upload-artifact@v7
with:
name: build
path: dist
retention-days: 5
# the debug bundle nobody reads after the same day
- uses: actions/upload-artifact@v7
if: failure()
with:
name: failure-logs
path: logs/
retention-days: 1Retention, and what changes on 1 October 2026
By default, checks, workflow runs, commit statuses, artifacts and log files are retained for 90 days before they are automatically deleted. You can lower it: public repositories can be set anywhere between 1 and 90 days, and private and internal repositories between 1 and 400.
GitHub has published an important qualification to that. Starting on 1 October 2026, the retention policy will apply to checks, workflow runs and commit statuses as well as to artifacts and logs, and until then those objects are retained for 400 or more days regardless of the retention period you configured. If you set a short retention some time ago and assumed it covered everything, it has not been, and it is about to.
A retention change applies only to new objects, not retroactively, so lowering it today starts saving tomorrow rather than clearing the backlog. Delete the existing artifacts separately if the current storage number is the problem, and remember that doing so does not refund this cycle.
Finding your own number
Group the usage report by SKU. Storage appears as its own SKU rather than inside the Actions minutes line, which is exactly why a bill that grew with no extra minutes behind it looks mysterious: people read the minutes SKU, find it flat, and conclude that the invoice is wrong. Identifying high cost workflows has the reports and the endpoints.
Then apply the order that actually works. Shorten retention first, because it is one line and it compounds against every future run. Stop uploading what nobody downloads second. Only then look at the cache, and expect to find that it is costing you minutes rather than dollars.
For the whole billing model these two meters sit inside, see how GitHub Actions pricing works, and if the invoice moved without an obvious cause, why is my CI so expensive sorts the six usual reasons.
Key takeaways
- Cache is $0.07 per GB-month and artifacts are $0.25, but at the default limit the cache evicts instead of billing.
- Artifact allowance is shared with GitHub Packages, so a full registry leaves nothing for build output.
- Storage bills in GB-hours and deleting a file stops future charges without refunding the hours already accrued.
- From 1 October 2026 the retention policy also covers checks, workflow runs and commit statuses.
Frequently asked questions
How much does GitHub Actions cache storage cost per GB?
Why did my storage bill not drop after I deleted artifacts?
What is the default artifact retention period?
Do artifacts and GitHub Packages share an allowance?
What does GB-month mean on the Actions invoice?
Related guides
References
- GitHub: Actions billing, storage rates, allowances and GB-hour accrual (verified 2026-09-21)
- GitHub: dependency caching, the 10 GB limit and the 7-day eviction (verified 2026-09-21)
- GitHub: repository Actions settings, retention and cache configuration (verified 2026-09-21)
- actions/upload-artifact: the retention-days input and its limits (verified 2026-09-21)
- GitHub Actions documentation