What is a TOML file?
TOML is a settings file you can read at a glance, and it means exactly one thing whichever tool loads it. It looks like an old INI file but handles dates, numbers and nested groups properly. You can convert TOML files here, both into the format and out of it.
Specification
| Full name | Tom's Obvious Minimal Language |
|---|---|
| Extensions | .toml |
| Media type | application/toml |
| Compression | Uncompressed |
| Transparency | — |
| Animation | — |
| Multiple pages | — |
| Colour depth | UTF-8 key-value text with tables, arrays and native date types |
| Size limits | — |
| Introduced | 2013 |
| Developed by | Tom Preston-Werner |
| Standard | Open |
| Browser support | Not displayed by browsers |
What TOML is used for
- Rust crate manifests in Cargo.toml
- Python project metadata in pyproject.toml
- Static site generator and CLI tool configuration
- Settings files a person is expected to edit by hand
Strengths and limitations
What TOML does well
- Unambiguous rules, so two programs always agree on what it means
- Dates and times are first-class values rather than strings
- Simple settings stay very readable
Where TOML falls short
- Deeply nested settings get awkward and long-winded
- Not built into browser or standard library tooling the way JSON is
- Arrays of tables have a syntax people frequently get wrong
Convert TOML to
Every target this format can be written out as, each on its own page.
Convert to TOML
Everything that can be turned into a TOML file.
Questions about TOML
What is a .toml file?
TOML is a settings file you can read at a glance, and it means exactly one thing whichever tool loads it. The extension .toml identifies it, and its media type is application/toml.
How do I open a TOML file?
Browsers do not display TOML natively, so you either need software that understands it or you convert it to something more common first. Converting is usually the faster route when you only need to look at the contents once.
Is TOML lossy or lossless?
Uncompressed. Nothing is discarded, so repeated saves never degrade the contents.
What is TOML good for?
Unambiguous rules, so two programs always agree on what it means. Dates and times are first-class values rather than strings. Simple settings stay very readable. In practice that makes it a good fit for rust crate manifests in Cargo.toml, and Python project metadata in pyproject.toml.
What are the drawbacks of TOML?
Deeply nested settings get awkward and long-winded. Not built into browser or standard library tooling the way JSON is. Arrays of tables have a syntax people frequently get wrong.