Check the file you intend to run
Paste one Compose YAML document, up to 256 KiB and 4,000 lines. If it uses variables, supply the relevant KEY=VALUE assignments in the optional interpolation input, up to 64 KiB and 2,000 lines. Use representative values rather than secrets where possible. The checker does not read your shell, project .env, or referenced files.
Fix input and YAML syntax problems first: they prevent a normalized model from being produced. For parsed files, follow each finding's path and fix direction. A source location can point to the relevant YAML node rather than the exact offending character.
Editing either input clears the previous result. An unexpected checker failure leaves your text available for another attempt. Copying the report copies diagnostic evidence, not a repaired Compose file.
What a static check can tell you
| Layer | What it checks | What a clean result does not establish |
|---|---|---|
| YAML syntax | Whether the pasted document can be parsed safely | That it describes a usable Compose project |
| Compose model | Targeted structures, types, references, and relationships in this file | Full Specification coverage or a resolved multi-file project |
| Static advisories | Declarations worth reviewing, such as broad exposure or elevated privileges | A vulnerability finding or security verdict |
The model checks follow a targeted snapshot of the Compose Specification reference. A valid YAML document can still have Compose errors, and an advisory does not itself change model validity.
Interpolation is separate from container environment
| Source or declaration | Its role | What this checker can use |
|---|---|---|
| Pasted interpolation assignments | Explicit values for this check | Only the assignments you supply |
Shell, project .env, or CLI environment files | Sources used by real Compose interpolation | Not read by the browser |
Service environment | Environment values for the container | Its declaration in the pasted file |
Service env_file | A file supplying container environment values | Its declaration, not the file contents |
A service's env_file does not fill a ${VAR} token in this checker. Supply the interpolation assignment separately when you want to test a known value.
The checker handles $VAR, ${VAR}, defaults, required values, alternatives, and escaped dollars. Empty and unset are different: ${VAR-default} uses its default only when unset, while ${VAR:-default} also uses it when empty. The required forms ? and :? make the same unset-versus-empty distinction; + and :+ select an alternative when the corresponding condition is met. Required forms can block resolution; an unresolved optional value remains a different finding. $$ preserves a dollar sign instead of starting interpolation.
Interpolation applies to values, not YAML keys, and supported expressions can nest up to eight levels here. This is not a shell evaluator. See the Compose interpolation reference for the operator meanings and the environment-source guide for real-project precedence.
Declarations are not host facts
| Declaration | Static check | Still unknown |
|---|---|---|
depends_on | Referenced services and supported conditions | Whether dependencies start successfully |
| Networks and named volumes | Declared resources and service references | Whether external resources exist |
| Secrets and configs | Declarations and grants | File readability, contents, and runtime access |
| Profiles | Membership declared in the paste | Which profiles your actual command activates |
| Healthchecks | The declaration, including health-dependent relationships | Whether the application becomes ready |
Published ports are normalized for syntax and same-file overlap checks, including supported ranges and bracketed IPv6 addresses. A free-looking declaration can still collide with another process or project on the host. Likewise, declaring a healthcheck is not evidence that it will pass. Docker's service reference describes these relationships.
One paste cannot resolve every project
The obsolete version field does not select a legacy 2.x or 3.x schema. include and extends create a different problem: their referenced files can change the effective model. This checker does not fetch or merge them. It retains useful findings from the pasted file while marking the unresolved composition as incomplete.
Verify with the real project
Run docker compose config -q using the files, project directory, environment sources, and profiles intended for deployment. Use docker compose config --environment to inspect the environment used for interpolation. The docker compose config reference covers these project-level checks.
Neither this browser check nor configuration validation proves that an image exists, host files are accessible, ports are available, or services remain healthy. Those questions need the actual project and Docker runtime. The checker does not execute code, inspect images, or issue a security verdict.