JSON vs YAML vs XML: which format should you use?
By Uxair Ijaz · 2026-10-22 · 2 min read
JSON, YAML and XML can all describe the same data. Here is one small record in each:
{ "name": "Ada", "languages": ["en", "fr"], "active": true }
name: Ada
languages:
- en
- fr
active: true
<person active="true">
<name>Ada</name>
<languages><language>en</language><language>fr</language></languages>
</person>
JSON: the default for APIs
Strengths: tiny grammar, native to JavaScript, supported by every language, fast to parse. Weaknesses: no comments, strict about commas and quotes, no dates (they travel as strings).
The errors people hit most often:
- A trailing comma after the last item:
[1, 2, 3,]. - Single quotes instead of double quotes around strings or keys.
- Unquoted keys, which JavaScript allows but JSON does not.
- Comments, which JSON does not support at all.
The JSON validator points to the exact line and column of each of these, with a hint on how to fix it.
YAML: configuration humans edit
Strengths: readable, supports comments, great for config files (Kubernetes, GitHub Actions, Docker Compose). Weaknesses: whitespace matters, and some values change type by surprise:
no,offandyescan become booleans in older YAML parsers (the "Norway problem": the country codeNOturning intofalse).1.10becomes the number 1.1. Quote version numbers.- Tabs are not allowed for indentation.
YAML is a superset of JSON, so any JSON file is also valid YAML. Convert with JSON to YAML, or tidy a file with the YAML formatter.
XML: documents and older systems
Strengths: attributes and mixed content, schemas (XSD) for strict validation, namespaces, mature tooling. It is still everywhere in banking, government, SOAP services, Office files and RSS. Weaknesses: verbose, and there is no single obvious way to map it to objects (attribute or element? one item or a list?).
To work with XML in a JSON world, use XML to JSON; to read it, the XML formatter.
Which should I choose?
- Data between programs, especially web APIs → JSON.
- Config files people edit by hand → YAML, or JSON with comments if your tools allow it.
- Documents, strict schemas, or a system that already speaks it → XML.
The data format converter moves data between all three, plus CSV.