Developer Tools · Developer
Traefik Config Validator
Paste Traefik v3 dynamic configuration YAML or Docker Compose labels to find broken references, label typos and rule syntax errors, and see your routing as a graph.Runs in your browser
Last updated:
How to use
Expand how to useCollapse how to use
- 1
Paste your config
Paste a Traefik dynamic configuration YAML, or a compose.yaml that contains Traefik labels. The format is detected automatically, and you can switch it manually with the toggle above.
- 2
Fix the reported issues
Issues are listed by severity. Each entry explains why it is a problem and how to fix it, and clicking the line number jumps to that line.
- 3
Check the routing graph
The graph shows the flow from entry points through routers and middlewares to services. Undefined references appear as dashed nodes, so you can see exactly where the chain breaks.
Traefik config
Everything runs in your browser. Your config is never sent to a server.
Paste a Traefik config to check references and rule expressions. You can also start from a sample.
About the Traefik Config Validator
The Traefik Config Validator parses a Traefik v3 configuration in your browser and reports routing problems. It accepts two formats — a file provider dynamic configuration in YAML, and Traefik labels written in the `labels` of a Docker Compose file — and detects which one you pasted. It checks broken references from routers to services and middlewares, singular label typos such as `router` instead of `routers`, camel case mistakes such as `loadBalancer` instead of `loadbalancer`, unbalanced parentheses and quotes in rule expressions, and the Traefik v2 to v3 breaking changes around the removed `Headers` and `HostHeader` matchers, path placeholders in `Path`, and multi-value matchers — 24 rules in total. Every finding comes with the reason it matters, a concrete fix, and a link to the relevant page of the official Traefik documentation. The tool also draws a graph from entry points through routers and middleware chains to services, so you can see exactly where an undefined reference breaks the chain. To avoid false positives, references with a provider suffix such as `@file` or `@docker`, and anything that cannot be decided from a single file, are deliberately left unchecked. Everything runs in your browser, and your configuration is never sent to a server.
Key features
- Supports both dynamic configuration YAML and Docker Compose labels, with automatic detection
- Finds broken router, service, and middleware references and label typos with 24 rules
- Checks rule expression syntax and Traefik v2 to v3 breaking changes
- Visualizes routing from entry points to services as a graph
When to use it
- Reviewing Traefik labels in a homelab compose.yaml before applying them
- Checking a Traefik config copied from a blog post for broken references
- Finding leftover v2 rule expressions while migrating to Traefik v3
- Confirming that routing across several containers connects as intended
Frequently asked questions
Is my config sent anywhere?
No. Parsing and validation run entirely in your browser with JavaScript, and your configuration is never sent to a server. Traefik configs often contain internal hostnames and credentials, so this was the top design priority.
How is this different from Traefik's own startup check?
Traefik itself loads the configuration for real, so it is the most accurate final check. This tool is different in that it works in the browser before you apply anything, explains the reason and a fix for every finding, and draws your routing as a graph. Use the real startup logs for the final confirmation.
Does it support Kubernetes IngressRoute or the static configuration (traefik.yml)?
No. This tool targets two formats only: a file provider dynamic configuration in YAML, and Docker Compose labels. Entry points and certificate resolvers live in the static configuration, so their existence is not checked either.
Why are references with `@file` or `@docker` not validated?
A reference with a provider suffix points at a configuration that was not pasted into this tool. Whether it exists cannot be decided statically, so it is left unchecked to avoid false positives. Such nodes appear in the graph labelled as coming from another provider.
Why is a Docker Compose router without a service name not reported as broken?
When a router has no service, Traefik automatically creates and assigns a service for that container. That is documented, correct behaviour, so it is not treated as a broken reference. If neither a port label nor an exposed port is present, the tool shows an informational note that the target port cannot be determined.