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`.