This is a quick reference cheat sheet for understanding and writing INI-format configuration files.

#Getting Started


  • INI is a configuration file with a fixed standard format
  • Base elements are keys or properties
  • Each key consists of a name and a value, separated by an equal sign (=)
  • key name is displayed to the left side of the equals sign
  • equal sign and semicolon are reserved characters
  • INI configuration method comes from the MS-DOS operating system

Now an informal standard for many configurations, other operating systems may use .conf or .cfg as a suffix


; Here are the comments
name=John Doe
organization=Acme Products

; Here are the comments
file="acme payroll.dat"

foo = bar


comment (;)

; This is the comment text and will be ignored

comment (#)

# Here is the comment text, ⚠️ Some compilers support it

Comments after a line (;,#) (not standard)

var = a ; this is an inline comment
foo = bar # this is another inline comment

Comments must appear alone on lines in some cases


  • The name appears on a line by itself
  • Names are enclosed in square brackets [ and ]
  • No explicit section end delimiter
  • End at the next section declaration or at the end of the file
  • Section and attribute names are case insensitive
key1 = a
key2 = b

The same as JSON below 👇

  "section": {
    "key1": "a",
    "key2": "b"

#Nesting (supported by some parsers)

domain = cheatsheets.zip
foo = bar

The same as JSON below 👇

  "section": {
    "domain": "cheatsheets.zip"
    "subsection": {
      "foo": "bar"

Nest to previous section (shorthand)

domain = cheatsheets.zip
foo = bar

#Escape character

sequence meaning
\\ \ (single backslash, escape escape character)
\' apostrophe
\" double quotes
\0 null character
\a ringtone/alert/sound
\b Backspace, [Bell character] for some applications (https://en.wikipedia.org/wiki/Bell_character)
\t tab character
\r carriage return
\n newline
\; semicolon
\# number sign
\= equal sign
\: colon
\x???? Unicode character for the hexadecimal code point corresponding to ????


domain = cheatsheets.zip
array[]=first value
array[]=second value

The same as JSON below 👇

    "section": {
        "domain": "cheatsheets.zip",
            "array": [
            "first value",
            "second value"


#See also