Text and markup
Human-readable formats for APIs, configuration files and documents: JSON, XML, YAML and TOML.
How they work
These are plain text that people read and edit as often as programs do. JSON is the data format of web APIs, defined by one small grammar. XML marks up trees of tagged text and still defines Office documents, SVG and RSS feeds. YAML and TOML are mostly used for configuration, from Kubernetes manifests in YAML to Cargo.toml and pyproject.toml in TOML.
They differ most in how they handle types. JSON has strings, numbers, booleans, null, arrays and objects, and nothing else, not even comments or dates. XML is all text until a schema adds types. YAML guesses a type from how a value looks, so under YAML 1.1 rules no reads as false, while TOML quotes every string and guesses nothing.
Technologies
What all file formats have in common →| Open source | IETF and Ecma International (open standard) | Open standard, free to use; ECMA-404 is also ISO/IEC 21778 | 2026-10-06 | |
| Open source | toml-lang project, started by Tom Preston-Werner (open specification) | MIT (the specification repository) | 2026-10-06 | |
| Open source | W3C (open standard) | Open standard, free to implement (W3C Recommendation) | 2026-10-06 | |
| Open source | YAML Language Development Team (open specification at yaml.org) | Open specification, free to implement; the spec may be freely copied unmodified | 2026-10-06 |
Sources
- RFC 8259: The JavaScript Object Notation (JSON) Data Interchange Format
- W3C: Extensible Markup Language (XML) 1.0, Fifth Edition
- ECMA-376: Office Open XML file formats
- W3C: Scalable Vector Graphics (SVG) 2, a language based on XML
- RSS Advisory Board: RSS 2.0 specification
- YAML Ain’t Markup Language, revision 1.2.2
- Boolean language-independent type for YAML 1.1 (yes, no, on, off)
- Kubernetes docs: Objects in Kubernetes (manifests in YAML)
- TOML v1.1.0 specification
- The Cargo Book: The manifest format (Cargo.toml is written in TOML)
- Python Packaging User Guide: Writing your pyproject.toml