Skip to main content
QUIETLYTIC
Developer

Docker Compose Validator

Check a Compose file for the mistakes that stop it loading — before you find out with docker compose up.

Local · nothing leaves this browser Waiting for a Compose file
Esc Clear
Findings

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

From the intelligence desk