T tomlkit·org

TOML tools

Format, validate, lint, and round-trip TOML against JSON, YAML, CSV, XML, and .properties — then generate the Go, Rust, or Python types that read it. 36 tools, all running in your browser. Your text never leaves the page.

Converting between formats

If you need to pipe your config into a web service or another tool, the TOML → JSON converter turns your tables and arrays into clean JSON without sending a single byte to a server. Going the other way, the JSON → TOML converter creates a readable TOML structure from a JSON object while keeping your data hierarchies intact. For mapping between different config styles, the TOML → YAML converter handles YAML 1.2 output, and the YAML → TOML converter helps you migrate back to TOML with zero friction.

Cleaning and checking your TOML

To keep your config files consistent, the TOML Formatter applies canonical spacing, standardized quoting, and a logical table layout to your documents. If you are hunting for a syntax error, the TOML Validator identifies the exact line and column where your TOML failed to parse and shows you a normalized structure once it is valid.

Generating types and schemas

Once a config file works, the next job is usually the code that loads it. The Go struct generator writes nested structs with the toml: tags already correct — the detail hand-written structs most often get wrong — while the Rust struct generator emits serde types with rename attributes for hyphenated keys and Option for fields that only some entries carry. For Python, the Python type generator produces a TypedDict that type-checks a tomllib.load() result, or dataclasses and pydantic models if you would rather have objects. And when you want CI to reject a bad config rather than a type checker to describe a good one, the JSON Schema generator infers a draft 2020-12 schema from a file that already works.

Auditing a config you did not write

For an unfamiliar file, start with the key lister to see every path it defines, then query the handful of values you actually care about instead of scrolling. The stats tool answers whether the file is as complex as it feels — depth, key counts, the type histogram — and the linter reports the things a valid file can still get wrong: inconsistent key casing, needless quoting, sections that interleave, arrays with mixed types, and credentials sitting in plain text. If you need to share that file, redact it first.

What they have in common

Everything runs in your browser. The text you paste never leaves your machine because there is no server-side component handling your data. I can't see your configuration because it was never sent to me, which means no size caps and nothing for me to accidentally leak.

Sensible defaults, no surprises. These tools aim for a "least astonishment" approach where your types and values stay exactly as you wrote them. Nothing gets silently transformed or "helpfully" changed without you asking.

Free to use. Bug reports and feature requests are always welcome — drop me a line at [email protected].

— S., [email protected]