A cluster-free CLI that measures the exact decoded Helm release Secret size and breaks it down by top-level property.
helm-release-size-analyzer
⭐ Don't forget to star this repository! ⭐
About
helm-release-size-analyzer shows how much space a Helm release occupies and attributes the decoded release JSON size to its top-level properties.
Large chart files and CRDs can push Helm's stored release toward the Kubernetes 1 MiB object-size limit. Handling Large Files and CRDs in Helm and the 1MB Release Limit explains the constraint, why CRD-heavy charts are especially affected, and ways to reduce release size. This analyzer complements that guidance with a local, property-level view of the decoded release payload before installation. The decoded size isn't the size of the encoded Kubernetes Secret object.
Features
- Measures the exact decoded JSON persisted in a Helm release Secret.
- Reports the total size and exact size of every top-level property.
- Uses Helm's chart loader, values handling, install action, and Secret driver.
- Support local chart directories and packaged charts.
- Support values files,
--set,--set-string, and--set-file. - Produces human-readable table output, machine-readable JSON, or an
- Prints the uncompressed release JSON for further inspection.
Quick start
Installation
Download an archive for your platform from GitHub Releases, or install the latest version from the source:
go install github.com/jkroepke/helm-release-size-analyzer/cmd/helm-release-size-analyzer@latest
Analyze a chart
Only local chart directories and packaged charts are supported.
Use the interactive web report to inspect every nested object property and array element:
helm-release-size-analyzer analyze ./my-chart
The command listens on a random 127.0.0.1 port, opens the report in the default browser, and runs until you select Stop server or interrupt the command. The terminal logs the URL so that you can open it manually if the browser can’t be started. The report is self-contained, loads no remote assets, and sends no release data outside the local process.
helm-release-size-analyzer analyze ./my-chart \
--release-name example \
--namespace default \
--output table
Example table output:
PROPERTY SIZE
TOTAL 991.00 B
COMPRESSED 612.00 B
name 17.00 B
info 165.00 B
chart 598.00 B
chart.values 31.00 B
manifest 155.00 B
version 12.00 B
namespace 22.00 B
apply_method 20.00 B
Actual sizes depend on the chart, values, and pinned Helm version.
Use JSON output in automation:
helm-release-size-analyzer analyze ./my-chart --output json
{
"properties": [
{
"name": "name",
"bytes": 17
}
],
"total_bytes": 991,
"compressed_bytes": 612
}
To inspect the decoded payload directly:
helm-release-size-analyzer release-json ./my-chart > release.json
Size definition
total_bytes is the byte length of the complete decoded and decompressed release JSON, including outer braces and JSON syntax. A property size includes its encoded key, value, whitespace, and delimiter comma. JSON report property order matches the stored JSON; table properties are ordered by decreasing size. These reports also include second-level properties of chart, such as chart.values. The web report displays each size once, using B or kibibyte-based KB as appropriate.
The analyzer measures the original bytes after removing Helm's storage encoding. It doesn’t re-encode values, estimate the payload from rendered resources, or measure the SDK-returned release object.
Command-line flags
The CLI is configured only through command-line flags.
Common flags:
| Flag | Description | |------------------|-------------------------------------------------------------| | --release-name | Release name; defaults to the chart name | | --namespace | Simulated release namespace; defaults to default | | -f, --values | Values file; may be repeated | | --set | Set a value with Helm syntax | | --set-string | Set a string value with Helm syntax | | --set-file | Set a value from a file | | --include-crds | Include CRDs in the stored manifest | | -o, --output | Output format: table, json, or web; defaults to web | | --log-level | Log level: debug, info, warn, or error | | --log-format | Log format: text or json |
Run helm-release-size-analyzer analyze --help for the complete command reference.
Documentation
DEVELOPER.mddescribes the internal design and test
CONTRIBUTING.mdexplains the contribution workflow and
CODEOF_CONDUCT.mddefines community expectations.
Contributing
Contributions are welcome. Read CONTRIBUTING.md before opening a pull request. Every commit must include a DCO sign-off.
Copyright and license
Copyright 2026 Jan-Otto Kröpke.
Licensed under the Apache License, Version 2.0.
Open Source Sponsors
Thanks to all sponsors!
- @hegawa (25$) onetime
- @Zero-Down-Time (25$) onetime
- @k0ste (25$) onetime
Acknowledgements
Thanks to JetBrains IDEs for their support.
| JetBrains IDEs |
|---|