Kubernetes YAML Validator
Validate K8s manifests for syntax errors and schema violations — entirely in your browser
Kubernetes manifests fail silently in ways that waste hours. A Deployment with replcia instead of replicas is accepted by kubectl apply — but your pods never scale. A Service targeting port "80" (string) instead of 80 (number) routes no traffic. This tool validates your K8s YAML against the Kubernetes API schema and catches these issues before they hit your cluster.
What Gets Validated
- YAML syntax — Indentation, duplicate keys, invalid characters
- API version and kind — Valid
apiVersion/kindcombinations - Required fields —
metadata.name,specstructure per resource kind - Type checking — Numeric fields that must be numbers, boolean fields, array vs object
- Label and selector rules — Label format (63 char limit, valid characters), selector matching
- Resource-specific rules — Container port ranges (1-65535), valid restart policies, image pull policies
Supported Resource Types
The validator covers the most common Kubernetes resource types:
- Workloads — Deployment, StatefulSet, DaemonSet, Job, CronJob, Pod
- Networking — Service, Ingress, NetworkPolicy
- Configuration — ConfigMap, Secret
- Storage — PersistentVolume, PersistentVolumeClaim
- Access Control — ServiceAccount, Role, RoleBinding, ClusterRole, ClusterRoleBinding
- Other — Namespace, HorizontalPodAutoscaler
Why Validate Before kubectl apply
kubectl apply accepts many structurally invalid manifests without warning. A Deployment with a typo in replicas (e.g., replcia: 3) won’t fail — Kubernetes ignores the unknown field and uses the default value of 1 replica. You only notice the problem when your app can’t handle traffic. This tool catches these silent failures before they reach your cluster.
How to Use
- Paste your Kubernetes YAML manifest into the editor
- Multi-document YAML (separated by
---) is supported - Errors and warnings appear with line numbers and descriptions
- Fix issues before running
kubectl apply
Common Mistakes Caught
- Missing
apiVersionorkindat the top level containerPortspecified as a string instead of a numberreplicastypo (replica,replcia)selector.matchLabelsnot matchingtemplate.metadata.labelsin Deployments- Invalid
restartPolicyvalues (must be Always, OnFailure, or Never)
Frequently Asked Questions
Does it validate Custom Resource Definitions (CRDs)? It validates the YAML syntax and basic Kubernetes structure, but it cannot validate CRD-specific schemas since those are defined per-cluster.
Can it validate Helm templates?
No. Helm templates contain Go template syntax ({{ }}) that isn’t valid YAML until rendered. Use helm template to render first, then paste the output here.
Does it check for deprecated API versions?
Yes. It flags deprecated API versions like extensions/v1beta1 for Ingress and suggests the current alternative (networking.k8s.io/v1).
Is my manifest sent to a server? No. All validation runs in your browser. Your Kubernetes configuration never leaves your device.