TOML
Configuration file format
From Wikipedia, the free encyclopedia
Tom's Obvious, Minimal Language (TOML, originally Tom's Own Markup Language)[2] is a file format for configuration files.[3] It is designed to be easy to read and write by being minimal (unlike the more-complex YAML) and by using human-readable syntax. The project standardizes the implementation of the ubiquitous INI file format (which it has largely supplanted[citation needed]), removing ambiguity from its interpretation. Originally created by Tom Preston-Werner, the TOML specification is open source. TOML is used in a number of software projects[4][5][6] and is implemented by all popular programming languages.[7]
- Tom Preston-Werner
- Community
| TOML | |
|---|---|
| Filename extension |
.toml |
| Internet media type |
application/toml |
| Developed by |
|
| Initial release | 23 February 2013 |
| Latest release | 1.1.0[1] 18 December 2025 |
| Type of format | Data interchange |
| Open format? | Yes |
| Website | toml |
Syntax
TOML's syntax primarily consists of, among other constructs, key = value pairs, [section names], and # (for comments). TOML's syntax is a superset of the .INI format but has one agreed-upon formal specification, whereas the .INI format suffers from many competing variants (most implicitly specified through project-specific parsers).
Exceeding stringly-typed semantics, TOML supports the data types string, integer, float, boolean, datetime, array and table.
Example
# This is a TOML document.
title = "TOML Example"
[database]
server = "192.168.1.1"
ports = [ 8000, 8001, 8002 ]
connection_max = 5000
enabled = true
# Line breaks are okay when inside arrays
hosts = [
"alpha",
"omega"
]
[servers]
# Indentation (tabs and/or spaces) is allowed, but not required
[servers.alpha]
ip = "10.0.0.1"
dc = "eqdc10"
[servers.beta]
ip = "10.0.0.2"
dc = "eqdc10"
Notable uses
TOML is used in a variety of settings such as:
- Jekyll (a static site generator) configuration
_config.toml(although configuration through YAML is also supported) - Hugo (a static site generator) configuration
hugo.toml(although configuration through JSON or YAML are also supported) - Python 3 package manifests
pyproject.toml[8] - Rust package manifests
Cargo.toml[4] - Julia project settings
Project.tomland package manifestsManifest.toml[9] - Blender add-on manifests
blender_manifest.toml[10] - Gradle version catalogs
libs.versions.toml[11] - Taplo configurations
.taplo.tomlandtaplo.toml[12] - Prettier configurations
.prettierrc.toml[13]