Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.

YAML vs. JSON: What is the difference?

Alex Gamela

February 25, 2024

Min Read
YAML vs. JSON: What is the difference?
blue arrow to the left
Imaginary Cloud logo

What is JSON

JSON means JavaScript Object Notation. As you might suspect by the name, JSON derives from JavaScript data formats. It is an open standard, lightweight, text-based format with limited data types. Its short syntax and simple structure make it very easy to read.

It’s used to send data to the server and from server to client, like an envelope in which the data is enclosed and sent back and forward between correspondents.

It’s highly appreciated by programmers who use it in mobile apps, database services like MongoDB or Kubernetes, and user interactions, being a more user-friendly alternative to XML. The simplicity and speed of processing that JSON offers and its high compatibility with any system make it one of the most popular formats in use today.

The JSON History

According to JSON's developer, Douglas Crockford, a language using the same principles was already being used at Netscape in 1996, but JSON only became mainstream as an established syntax in 2001.

It is a go-to resource for Android technology, REST-API, or any situation where data is sent from a server to a web page. It is language-independent, which means it can be used with any programming language. And a huge part of our online experience relies on it.

Tech specs

What are the defining features of a JSON document? JSON file extensions are defined as .json. It uses universal data structures and a limited choice of data types. Its simple syntax uses conventions familiar to programmers of the C-family of languages, like C, C++, C#, Java, JavaScript, Perl, Python, etc. As the official JSON website explains:

“An object is an unordered set of name/value pairs. An object begins with {left brace and ends with }right brace. Each name is followed by :colon, and the name/value pairs are separated by ,comma.”

Data types used by JSON

  • Strings
  • Numbers
  • Object
  • Arrays
  • Boolean (true/false)
  • Null values

Syntax

JSON’s syntax rules are simple.

  • Root node must be an array or an object.
  • Data is designated as name/value pairs.
  • Data entries are separated by commas.
  • Objects are limited between curly braces.
  • Square brackets hold arrays.
  • Objects can have array objects to create lists.
  • It uses quotes around names and values, which are separated by a colon.

JSON Example

Let’s look at a JSON example, using some information about the famous heavy metal band Metallica.


As you can see, curly brackets delimit both the object and the arrays. All items are quoted, and the attribute name is separated from the value by a colon. A comma is used to separate name:value pairings.

Lists are defined by using square brackets, where the array attributes are also separated by commas.

Advantages of JSON

  • Its compact syntax makes JSON very human-readable.
  • Simple syntax with limited markup.
  • Fast parsing by systems and languages.
  • It can be used by most systems and languages.

Disadvantages of JSON

  • Limited data types: only accepts strings, numbers, JSON object, array, boolean, and null.
  • Doesn’t accept: namespace, comment, or attribute.
  • JSON’s structure is meant to be simple, so it may not support complex configurations on its own.

blue arrow to the left
Imaginary Cloud logo

What is YAML

YAML used to mean Yet Another Markup Language, but that meaning changed to YAML Ain't Markup Language to express its data focus over a document focus. Acronyms aside, YAML is a very human-readable, lightweight format, commonly used to store configuration information for DevOps tools like ElasticSearch, Docker, Kubernetes, Prometheus, and Ansible.

Like it says on the official website, also written in YAML format:

“YAML is a human-friendly data serialization language for all programming languages.”

It is a data serialization language, but it is also often used for writing configuration files. We’ll be looking at YAML through the data serialisation prism.

The YAML History

YAML was first publicised in 2001. The founding members of YAML are IngydotNet, Clark Evans, and Oren Ben-Kiki, who joined efforts to create a simpler format than XML. You can read the story from a firsthand perspective. Since then, it has become a workhorse for developers everywhere.

Tech specs

YAML is written in a very clear human-readable format, with the added advantage of supporting comments, making it super easy to edit. Since it is a superset of JSON, a valid YAML file can contain JSON objects. It is suited to support complex data types, with the ability to enclose multi-level objects. This makes it less friendly to use with some technologies.

Data types

YAML accepts the same data types as JSON, the main difference being the ability to support date attributes.

  • Strings
  • Numbers
  • Boolean
  • Dates and timestamps
  • Sequences
  • Nested values
  • Null values

Syntax

The absence of brackets and quotes for most of the functions makes the reading more natural. Even the uninitiated get a quick understanding of what is supposed to happen. YAML’s syntax is its strength but also a source for validation problems if we don’t pay attention to indents and space positions.

  • Uses key-value pairs, separated by colons.
  • Springs are not enclosed in brackets.
  • Indentations are used to define data hierarchy.
  • Lists begin with hyphens.
  • Allows comments by preceding them with a #.
  • Spaces before attributes are important.
  • Pipe Character (|) allows for multiline strings; the “greater than” sign (>) allows multiline strings to be read as a single line.
  • YAML can reference other data objects by using “&”.

YAML Example

Now, see how the same data we used above for JSON looks in YAML format:


On a first impression, YAML looks better than JSON since it gets rid of all the brackets and quotes. It doesn’t read much like code but more as an outline.

Advantages of YAML

  • Very simple human-readable syntax.
  • Compact syntax, which uses Python-style indentation to denote structure.
  • Supports scalers such as int, binary, str, and bool, and collections such as map, set, pairs, and seq.
  • YAML supports comments where JSON does not. Just add a # symbol before the comment.
  • Ability to use complex data structures.
  • By using the “&” symbol, YAML can reuse blocks. This is one of the reasons it is used to describe infrastructure, like Kubernetes stacks. JSON doesn't have an equivalent operation.

Disadvantages of YAML

  • Incorrect indentation or spacing easily generates validation errors.
  • The declarative nature of YAML makes debugging more difficult: the Alpha-Code for Norway (NO) can be interpreted as a boolean value.
  • No breakpoints.
blue arrow to the left
Imaginary Cloud logo

Differences between JSON and YAML

YAML and JSON are two popular languages, similar in structure and usability. Their differences in design, syntax, and functionality make the choice between them a matter of purpose.

blue arrow to the left
Imaginary Cloud logo

YAML vs JSON: Which is better?

When choosing between JSON or YAML format, just follow function: what do you need them to do?

JSON has a faster delivery since it works perfectly as a simple data exchange format. But it is limited to the supported data types, which can require extra resources to deal with data sets with a larger number of data type options. It is easy to read once you’re over the brackets and quotes, which is an advantage since they delimit specific items, reducing the risk of parsing misinterpretation.

YAML, on the other hand, almost doesn’t read like code. And the matryoshka-like ability to include objects within objects allows for greater data complexity. The downside? Such complexity slows down the parsing and generation process. But with a range of complex data types available, it has its appeal and is a great option to expand the types of information to be made available.

The purpose and priority of the information to deliver are also important, and a logical hierarchy should be defined before starting coding. This prior organization will define the structure of the document and how data will be presented.

No matter the choice, it’s all about what your data is supposed to do in the end.

New call-to-action

Found this article useful? You might like these ones too!

blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo
Alex Gamela
Alex Gamela

Content writer and digital media producer with an interest in the symbiotic relationship between tech and society. Books, music, and guitars are a constant.

Read more posts by this author

People who read this post, also found these interesting:

arrow left
arrow to the right
Dropdown caret icon