How to use
Paste a Caddyfile into “Check config” (or press “Try the sample”).
Under “Results”, read the syntax and reference problems (unclosed braces, undefined matchers and snippets) and the points to check, with line numbers.
Under “Structure”, check how the site blocks and snippets nest.
For a template, choose the content and enter a domain name under “Make a Caddyfile”, then copy or save it.
Before applying, run caddy validate on your server.
What it does
Site blocks, snippets and matchers
Counts the site blocks for each address, the (name) snippets and the @name matchers, and shows them as a tree with nesting.
Reference problems by line
Lists a { with no matching }, a } with no opening, and @matchers or import targets that are not defined as errors.
Checks following Caddy 2
Points out forms where automatic HTTPS does not apply (http:// addresses, IP addresses, auto_https off), reverse_proxy upstreams, tls internal, compression and the Server header, and directive order.
Templates
Static site, reverse proxy, www to bare name redirect and SPA (try_files), with your domain name.
Nothing is sent
The pasted config is processed only in your browser and not sent to a server.
Use cases
- Write a reverse_proxy in Caddy 2 syntax in front of a Node.js or Python app
- Check the 301 redirect from www to the bare name
- Find a snippet name mismatch in import or a matcher that is not defined
- Check that tls internal is not used on a public site
- Prepare a static site with try_files for a single page app
Capability matrix
| Feature | Support | Notes |
|---|---|---|
| List and tree of site blocks, snippets and matchers | Supported | — |
| Unclosed or unmatched braces, undefined matchers and snippets | Supported | — |
| Comparison with the list of Caddy 2 standard directives | Partial | Plugin directives are shown as unknown and are not judged wrong |
| Common mistakes (automatic HTTPS, reverse_proxy, tls internal, order and others) | Partial | Based on typical patterns. It can raise false alarms and miss things |
| Converting an nginx config to a Caddyfile | Not supported | Not supported. Rewrite it in Caddy syntax |
| Reading the contents of files loaded by import | Not supported | Only the file names are listed |
| A real check with caddy validate, or connecting to a server | Not supported | Not run and no network access. Check with caddy validate before applying |
Limits & notes
- Pasted input is limited to 300,000 characters, 20,000 directives and 64 nesting levels.
- Findings are a guide from tokens and structure. They can flag correct configs and miss problems.
- The directive list covers the Caddy 2 standard directives. Plugin directives are shown as unknown.
- The contents of files loaded by import are not read.
- Templates are examples. Change the upstream port, paths and domain name to your environment.
- tls internal is a self-signed certificate. Do not use it on a public site.
Privacy & safety
The pasted config, the findings and the generated templates are processed only in your browser. They are never sent to or stored on a server.
FAQ
How do I write a reverse proxy in Caddy?
How do I redirect www to the bare domain in Caddy?
When does Caddy’s automatic HTTPS not apply?
Does Caddy keep directives in the order I write them?
Does this replace caddy validate?
Is the pasted Caddyfile sent to a server?
Related tools
nginx Config Studio
Build a reverse proxy, SPA, PHP-FPM or HTTP-to-HTTPS redirect config from a form, or paste your nginx.conf to list syntax errors and easy-to-miss points. Everything runs in your browser and nginx is never executed.
CORS Studio
When the browser blocks a request with a CORS error, paste the request (Origin, method, headers, credentials) and the response headers. The tool says whether the browser allows it and why, header by header, and builds the server settings that allow it.
Certificate, CSR & PEM Studio
Reads PEM, DER (.cer/.crt), CSR and PKCS#7 (.p7b) and lists the subject, expiry (days left), SANs, public key, signature algorithm and SHA-256 fingerprint. It also checks chain order and signatures and converts PEM and DER. Everything runs in your browser and private keys are never read.
.env Studio
Paste or drop a .env file to see its keys and values in a table, with duplicates, empty values and syntax problems flagged by line. Values are hidden by default. You can compare a .env with a .env.example, or export an example file, JSON or a Kubernetes Secret. It checks common dotenv syntax, not tool-specific rules such as docker compose variable expansion.
Apache Config Studio
Paste .htaccess, httpd.conf or a VirtualHost to see its section tree and line-numbered findings: unclosed sections, unknown directives and overly open settings. You can also generate HTTPS redirect, www and HSTS snippets.
Hosts Studio
Paste a hosts file to see its IP and host name pairs in a table, with format errors, duplicates and changed localhost lines flagged by line number. It checks the syntax of hosts entries (IP, whitespace-separated names, # comments). It does not resolve names or write to your system. Save the output file and place it in the system hosts location with administrator rights.
Last updated: