[{"data":1,"prerenderedAt":1858},["ShallowReactive",2],{"guide-yaml-syntax-guide":3},{"id":4,"title":5,"body":6,"date":1850,"description":1851,"extension":1852,"meta":1853,"navigation":710,"path":1854,"readingTime":719,"seo":1855,"stem":1856,"__hash__":1857},"guides\u002Fguides\u002Fyaml-syntax-guide.md","YAML Syntax Guide: A Practical Reference for Developers",{"type":7,"value":8,"toc":1818},"minimark",[9,14,18,26,30,35,38,87,94,98,101,137,140,169,173,176,236,240,243,361,387,437,441,444,452,455,486,493,500,503,532,537,541,639,643,658,791,796,812,816,823,921,924,928,932,935,1003,1009,1013,1071,1109,1113,1116,1120,1123,1228,1240,1244,1248,1407,1411,1565,1569,1733,1737,1777,1781,1784,1794,1798,1814],[10,11,13],"h2",{"id":12},"what-is-yaml","What is YAML?",[15,16,17],"p",{},"YAML (YAML Ain't Markup Language) is a human-friendly data serialization format. It uses indentation to define structure rather than braces, brackets, or tags. That makes it the preferred choice for configuration files in tools like Kubernetes, Docker Compose, GitHub Actions, and Ansible.",[15,19,20,21,25],{},"If you have ever written a ",[22,23,24],"code",{},".yml"," file, you already know the basics. This guide covers everything from fundamentals to advanced features — and the pitfalls that trip up even experienced developers.",[10,27,29],{"id":28},"basic-structure","Basic Structure",[31,32,34],"h3",{"id":33},"key-value-pairs","Key-Value Pairs",[15,36,37],{},"The building block of YAML is the key-value pair:",[39,40,45],"pre",{"className":41,"code":42,"language":43,"meta":44,"style":44},"language-yaml shiki shiki-themes github-light github-dark","name: Alice\nage: 30\nactive: true\n","yaml","",[22,46,47,64,76],{"__ignoreMap":44},[48,49,52,56,60],"span",{"class":50,"line":51},"line",1,[48,53,55],{"class":54},"s9eBZ","name",[48,57,59],{"class":58},"sVt8B",": ",[48,61,63],{"class":62},"sZZnC","Alice\n",[48,65,67,70,72],{"class":50,"line":66},2,[48,68,69],{"class":54},"age",[48,71,59],{"class":58},[48,73,75],{"class":74},"sj4cs","30\n",[48,77,79,82,84],{"class":50,"line":78},3,[48,80,81],{"class":54},"active",[48,83,59],{"class":58},[48,85,86],{"class":74},"true\n",[15,88,89,90,93],{},"Keys are separated from values by a colon followed by a space. The space is mandatory — ",[22,91,92],{},"name:Alice"," is invalid.",[31,95,97],{"id":96},"lists","Lists",[15,99,100],{},"Use a hyphen and space to create a list:",[39,102,104],{"className":41,"code":103,"language":43,"meta":44,"style":44},"skills:\n  - Python\n  - JavaScript\n  - Go\n",[22,105,106,114,122,129],{"__ignoreMap":44},[48,107,108,111],{"class":50,"line":51},[48,109,110],{"class":54},"skills",[48,112,113],{"class":58},":\n",[48,115,116,119],{"class":50,"line":66},[48,117,118],{"class":58},"  - ",[48,120,121],{"class":62},"Python\n",[48,123,124,126],{"class":50,"line":78},[48,125,118],{"class":58},[48,127,128],{"class":62},"JavaScript\n",[48,130,132,134],{"class":50,"line":131},4,[48,133,118],{"class":58},[48,135,136],{"class":62},"Go\n",[15,138,139],{},"Lists can also appear inline:",[39,141,143],{"className":41,"code":142,"language":43,"meta":44,"style":44},"skills: [Python, JavaScript, Go]\n",[22,144,145],{"__ignoreMap":44},[48,146,147,149,152,155,158,161,163,166],{"class":50,"line":51},[48,148,110],{"class":54},[48,150,151],{"class":58},": [",[48,153,154],{"class":62},"Python",[48,156,157],{"class":58},", ",[48,159,160],{"class":62},"JavaScript",[48,162,157],{"class":58},[48,164,165],{"class":62},"Go",[48,167,168],{"class":58},"]\n",[31,170,172],{"id":171},"nested-dictionaries","Nested Dictionaries",[15,174,175],{},"Indentation creates nested structures. Use consistent spaces (2 is the convention) — never tabs:",[39,177,179],{"className":41,"code":178,"language":43,"meta":44,"style":44},"server:\n  port: 3000\n  host: localhost\n  ssl:\n    enabled: true\n    cert: \u002Fetc\u002Fssl\u002Fcert.pem\n",[22,180,181,188,198,208,215,225],{"__ignoreMap":44},[48,182,183,186],{"class":50,"line":51},[48,184,185],{"class":54},"server",[48,187,113],{"class":58},[48,189,190,193,195],{"class":50,"line":66},[48,191,192],{"class":54},"  port",[48,194,59],{"class":58},[48,196,197],{"class":74},"3000\n",[48,199,200,203,205],{"class":50,"line":78},[48,201,202],{"class":54},"  host",[48,204,59],{"class":58},[48,206,207],{"class":62},"localhost\n",[48,209,210,213],{"class":50,"line":131},[48,211,212],{"class":54},"  ssl",[48,214,113],{"class":58},[48,216,218,221,223],{"class":50,"line":217},5,[48,219,220],{"class":54},"    enabled",[48,222,59],{"class":58},[48,224,86],{"class":74},[48,226,228,231,233],{"class":50,"line":227},6,[48,229,230],{"class":54},"    cert",[48,232,59],{"class":58},[48,234,235],{"class":62},"\u002Fetc\u002Fssl\u002Fcert.pem\n",[10,237,239],{"id":238},"data-types","Data Types",[15,241,242],{},"YAML infers types automatically based on how values are written:",[244,245,246,262],"table",{},[247,248,249],"thead",{},[250,251,252,256,259],"tr",{},[253,254,255],"th",{},"Type",[253,257,258],{},"Example",[253,260,261],{},"Parsed As",[263,264,265,281,295,309,323,343],"tbody",{},[250,266,267,271,276],{},[268,269,270],"td",{},"String",[268,272,273],{},[22,274,275],{},"hello",[268,277,278],{},[22,279,280],{},"\"hello\"",[250,282,283,286,291],{},[268,284,285],{},"String (quoted)",[268,287,288],{},[22,289,290],{},"\"123\"",[268,292,293],{},[22,294,290],{},[250,296,297,300,305],{},[268,298,299],{},"Integer",[268,301,302],{},[22,303,304],{},"42",[268,306,307],{},[22,308,304],{},[250,310,311,314,319],{},[268,312,313],{},"Float",[268,315,316],{},[22,317,318],{},"3.14",[268,320,321],{},[22,322,318],{},[250,324,325,328,337],{},[268,326,327],{},"Boolean",[268,329,330,333,334],{},[22,331,332],{},"true"," \u002F ",[22,335,336],{},"false",[268,338,339,333,341],{},[22,340,332],{},[22,342,336],{},[250,344,345,348,357],{},[268,346,347],{},"Null",[268,349,350,353,354],{},[22,351,352],{},"null"," or ",[22,355,356],{},"~",[268,358,359],{},[22,360,352],{},[15,362,363,367,368,157,371,157,374,157,377,157,380,157,383,386],{},[364,365,366],"strong",{},"Watch out:"," Unquoted values like ",[22,369,370],{},"on",[22,372,373],{},"off",[22,375,376],{},"yes",[22,378,379],{},"no",[22,381,382],{},"y",[22,384,385],{},"n"," are parsed as booleans in YAML 1.1. Always quote strings that could be misinterpreted:",[39,388,390],{"className":41,"code":389,"language":43,"meta":44,"style":44},"# YAML 1.1 treats these as booleans!\nfeature_flag: \"on\"      # String (quoted)\nauto_save: \"no\"         # String (quoted)\nanswer: \"yes\"           # String (quoted)\n",[22,391,392,398,411,424],{"__ignoreMap":44},[48,393,394],{"class":50,"line":51},[48,395,397],{"class":396},"sJ8bj","# YAML 1.1 treats these as booleans!\n",[48,399,400,403,405,408],{"class":50,"line":66},[48,401,402],{"class":54},"feature_flag",[48,404,59],{"class":58},[48,406,407],{"class":62},"\"on\"",[48,409,410],{"class":396},"      # String (quoted)\n",[48,412,413,416,418,421],{"class":50,"line":78},[48,414,415],{"class":54},"auto_save",[48,417,59],{"class":58},[48,419,420],{"class":62},"\"no\"",[48,422,423],{"class":396},"         # String (quoted)\n",[48,425,426,429,431,434],{"class":50,"line":131},[48,427,428],{"class":54},"answer",[48,430,59],{"class":58},[48,432,433],{"class":62},"\"yes\"",[48,435,436],{"class":396},"           # String (quoted)\n",[10,438,440],{"id":439},"multiline-strings","Multiline Strings",[15,442,443],{},"YAML gives you two operators for multiline content — and choosing the wrong one changes your output.",[31,445,447,448,451],{"id":446},"literal-block","Literal Block (",[22,449,450],{},"|",")",[15,453,454],{},"Preserves newlines exactly as written:",[39,456,458],{"className":41,"code":457,"language":43,"meta":44,"style":44},"message: |\n  Line one\n  Line two\n  Line three\n",[22,459,460,471,476,481],{"__ignoreMap":44},[48,461,462,465,467],{"class":50,"line":51},[48,463,464],{"class":54},"message",[48,466,59],{"class":58},[48,468,470],{"class":469},"szBVR","|\n",[48,472,473],{"class":50,"line":66},[48,474,475],{"class":62},"  Line one\n",[48,477,478],{"class":50,"line":78},[48,479,480],{"class":62},"  Line two\n",[48,482,483],{"class":50,"line":131},[48,484,485],{"class":62},"  Line three\n",[15,487,488,489,492],{},"Result: ",[22,490,491],{},"\"Line one\\nLine two\\nLine three\\n\""," — note the trailing newline.",[31,494,496,497,451],{"id":495},"folded-block","Folded Block (",[22,498,499],{},">",[15,501,502],{},"Converts newlines to spaces (paragraph style):",[39,504,506],{"className":41,"code":505,"language":43,"meta":44,"style":44},"message: >\n  This is a long paragraph\n  that wraps across multiple\n  lines in the YAML file.\n",[22,507,508,517,522,527],{"__ignoreMap":44},[48,509,510,512,514],{"class":50,"line":51},[48,511,464],{"class":54},[48,513,59],{"class":58},[48,515,516],{"class":469},">\n",[48,518,519],{"class":50,"line":66},[48,520,521],{"class":62},"  This is a long paragraph\n",[48,523,524],{"class":50,"line":78},[48,525,526],{"class":62},"  that wraps across multiple\n",[48,528,529],{"class":50,"line":131},[48,530,531],{"class":62},"  lines in the YAML file.\n",[15,533,488,534],{},[22,535,536],{},"\"This is a long paragraph that wraps across multiple lines in the YAML file.\\n\"",[31,538,540],{"id":539},"quick-reference","Quick Reference",[244,542,543,559],{},[247,544,545],{},[250,546,547,550,553,556],{},[253,548,549],{},"Operator",[253,551,552],{},"Newlines",[253,554,555],{},"Trailing newline",[253,557,558],{},"Use When",[263,560,561,576,591,609,623],{},[250,562,563,567,570,573],{},[268,564,565],{},[22,566,450],{},[268,568,569],{},"Preserved",[268,571,572],{},"Yes",[268,574,575],{},"Code blocks, logs, scripts",[250,577,578,583,585,588],{},[268,579,580],{},[22,581,582],{},"|+",[268,584,569],{},[268,586,587],{},"Yes (extra kept)",[268,589,590],{},"Rare",[250,592,593,598,600,603],{},[268,594,595],{},[22,596,597],{},"|-",[268,599,569],{},[268,601,602],{},"No",[268,604,605,606],{},"Templates, code without trailing ",[22,607,608],{},"\\n",[250,610,611,615,618,620],{},[268,612,613],{},[22,614,499],{},[268,616,617],{},"Folded to spaces",[268,619,572],{},[268,621,622],{},"Prose, descriptions",[250,624,625,630,632,634],{},[268,626,627],{},[22,628,629],{},">-",[268,631,617],{},[268,633,602],{},[268,635,636,637],{},"Paragraphs without trailing ",[22,638,608],{},[10,640,642],{"id":641},"anchors-and-aliases","Anchors and Aliases",[15,644,645,646,649,650,653,654,657],{},"Anchors (",[22,647,648],{},"&name",") define a reusable fragment. Aliases (",[22,651,652],{},"*name",") reference it. The merge key (",[22,655,656],{},"\u003C\u003C",") injects an anchor's content into a mapping:",[39,659,661],{"className":41,"code":660,"language":43,"meta":44,"style":44},"default_config: &default\n  timeout: 30\n  retries: 3\n  verbose: false\n\n# Merge defaults and override specific values\ndevelopment:\n  \u003C\u003C: *default\n  verbose: true\n\nproduction:\n  \u003C\u003C: *default\n  timeout: 60\n  retries: 10\n",[22,662,663,677,686,696,706,712,717,725,738,747,752,760,771,781],{"__ignoreMap":44},[48,664,665,668,670,673],{"class":50,"line":51},[48,666,667],{"class":54},"default_config",[48,669,59],{"class":58},[48,671,672],{"class":469},"&",[48,674,676],{"class":675},"sScJk","default\n",[48,678,679,682,684],{"class":50,"line":66},[48,680,681],{"class":54},"  timeout",[48,683,59],{"class":58},[48,685,75],{"class":74},[48,687,688,691,693],{"class":50,"line":78},[48,689,690],{"class":54},"  retries",[48,692,59],{"class":58},[48,694,695],{"class":74},"3\n",[48,697,698,701,703],{"class":50,"line":131},[48,699,700],{"class":54},"  verbose",[48,702,59],{"class":58},[48,704,705],{"class":74},"false\n",[48,707,708],{"class":50,"line":217},[48,709,711],{"emptyLinePlaceholder":710},true,"\n",[48,713,714],{"class":50,"line":227},[48,715,716],{"class":396},"# Merge defaults and override specific values\n",[48,718,720,723],{"class":50,"line":719},7,[48,721,722],{"class":54},"development",[48,724,113],{"class":58},[48,726,728,731,733,736],{"class":50,"line":727},8,[48,729,730],{"class":74},"  \u003C\u003C",[48,732,59],{"class":58},[48,734,735],{"class":469},"*",[48,737,676],{"class":58},[48,739,741,743,745],{"class":50,"line":740},9,[48,742,700],{"class":54},[48,744,59],{"class":58},[48,746,86],{"class":74},[48,748,750],{"class":50,"line":749},10,[48,751,711],{"emptyLinePlaceholder":710},[48,753,755,758],{"class":50,"line":754},11,[48,756,757],{"class":54},"production",[48,759,113],{"class":58},[48,761,763,765,767,769],{"class":50,"line":762},12,[48,764,730],{"class":74},[48,766,59],{"class":58},[48,768,735],{"class":469},[48,770,676],{"class":58},[48,772,774,776,778],{"class":50,"line":773},13,[48,775,681],{"class":54},[48,777,59],{"class":58},[48,779,780],{"class":74},"60\n",[48,782,784,786,788],{"class":50,"line":783},14,[48,785,690],{"class":54},[48,787,59],{"class":58},[48,789,790],{"class":74},"10\n",[15,792,793],{},[364,794,795],{},"Key points:",[797,798,799,803,806,809],"ul",{},[800,801,802],"li",{},"Anchors work within a single file only.",[800,804,805],{},"You can override merged values by listing them after the merge key.",[800,807,808],{},"Aliases cannot create circular references.",[800,810,811],{},"When converting YAML to JSON, all anchors expand inline — the deduplication is lost.",[10,813,815],{"id":814},"explicit-type-tags","Explicit Type Tags",[15,817,818,819,822],{},"YAML lets you force a specific type with ",[22,820,821],{},"!!"," tags:",[39,824,826],{"className":41,"code":825,"language":43,"meta":44,"style":44},"count: !!int \"42\"          # Integer 42\nprice: !!float \"9.99\"      # Float 9.99\nflag: !!bool \"yes\"         # Boolean true\nlabel: !!str 123           # String \"123\"\nempty: !!null \"\"           # null\ntimestamp: !!timestamp \"2026-01-15\"\n",[22,827,828,844,860,876,892,908],{"__ignoreMap":44},[48,829,830,833,835,838,841],{"class":50,"line":51},[48,831,832],{"class":54},"count",[48,834,59],{"class":58},[48,836,837],{"class":469},"!!int",[48,839,840],{"class":62}," \"42\"",[48,842,843],{"class":396},"          # Integer 42\n",[48,845,846,849,851,854,857],{"class":50,"line":66},[48,847,848],{"class":54},"price",[48,850,59],{"class":58},[48,852,853],{"class":469},"!!float",[48,855,856],{"class":62}," \"9.99\"",[48,858,859],{"class":396},"      # Float 9.99\n",[48,861,862,865,867,870,873],{"class":50,"line":78},[48,863,864],{"class":54},"flag",[48,866,59],{"class":58},[48,868,869],{"class":469},"!!bool",[48,871,872],{"class":62}," \"yes\"",[48,874,875],{"class":396},"         # Boolean true\n",[48,877,878,881,883,886,889],{"class":50,"line":131},[48,879,880],{"class":54},"label",[48,882,59],{"class":58},[48,884,885],{"class":469},"!!str",[48,887,888],{"class":74}," 123",[48,890,891],{"class":396},"           # String \"123\"\n",[48,893,894,897,899,902,905],{"class":50,"line":217},[48,895,896],{"class":54},"empty",[48,898,59],{"class":58},[48,900,901],{"class":469},"!!null",[48,903,904],{"class":62}," \"\"",[48,906,907],{"class":396},"           # null\n",[48,909,910,913,915,918],{"class":50,"line":227},[48,911,912],{"class":54},"timestamp",[48,914,59],{"class":58},[48,916,917],{"class":469},"!!timestamp",[48,919,920],{"class":62}," \"2026-01-15\"\n",[15,922,923],{},"Use type tags when the inferred type is wrong or ambiguous. They are especially helpful for values that YAML might misparse.",[10,925,927],{"id":926},"common-pitfalls","Common Pitfalls",[31,929,931],{"id":930},"_1-indentation-errors","1. Indentation Errors",[15,933,934],{},"YAML is picky about indentation. Mixing spaces and tabs, or using inconsistent depths, causes parse errors:",[39,936,938],{"className":41,"code":937,"language":43,"meta":44,"style":44},"# WRONG — mixed indentation\nserver:\n  port: 3000\n    host: localhost    # Tab here — parser error!\n\n# RIGHT — consistent 2-space indentation\nserver:\n  port: 3000\n  host: localhost\n",[22,939,940,945,951,959,972,976,981,987,995],{"__ignoreMap":44},[48,941,942],{"class":50,"line":51},[48,943,944],{"class":396},"# WRONG — mixed indentation\n",[48,946,947,949],{"class":50,"line":66},[48,948,185],{"class":54},[48,950,113],{"class":58},[48,952,953,955,957],{"class":50,"line":78},[48,954,192],{"class":54},[48,956,59],{"class":58},[48,958,197],{"class":74},[48,960,961,964,966,969],{"class":50,"line":131},[48,962,963],{"class":54},"    host",[48,965,59],{"class":58},[48,967,968],{"class":62},"localhost",[48,970,971],{"class":396},"    # Tab here — parser error!\n",[48,973,974],{"class":50,"line":217},[48,975,711],{"emptyLinePlaceholder":710},[48,977,978],{"class":50,"line":227},[48,979,980],{"class":396},"# RIGHT — consistent 2-space indentation\n",[48,982,983,985],{"class":50,"line":719},[48,984,185],{"class":54},[48,986,113],{"class":58},[48,988,989,991,993],{"class":50,"line":727},[48,990,192],{"class":54},[48,992,59],{"class":58},[48,994,197],{"class":74},[48,996,997,999,1001],{"class":50,"line":740},[48,998,202],{"class":54},[48,1000,59],{"class":58},[48,1002,207],{"class":62},[15,1004,1005,1008],{},[364,1006,1007],{},"Rule:"," Configure your editor to convert tabs to spaces. Set the indent size to 2.",[31,1010,1012],{"id":1011},"_2-unquoted-special-characters","2. Unquoted Special Characters",[15,1014,1015,1016,157,1019,157,1022,157,1025,157,1028,157,1031,157,1034,157,1036,157,1038,157,1041,157,1044,157,1046,157,1049,157,1052,157,1054,157,1057,157,1060,157,1063,1066,1067,1070],{},"Strings containing ",[22,1017,1018],{},":",[22,1020,1021],{},"{",[22,1023,1024],{},"}",[22,1026,1027],{},"[",[22,1029,1030],{},"]",[22,1032,1033],{},",",[22,1035,672],{},[22,1037,735],{},[22,1039,1040],{},"#",[22,1042,1043],{},"?",[22,1045,450],{},[22,1047,1048],{},"-",[22,1050,1051],{},"\u003C",[22,1053,499],{},[22,1055,1056],{},"=",[22,1058,1059],{},"!",[22,1061,1062],{},"%",[22,1064,1065],{},"@",", or ",[22,1068,1069],{},"`"," must be quoted:",[39,1072,1074],{"className":41,"code":1073,"language":43,"meta":44,"style":44},"# WRONG — colon causes parsing issues\nurl: http:\u002F\u002Fexample.com:8080\n\n# RIGHT\nurl: \"http:\u002F\u002Fexample.com:8080\"\n",[22,1075,1076,1081,1091,1095,1100],{"__ignoreMap":44},[48,1077,1078],{"class":50,"line":51},[48,1079,1080],{"class":396},"# WRONG — colon causes parsing issues\n",[48,1082,1083,1086,1088],{"class":50,"line":66},[48,1084,1085],{"class":54},"url",[48,1087,59],{"class":58},[48,1089,1090],{"class":62},"http:\u002F\u002Fexample.com:8080\n",[48,1092,1093],{"class":50,"line":78},[48,1094,711],{"emptyLinePlaceholder":710},[48,1096,1097],{"class":50,"line":131},[48,1098,1099],{"class":396},"# RIGHT\n",[48,1101,1102,1104,1106],{"class":50,"line":217},[48,1103,1085],{"class":54},[48,1105,59],{"class":58},[48,1107,1108],{"class":62},"\"http:\u002F\u002Fexample.com:8080\"\n",[31,1110,1112],{"id":1111},"_3-tabs-instead-of-spaces","3. Tabs Instead of Spaces",[15,1114,1115],{},"YAML forbids tabs for indentation. A single tab anywhere in the indentation will produce a cryptic parse error. Configure your editor to use spaces.",[31,1117,1119],{"id":1118},"_4-boolean-coercion-pitfalls","4. Boolean Coercion Pitfalls",[15,1121,1122],{},"In YAML 1.1, many values are booleans:",[244,1124,1125,1135],{},[247,1126,1127],{},[250,1128,1129,1132],{},[253,1130,1131],{},"Value",[253,1133,1134],{},"Parsed As (YAML 1.1)",[263,1136,1137,1153,1172,1187,1202,1215],{},[250,1138,1139,1149],{},[268,1140,1141,157,1143,157,1146],{},[22,1142,370],{},[22,1144,1145],{},"On",[22,1147,1148],{},"ON",[268,1150,1151],{},[22,1152,332],{},[250,1154,1155,1165],{},[268,1156,1157,157,1159,157,1162],{},[22,1158,373],{},[22,1160,1161],{},"Off",[22,1163,1164],{},"OFF",[268,1166,1167,333,1169,1171],{},[22,1168,332],{},[22,1170,336],{}," varies",[250,1173,1174,1183],{},[268,1175,1176,157,1178,157,1180],{},[22,1177,376],{},[22,1179,572],{},[22,1181,1182],{},"YES",[268,1184,1185],{},[22,1186,332],{},[250,1188,1189,1198],{},[268,1190,1191,157,1193,157,1195],{},[22,1192,379],{},[22,1194,602],{},[22,1196,1197],{},"NO",[268,1199,1200],{},[22,1201,336],{},[250,1203,1204,1211],{},[268,1205,1206,157,1208],{},[22,1207,382],{},[22,1209,1210],{},"Y",[268,1212,1213],{},[22,1214,332],{},[250,1216,1217,1224],{},[268,1218,1219,157,1221],{},[22,1220,385],{},[22,1222,1223],{},"N",[268,1225,1226],{},[22,1227,336],{},[15,1229,1230,1233,1234,1236,1237,1239],{},[364,1231,1232],{},"YAML 1.2"," (the latest spec) only recognizes ",[22,1235,332],{}," and ",[22,1238,336],{}," as booleans. But many parsers still use YAML 1.1 by default. Always quote ambiguous values.",[10,1241,1243],{"id":1242},"practical-examples","Practical Examples",[31,1245,1247],{"id":1246},"docker-compose","Docker Compose",[39,1249,1251],{"className":41,"code":1250,"language":43,"meta":44,"style":44},"services:\n  web:\n    image: nginx:latest\n    ports:\n      - \"80:80\"\n      - \"443:443\"\n    volumes:\n      - .\u002Fhtml:\u002Fusr\u002Fshare\u002Fnginx\u002Fhtml\n    restart: unless-stopped\n\n  db:\n    image: postgres:16\n    environment:\n      POSTGRES_DB: myapp\n      POSTGRES_PASSWORD: secret\n    volumes:\n      - pgdata:\u002Fvar\u002Flib\u002Fpostgresql\u002Fdata\n\nvolumes:\n  pgdata:\n",[22,1252,1253,1260,1267,1277,1284,1292,1299,1306,1313,1323,1327,1334,1343,1350,1360,1371,1378,1386,1391,1399],{"__ignoreMap":44},[48,1254,1255,1258],{"class":50,"line":51},[48,1256,1257],{"class":54},"services",[48,1259,113],{"class":58},[48,1261,1262,1265],{"class":50,"line":66},[48,1263,1264],{"class":54},"  web",[48,1266,113],{"class":58},[48,1268,1269,1272,1274],{"class":50,"line":78},[48,1270,1271],{"class":54},"    image",[48,1273,59],{"class":58},[48,1275,1276],{"class":62},"nginx:latest\n",[48,1278,1279,1282],{"class":50,"line":131},[48,1280,1281],{"class":54},"    ports",[48,1283,113],{"class":58},[48,1285,1286,1289],{"class":50,"line":217},[48,1287,1288],{"class":58},"      - ",[48,1290,1291],{"class":62},"\"80:80\"\n",[48,1293,1294,1296],{"class":50,"line":227},[48,1295,1288],{"class":58},[48,1297,1298],{"class":62},"\"443:443\"\n",[48,1300,1301,1304],{"class":50,"line":719},[48,1302,1303],{"class":54},"    volumes",[48,1305,113],{"class":58},[48,1307,1308,1310],{"class":50,"line":727},[48,1309,1288],{"class":58},[48,1311,1312],{"class":62},".\u002Fhtml:\u002Fusr\u002Fshare\u002Fnginx\u002Fhtml\n",[48,1314,1315,1318,1320],{"class":50,"line":740},[48,1316,1317],{"class":54},"    restart",[48,1319,59],{"class":58},[48,1321,1322],{"class":62},"unless-stopped\n",[48,1324,1325],{"class":50,"line":749},[48,1326,711],{"emptyLinePlaceholder":710},[48,1328,1329,1332],{"class":50,"line":754},[48,1330,1331],{"class":54},"  db",[48,1333,113],{"class":58},[48,1335,1336,1338,1340],{"class":50,"line":762},[48,1337,1271],{"class":54},[48,1339,59],{"class":58},[48,1341,1342],{"class":62},"postgres:16\n",[48,1344,1345,1348],{"class":50,"line":773},[48,1346,1347],{"class":54},"    environment",[48,1349,113],{"class":58},[48,1351,1352,1355,1357],{"class":50,"line":783},[48,1353,1354],{"class":54},"      POSTGRES_DB",[48,1356,59],{"class":58},[48,1358,1359],{"class":62},"myapp\n",[48,1361,1363,1366,1368],{"class":50,"line":1362},15,[48,1364,1365],{"class":54},"      POSTGRES_PASSWORD",[48,1367,59],{"class":58},[48,1369,1370],{"class":62},"secret\n",[48,1372,1374,1376],{"class":50,"line":1373},16,[48,1375,1303],{"class":54},[48,1377,113],{"class":58},[48,1379,1381,1383],{"class":50,"line":1380},17,[48,1382,1288],{"class":58},[48,1384,1385],{"class":62},"pgdata:\u002Fvar\u002Flib\u002Fpostgresql\u002Fdata\n",[48,1387,1389],{"class":50,"line":1388},18,[48,1390,711],{"emptyLinePlaceholder":710},[48,1392,1394,1397],{"class":50,"line":1393},19,[48,1395,1396],{"class":54},"volumes",[48,1398,113],{"class":58},[48,1400,1402,1405],{"class":50,"line":1401},20,[48,1403,1404],{"class":54},"  pgdata",[48,1406,113],{"class":58},[31,1408,1410],{"id":1409},"github-actions","GitHub Actions",[39,1412,1414],{"className":41,"code":1413,"language":43,"meta":44,"style":44},"name: CI Pipeline\non:\n  push:\n    branches: [main]\n  pull_request:\n    branches: [main]\n\njobs:\n  test:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v4\n      - uses: actions\u002Fsetup-node@v4\n        with:\n          node-version: 20\n      - run: npm ci\n      - run: npm test\n",[22,1415,1416,1425,1431,1438,1450,1457,1467,1471,1478,1485,1495,1502,1514,1525,1532,1542,1554],{"__ignoreMap":44},[48,1417,1418,1420,1422],{"class":50,"line":51},[48,1419,55],{"class":54},[48,1421,59],{"class":58},[48,1423,1424],{"class":62},"CI Pipeline\n",[48,1426,1427,1429],{"class":50,"line":66},[48,1428,370],{"class":74},[48,1430,113],{"class":58},[48,1432,1433,1436],{"class":50,"line":78},[48,1434,1435],{"class":54},"  push",[48,1437,113],{"class":58},[48,1439,1440,1443,1445,1448],{"class":50,"line":131},[48,1441,1442],{"class":54},"    branches",[48,1444,151],{"class":58},[48,1446,1447],{"class":62},"main",[48,1449,168],{"class":58},[48,1451,1452,1455],{"class":50,"line":217},[48,1453,1454],{"class":54},"  pull_request",[48,1456,113],{"class":58},[48,1458,1459,1461,1463,1465],{"class":50,"line":227},[48,1460,1442],{"class":54},[48,1462,151],{"class":58},[48,1464,1447],{"class":62},[48,1466,168],{"class":58},[48,1468,1469],{"class":50,"line":719},[48,1470,711],{"emptyLinePlaceholder":710},[48,1472,1473,1476],{"class":50,"line":727},[48,1474,1475],{"class":54},"jobs",[48,1477,113],{"class":58},[48,1479,1480,1483],{"class":50,"line":740},[48,1481,1482],{"class":54},"  test",[48,1484,113],{"class":58},[48,1486,1487,1490,1492],{"class":50,"line":749},[48,1488,1489],{"class":54},"    runs-on",[48,1491,59],{"class":58},[48,1493,1494],{"class":62},"ubuntu-latest\n",[48,1496,1497,1500],{"class":50,"line":754},[48,1498,1499],{"class":54},"    steps",[48,1501,113],{"class":58},[48,1503,1504,1506,1509,1511],{"class":50,"line":762},[48,1505,1288],{"class":58},[48,1507,1508],{"class":54},"uses",[48,1510,59],{"class":58},[48,1512,1513],{"class":62},"actions\u002Fcheckout@v4\n",[48,1515,1516,1518,1520,1522],{"class":50,"line":773},[48,1517,1288],{"class":58},[48,1519,1508],{"class":54},[48,1521,59],{"class":58},[48,1523,1524],{"class":62},"actions\u002Fsetup-node@v4\n",[48,1526,1527,1530],{"class":50,"line":783},[48,1528,1529],{"class":54},"        with",[48,1531,113],{"class":58},[48,1533,1534,1537,1539],{"class":50,"line":1362},[48,1535,1536],{"class":54},"          node-version",[48,1538,59],{"class":58},[48,1540,1541],{"class":74},"20\n",[48,1543,1544,1546,1549,1551],{"class":50,"line":1373},[48,1545,1288],{"class":58},[48,1547,1548],{"class":54},"run",[48,1550,59],{"class":58},[48,1552,1553],{"class":62},"npm ci\n",[48,1555,1556,1558,1560,1562],{"class":50,"line":1380},[48,1557,1288],{"class":58},[48,1559,1548],{"class":54},[48,1561,59],{"class":58},[48,1563,1564],{"class":62},"npm test\n",[31,1566,1568],{"id":1567},"kubernetes-manifest","Kubernetes Manifest",[39,1570,1572],{"className":41,"code":1571,"language":43,"meta":44,"style":44},"apiVersion: apps\u002Fv1\nkind: Deployment\nmetadata:\n  name: myapp\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: myapp\n  template:\n    metadata:\n      labels:\n        app: myapp\n    spec:\n      containers:\n        - name: myapp\n          image: myapp:1.0.0\n          ports:\n            - containerPort: 3000\n",[22,1573,1574,1584,1594,1601,1610,1617,1626,1633,1640,1649,1656,1663,1670,1679,1686,1693,1704,1714,1721],{"__ignoreMap":44},[48,1575,1576,1579,1581],{"class":50,"line":51},[48,1577,1578],{"class":54},"apiVersion",[48,1580,59],{"class":58},[48,1582,1583],{"class":62},"apps\u002Fv1\n",[48,1585,1586,1589,1591],{"class":50,"line":66},[48,1587,1588],{"class":54},"kind",[48,1590,59],{"class":58},[48,1592,1593],{"class":62},"Deployment\n",[48,1595,1596,1599],{"class":50,"line":78},[48,1597,1598],{"class":54},"metadata",[48,1600,113],{"class":58},[48,1602,1603,1606,1608],{"class":50,"line":131},[48,1604,1605],{"class":54},"  name",[48,1607,59],{"class":58},[48,1609,1359],{"class":62},[48,1611,1612,1615],{"class":50,"line":217},[48,1613,1614],{"class":54},"spec",[48,1616,113],{"class":58},[48,1618,1619,1622,1624],{"class":50,"line":227},[48,1620,1621],{"class":54},"  replicas",[48,1623,59],{"class":58},[48,1625,695],{"class":74},[48,1627,1628,1631],{"class":50,"line":719},[48,1629,1630],{"class":54},"  selector",[48,1632,113],{"class":58},[48,1634,1635,1638],{"class":50,"line":727},[48,1636,1637],{"class":54},"    matchLabels",[48,1639,113],{"class":58},[48,1641,1642,1645,1647],{"class":50,"line":740},[48,1643,1644],{"class":54},"      app",[48,1646,59],{"class":58},[48,1648,1359],{"class":62},[48,1650,1651,1654],{"class":50,"line":749},[48,1652,1653],{"class":54},"  template",[48,1655,113],{"class":58},[48,1657,1658,1661],{"class":50,"line":754},[48,1659,1660],{"class":54},"    metadata",[48,1662,113],{"class":58},[48,1664,1665,1668],{"class":50,"line":762},[48,1666,1667],{"class":54},"      labels",[48,1669,113],{"class":58},[48,1671,1672,1675,1677],{"class":50,"line":773},[48,1673,1674],{"class":54},"        app",[48,1676,59],{"class":58},[48,1678,1359],{"class":62},[48,1680,1681,1684],{"class":50,"line":783},[48,1682,1683],{"class":54},"    spec",[48,1685,113],{"class":58},[48,1687,1688,1691],{"class":50,"line":1362},[48,1689,1690],{"class":54},"      containers",[48,1692,113],{"class":58},[48,1694,1695,1698,1700,1702],{"class":50,"line":1373},[48,1696,1697],{"class":58},"        - ",[48,1699,55],{"class":54},[48,1701,59],{"class":58},[48,1703,1359],{"class":62},[48,1705,1706,1709,1711],{"class":50,"line":1380},[48,1707,1708],{"class":54},"          image",[48,1710,59],{"class":58},[48,1712,1713],{"class":62},"myapp:1.0.0\n",[48,1715,1716,1719],{"class":50,"line":1388},[48,1717,1718],{"class":54},"          ports",[48,1720,113],{"class":58},[48,1722,1723,1726,1729,1731],{"class":50,"line":1393},[48,1724,1725],{"class":58},"            - ",[48,1727,1728],{"class":54},"containerPort",[48,1730,59],{"class":58},[48,1732,197],{"class":74},[10,1734,1736],{"id":1735},"key-takeaways","Key Takeaways",[797,1738,1739,1742,1745,1754,1762,1774],{},[800,1740,1741],{},"Use consistent 2-space indentation — never tabs.",[800,1743,1744],{},"Quote strings containing colons, special characters, or boolean-like values.",[800,1746,1747,1748,1750,1751,1753],{},"Use ",[22,1749,450],{}," to preserve newlines, ",[22,1752,499],{}," to fold them into spaces.",[800,1755,645,1756,1758,1759,1761],{},[22,1757,672],{},") and aliases (",[22,1760,735],{},") reduce repetition in large configs.",[800,1763,1764,1765,157,1767,157,1769,157,1771,1773],{},"Beware YAML 1.1 boolean coercion — ",[22,1766,376],{},[22,1768,379],{},[22,1770,370],{},[22,1772,373],{}," are not strings.",[800,1775,1776],{},"Always validate your YAML files before deploying.",[10,1778,1780],{"id":1779},"try-it-yourself","Try It Yourself",[15,1782,1783],{},"Want to validate or convert your YAML? Try this tool:",[797,1785,1786],{},[800,1787,1788,1793],{},[1789,1790,1792],"a",{"href":1791},"\u002Ftools\u002Fjson-yaml","JSON to YAML Converter"," — Convert between JSON and YAML formats instantly",[10,1795,1797],{"id":1796},"related-guides","Related Guides",[797,1799,1800,1807],{},[800,1801,1802,1806],{},[1789,1803,1805],{"href":1804},"\u002Fguides\u002Fjson-vs-yaml","JSON vs YAML"," — Compare both formats side by side with a decision tree",[800,1808,1809,1813],{},[1789,1810,1812],{"href":1811},"\u002Fguides\u002Fconfiguration-file-formats","Configuration File Formats"," — Compare JSON, YAML, TOML, and INI for your next project",[1815,1816,1817],"style",{},"html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}",{"title":44,"searchDepth":66,"depth":66,"links":1819},[1820,1821,1826,1827,1834,1835,1836,1842,1847,1848,1849],{"id":12,"depth":66,"text":13},{"id":28,"depth":66,"text":29,"children":1822},[1823,1824,1825],{"id":33,"depth":78,"text":34},{"id":96,"depth":78,"text":97},{"id":171,"depth":78,"text":172},{"id":238,"depth":66,"text":239},{"id":439,"depth":66,"text":440,"children":1828},[1829,1831,1833],{"id":446,"depth":78,"text":1830},"Literal Block (|)",{"id":495,"depth":78,"text":1832},"Folded Block (>)",{"id":539,"depth":78,"text":540},{"id":641,"depth":66,"text":642},{"id":814,"depth":66,"text":815},{"id":926,"depth":66,"text":927,"children":1837},[1838,1839,1840,1841],{"id":930,"depth":78,"text":931},{"id":1011,"depth":78,"text":1012},{"id":1111,"depth":78,"text":1112},{"id":1118,"depth":78,"text":1119},{"id":1242,"depth":66,"text":1243,"children":1843},[1844,1845,1846],{"id":1246,"depth":78,"text":1247},{"id":1409,"depth":78,"text":1410},{"id":1567,"depth":78,"text":1568},{"id":1735,"depth":66,"text":1736},{"id":1779,"depth":66,"text":1780},{"id":1796,"depth":66,"text":1797},"2026-05-28","Learn YAML syntax — scalars, lists, dictionaries, anchors, multiline strings, and common pitfalls with clear examples.","md",{"immutable":710},"\u002Fguides\u002Fyaml-syntax-guide",{"title":5,"description":1851},"guides\u002Fyaml-syntax-guide","o-i1Gazu1LH8iJuZzNPQiu8nnRB0QtUvGp5sZZOM1Bo",1780401326647]