Guide
Quotes in YAML: single, double, or unquoted strings
Learn when to use single quotes, double quotes, or plain scalars in YAML and how they affect escapes, comments, and types.
by Tools in a Tab · Published on · Updated
Short answer
In YAML, unquoted text is convenient, single quotes preserve almost everything
literally, and double quotes interpret escapes such as \n, \t, or
\u263A. Quote a value when it could be mistaken for syntax or another type;
choose double quotes only when escape sequences are useful.
Three styles with different behavior
unquoted: api-service
single: 'C:\temp\notes.txt'
double: "first line\nsecond line"
The first value is a plain scalar. In the second, a backslash does not begin an
escape. In the third, \n becomes a newline in the resulting value. Paste this
example into the YAML to JSON converter to inspect
the exact types and content instead of judging only the source text.
When a value should be quoted
Quotes are useful when text:
- starts with an indicator such as
-,?,&,*,!, or#; - contains
:and could look like a key/value pair; - contains
#and the remainder could become a comment; - matches a Boolean, number, or null value under the active schema;
- must preserve leading or trailing spaces;
- must unambiguously remain a string when converted to another format.
For example, code: 00123 may be resolved as a number by some schema and
processor. code: '00123' explicitly states that the zeros belong to the text.
Single-quoted scalars
Inside single quotes, represent one single quote by doubling it:
message: 'Ada said: ''ready''.'
path: 'C:\temp\notes.txt'
This is YAML; the example preserves single quotes deliberately. The parsed
message is Ada said: 'ready'. — each doubled quote becomes one character.
Backslashes and double quotes remain literal. This style suits paths, regular expressions, and text containing many backslashes. It does not provide backslash escape sequences for control characters.
Double-quoted scalars
Double quotes interpret the escape sequences defined by YAML:
message: "one\ntwo"
tabbed: "key\tvalue"
unicode: "smile: \u263A"
Write \\ for a literal backslash. Copying a path from a single-quoted scalar
to a double-quoted one without reviewing the slashes can change its content or
produce an invalid escape.
Frequent mistakes
- Expecting
\nto create a newline inside single quotes. - Writing
#after a space in an unquoted scalar and losing the rest as a comment. - Quoting only some ambiguous values without a consistent policy.
- Confusing the visual style of a scalar with its parsed value.
- Adding quotes to fix a problem that is actually caused by indentation.
The YAML 1.2.2 specification distinguishes plain, single-quoted, and double-quoted scalars. Backslash escapes are interpreted only by the double-quoted style. Choose the form that makes the value received by the application explicit.