Docker Compose Validator
Check a Compose file for the mistakes that stop it loading — before you find out with docker compose up.
Paste a Compose file on the left.
How it works
Checks the structural invariants a Compose file needs to load at all — a top-level services map, each
service having an image or a build, port mappings in a shape Compose actually
understands — rather than claiming full Compose Specification coverage, which has no single canonical schema
Compose itself validates against.
What this does not check
It does not resolve
${VAR}
environment variable interpolation, does not confirm a referenced image exists on a registry, and does not
validate a build context path — all of that needs information a browser-local tool does not have. This catches the
mistakes that show up before any of that matters: a typo in a service's port syntax, a service with neither an
image nor a build.
Example
A service missing both image and build is flagged as an error — Compose has nothing to
start for it. The obsolete top-level version key is flagged as a warning, since it is dead weight
rather than a real problem — modern Compose ignores it entirely.
Frequently asked questions
Why does it flag the top-level "version" key as a warning?
Because the Compose Specification dropped it — modern Compose (v2 and the standalone Compose plugin) ignores that field entirely and has since 2022. It is not wrong to leave it in an old file, but it is dead weight that no longer does anything, so removing it is called out as safe rather than left for a reader to wonder about.
Why is an unrecognized service key only a warning, not an error?
Because Compose itself is lenient about this in practice — a plugin-specific extension field, a typo that Compose silently ignores rather than rejects, or a key from a newer Compose version this tool has not been updated for are all plausible. A warning flags it for a second look without asserting your file is broken over something this tool might simply not recognize yet.
Related tools
YAML to JSON Converter
Convert YAML to JSON and back, with what the conversion costs stated rather than dropped.
LocalKubernetes Manifest Validator
Check one or more Kubernetes manifests for the fields each kind cannot function without.
LocalJSON Formatter & Validator
Format, validate and measure JSON, with errors located by line and column.
LocalOpenAPI Structure Checker
Check an OpenAPI document for the fields it needs to describe a real API — not full spec compliance.
LocalJWT Decoder
Decode a JSON Web Token and read its header, claims and expiry.
LocalJWT Security Inspector
Check a decoded token against the weaknesses that show up in real audits.
Local