TOML is a configuration file format specification designed to be minimal, obvious, and easy to parse into data structures across programming languages.
TOML addresses the need for a configuration format that balances human readability with machine simplicity. It maps unambiguously to hash tables and combines features from competing formats: like JSON, it maintains simplicity and uses ubiquitous data types; like YAML, it supports comments for documentation. Unlike YAML, TOML avoids complexity that makes parsing difficult. Unlike JSON, it permits comments and is optimized for configuration rather than arbitrary data serialization. The format always has a hash table at the top level, allowing nested data within keys, but does not permit top-level arrays or floats, making it unsuitable for serializing certain data structures.
Teams should adopt TOML when they need a configuration format that prioritizes clarity and ease of implementation. It suits projects where configuration files will be read and edited by humans and where straightforward parsing across multiple languages matters. TOML is preferable to INI files, which lack standardization and handle deep nesting poorly. It is better than YAML for projects where parsing simplicity is valued over maximum expressiveness. It differs from JSON by being designed specifically for configuration rather than general data interchange, and by supporting comments.
The project maintains an official wiki cataloging implementations across languages, validators, a language-agnostic test suite for decoders and encoders, editor support, and converters. The repository contains the in-development specification with released versions published separately on the project website. The project welcomes documentation, bug reports, and pull requests from contributors.