JSON vs YAML — Syntax Differences and When to Use Each

💡JSON and YAML are both data serialization formats, but YAML is a superset of JSON with more human-friendly syntax. JSON uses braces and quotes; YAML uses indentation. JSON is strict and fast to parse. YAML supports comments and multi-line strings. Use JSON for APIs and data exchange; use YAML for config files. Convert between them with the JSON to YAML converter.

Key Differences — Side by Side

Same data in JSON vs YAML

❌ Wrong

# JSON
{"name": "John", "age": 30, "tags": ["dev", "admin"]}

✅ Fixed

# YAML
name: John
age: 30
tags:
  - dev
  - admin

YAML removes quotes, braces, and brackets for simple structures. More readable but indentation matters.

Comments (YAML only)

❌ Wrong

{
  "port": 3000 // server port — NOT valid JSON
}

✅ Fixed

# Server configuration
port: 3000  # listening port

JSON has no comment syntax. YAML supports # comments — crucial for config files.

Multi-line strings

❌ Wrong

{"sql": "SELECT * FROM users WHERE active = true AND created_at > '2024-01-01'"}

✅ Fixed

sql: |
  SELECT * FROM users
  WHERE active = true
  AND created_at > '2024-01-01'

YAML | literal block scalar preserves newlines. Cleaner for SQL, scripts, and long text.

YAML indentation error

❌ Wrong

config:
  database:
   host: localhost # wrong indent
    port: 5432

✅ Fixed

config:
  database:
    host: localhost
    port: 5432

YAML indentation must be consistent. Mixing spaces causes parse errors — use 2 spaces consistently.

Convert Between Formats

Real-World Context

Docker Compose uses YAML

# docker-compose.yml
services:
  web:
    image: nginx
    ports:
      - '80:80'
    environment:
      - NODE_ENV=production

Config files benefit from YAML's readability and comment support.

REST API response uses JSON

{"users": [{"id": 1, "name": "John"}]}

JSON is the standard for API responses — fast to parse, universally supported.

GitHub Actions workflow is YAML

on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

CI/CD configs are almost always YAML — comments explain why steps exist.

Related Guides

Frequently Asked Questions

Is YAML a superset of JSON?

Yes, valid JSON is valid YAML 1.2. Any JSON file can be parsed by a YAML parser. The reverse is not true — YAML features like comments and anchors are not valid JSON.

Which is faster to parse, JSON or YAML?

JSON is significantly faster to parse. YAML parsers are complex due to the format's flexibility. For performance-critical APIs, JSON is the right choice.

Can I use anchors and aliases in YAML?

Yes. YAML anchors (&name) define reusable values, aliases (*name) reference them. Useful in CI configs to avoid repetition: &defaults followed by <<: *defaults in multiple jobs.

All tools run in your browser. Your data never leaves your device.