TOML (Tom's Obvious Minimal Language) est un format de configuration conçu pour se lire sans ambiguïté et se traduire en table de hachage. Il est utilisé par pyproject.toml, Cargo.toml et de nombreux outils. Convertissez entre formats avec le convertisseur TOML vers JSON et le convertisseur JSON vers TOML.
Un exemple complet
# A comment
title = "Example"
count = 42
ratio = 3.14
enabled = true
released = 2026-10-28
updated = 2026-10-28T07:32:00Z
tags = ["a", "b", "c"]
products = [
{ name = "Hammer", sku = 738594937 },
{ name = "Nail", sku = 284758393 },
]
[server]
host = "localhost"
port = 8080
[server.tls]
enabled = false
Types de valeurs
| Type | Exemples |
|---|---|
| Chaîne | "basique" (échappements permis), 'littérale' (sans échappement), """multiligne""", '''littérale multiligne''' |
| Entier | 42, +17, -5, 1_000, 0xFF, 0o17, 0b101 |
| Flottant | 3.14, -0.01, 6.626e-34, +inf, -inf, nan |
| Booléen | true, false (minuscules uniquement) |
| Date-heure avec décalage | 2026-10-28T07:32:00Z ou 2026-10-28T07:32:00+02:00 |
| Date-heure locale | 2026-10-28T07:32:00 (sans fuseau) |
| Date locale | 2026-10-28 |
| Heure locale | 07:32:00 |
| Tableau | [1, 2, 3], peut s'étendre sur plusieurs lignes avec une virgule finale |
| Table en ligne | { a = 1, b = 2 } (sur une seule ligne) |
Tables, clés pointées et tableaux de tables
- Un en-tête
[table]ouvre une section ; chaque clé qui suit appartient à cette table jusqu'au prochain en-tête. [a.b]définit la tablebdansa. Un même chemin de clés ne peut être défini qu'une fois.- Les clés pointées comme
a.b.c = 1créent des tables imbriquées sans en-tête : le résultat est{"a": {"b": {"c": 1}}}. - Un en-tête dont le nom est entouré de doubles crochets (deux crochets ouvrants, le nom, deux crochets fermants, sans espace) ajoute une nouvelle table à un tableau de tables. Chaque en-tête répété ajoute un élément ; un tableau de tables en ligne, comme dans l'exemple, fait la même chose sur une seule ligne.
Règles qui piègent
- Les clés sont sensibles à la casse et les clés sans guillemets n'admettent que
A-Za-z0-9_-. Mettez le reste entre guillemets :"ma clé" = 1. - Une clé ne peut être définie deux fois, et
[server]aprèsserver.port = 1est une erreur. - Les entiers n'ont pas de zéros initiaux (
007est invalide) et les flottants exigent des chiffres des deux côtés du point (.5et5.sont invalides). - Il n'existe pas de
null. Omettez la clé, ou utilisez une chaîne vide ou une valeur sentinelle documentée. - En TOML 1.0, les tableaux peuvent mélanger les types, mais la plupart des outils en attendent un seul.
- Les espaces ne comptent pas, contrairement à YAML, mais une valeur doit se terminer sur sa ligne.