Decoding Kubernetes Secret values safely
kubectl get secret -o yamlshows values as Base64 text. That’s encoding for safe storage in a text format, not encryption — the distinction matters for how you handle the output.
Encoding, not encryption
Base64 is a reversible, keyless text encoding. Anyone with read access to a Secret object can decode its values with no credentials beyond that read access — Kubernetes RBAC on the Secret is the actual security boundary, not the encoding. Decoding a value doesn’t bypass any protection; it just reverses a format transformation.
Decoding a single value
A Secret’s data field holds Base64 text per key. Pull a single value with kubectl get secret my-secret -o jsonpath='{.data.password}' and decode it with the Base64 Encoder and Decoder, or pipe it through base64 -dlocally if you’d rather not paste a real secret value into any web tool — a reasonable default regardless of what a given tool claims about not storing input.
Decoding several values at once
A Secret with multiple keys means multiple Base64 values. The Base64 tool’s batch mode decodes one value per line in a single pass, useful when comparing several keys from the same Secret side by side.
Handling the decoded value
- Treat the decoded output exactly as sensitively as you’d treat the original secret — it is the original secret, just re-encoded.
- Avoid pasting real production credentials into any tool, including this one, if a redacted or rotated-afterward value would do instead.
- Prefer
kubectlplugins likekubectl-view-secretfor routine decoding in a trusted terminal, and reach for a web tool mainly for one-off inspection or teaching.