Helm Repository Storage Calculator
Estimate total storage consumed by a classic Helm chart repository (index.yaml + .tgz packages) across all charts and versions.
Inputs
Number of distinct chart names hosted in the repository.
Average number of published versions retained per chart.
Average .tgz size of a single chart version package.
Total Repository Storage
8.79MB
Total Chart Versions Stored
300versions
Total Repository Storage
0.0086GB
Step by step
Total versions = charts × versions per chart
20 × 15
= 300 versions
Storage = total versions × avg chart size
300 × 30KB
= 9000.0KB (8.79MB)
How it works
A classic Helm chart repository (served via ChartMuseum, S3 + index.yaml, GitHub Pages, etc.) stores every published version of every chart as a separate .tgz package, plus a lightweight index.yaml listing metadata for all of them. Total storage scales linearly with the number of charts, how many versions of each are retained, and the average packaged size — with the index.yaml itself usually a negligible fraction of the total once charts number in the dozens.
Formula
storage = charts × versionsPerChart × avgChartSize
- C
- Number of distinct charts
- V
- Versions retained per chart
- P_{avg}
- Average chart package size in KB
- S
- Total repository storage in KB
Frequently Asked Questions
Does index.yaml storage matter at scale?
It can — index.yaml grows with every version of every chart since it embeds full Chart.yaml metadata per entry, so repositories with thousands of versions can end up with multi-MB index files that slow down `helm repo update`, separate from package storage.
How do I reduce chart repository storage?
Prune old pre-release or superseded versions, deduplicate large static assets by keeping them out of the chart (reference external images/manifests instead), and compress ChartMuseum storage backends where supported.
Is OCI-based storage different from a classic chart repo?
Yes — OCI registries (Helm's default since 3.8) store charts as OCI artifacts with content-addressable layers, which can deduplicate identical layers across versions, unlike a classic repo where every .tgz is a fully independent blob.