TOML

TOML stands for “Tom’s Obvious Minimal Language.” The official site at toml.io describes it as “a config file format for humans” that “aims to be a minimal configuration file format that’s easy to read due to obvious semantics.” Its defining design goal, stated prominently in the specification, is that TOML “is designed to map unambiguously to a hash table,” so that parsing a TOML document yields a clean, predictable key/value structure in any language.

TOML was created by Tom Preston-Werner, a co-founder of GitHub, who announced the first version in 2013. He designed it partly in reaction to the ambiguities of YAML and the lack of comments and limited types in JSON. The format is maintained in the open at github.com/toml-lang/toml, where the specification, change history, and a compliance test suite are published. The language reached a stable 1.0.0 specification in 2021, with later revisions such as 1.1.0 documented on the same site.

A TOML file is built from key/value pairs grouped into tables. Bare keys and quoted strings sit on the left of an equals sign; on the right TOML supports a richer set of native types than INI, including strings (basic and literal, single and multi-line), integers, floats, booleans, and first-class date and time values in RFC 3339 format. Arrays and inline tables allow structured values, while bracketed table headers such as “[server]” and “[[products]]” (arrays of tables) express nesting and repetition without relying on indentation.

The format rose to prominence through its adoption by major tooling ecosystems. Rust’s package manager Cargo uses “Cargo.toml” as its manifest, and the Python community standardized “pyproject.toml” through PEP 518 and PEP 621 as the canonical place to declare build requirements and project metadata. These choices put TOML at the center of two large language communities and cemented its reputation as the format of choice for project configuration.

Compared with its peers, TOML deliberately stays flatter and stricter than YAML, trading deep nesting and YAML’s anchors for predictability and unambiguous parsing. It adds the comments, explicit types, and human readability that JSON lacks, while keeping the familiar “key = value” feel of the older INI format it visually resembles. That balance is why TOML has become a common default for application and package configuration.

Sources

Last verified June 8, 2026