A TOML file must be a valid UTF-8 encoded Unicode document.
A hash symbol marks the rest of the line as a comment, except when inside a string.
A key may be either bare, quoted, or dotted.
Defining a key multiple times is invalid.
There are four ways to express strings: basic, multi-line basic, literal, and multi-line literal.
Integers are whole numbers.
Floats should be implemented as IEEE 754 binary64 values.
Booleans are just the tokens you're used to. Always lowercase.
To unambiguously represent a specific instant in time, you may use an RFC 3339 formatted date-time with offset.
Arrays are square brackets with values inside.
Tables (also known as hash tables or dictionaries) are collections of key/value pairs.
Like keys, you cannot define a table more than once. Doing so is invalid.
Inline tables provide a more compact syntax for expressing tables.
Inline tables are fully self-contained and define all keys and sub-tables within them. Keys and sub-tables cannot be added outside the braces.
The last syntax that has not yet been described allows writing arrays of tables.
If the parent of a table or array of tables is an array element, that element must already have been defined before the child can be defined.
TOML files should use the extension `.toml`.
When transferring TOML files over the internet, the appropriate MIME type is `application/toml`.