Skip to content

INI

Getting Started

Introduction

  • 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

Example

; Here are the comments
[owner]
name=John Doe
organization=Acme Products
[database]
; Here are the comments
server=192.0.2.42
port=143
file="acme payroll.dat"
[section.subsection]
foo = bar

Comments

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

Sections

  • 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
[section]
key1 = a
key2 = b

The same as JSON below 👇

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

Nesting (supported by some parsers)

[section]
domain = cheatsheets.zip
[section.subsection]
foo = bar

The same as JSON below 👇

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

Nest to previous section (shorthand)

[section]
domain = cheatsheets.zip
[.subsection]
foo = bar

Escape character

sequencemeaning
\\\ (single backslash, escape escape character)
\'apostrophe
\"double quotes
\0null character
\aringtone/alert/sound
\bBackspace, [Bell character] for some applications (https://en.wikipedia.org/wiki/Bell_character)
\ttab character
\rcarriage return
\nnewline
\;semicolon
\#number sign
\=equal sign
\:colon
\x????Unicode character for the hexadecimal code point corresponding to ????

Array

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

The same as JSON below 👇

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

Interpreter

See also