YAML
Concepto de Datos y formatos en Utilidades, conectado con sus herramientas y conceptos vecinos.
Actualizado el 31 de agosto de 2026
YAML (YAML Ain’t Markup Language) es un formato de serialización de datos diseñado para ser fácil de leer y escribir por personas. A diferencia de JSON y XML, no usa llaves ni etiquetas: la estructura se expresa con indentación y sangría. Es el formato estándar en Docker Compose, GitHub Actions, Kubernetes, Ansible y la mayoría de herramientas modernas de DevOps, así como en el frontmatter de archivos Markdown.
Tipos de datos en YAML
Escalares (valores simples)
nombre: Ana García # cadena (sin comillas si no hay caracteres especiales)
edad: 32 # entero
salario: 2500.50 # decimal
activo: true # booleano (también: yes, no, on, off)
sin_valor: null # nulo (también: ~)
fecha: 2026-08-31 # fecha (se parsea automáticamente en muchos parsers)
Trampa habitual: las palabras yes, no, true, false, on, off se tratan como booleanos. Si quieres una cadena, usa comillas:
estado: "no" # cadena "no", no booleano false
pais: "NO" # el código ISO de Noruega, no un booleano
Listas
lenguajes:
- Python
- JavaScript
- Rust
# Forma compacta (equivalente)
lenguajes: [Python, JavaScript, Rust]
Mapas (objetos)
persona:
nombre: Ana García
edad: 32
direccion:
calle: Gran Vía 10
ciudad: Madrid
cp: "28013" # entre comillas para preservar el cero inicial
Comentarios
# Esto es un comentario; JSON no los permite
nombre: Ana García # comentario en línea
Los comentarios son una de las principales ventajas de YAML sobre JSON en archivos de configuración: puedes documentar el propósito de cada campo directamente en el fichero.
YAML frente a JSON y XML
| Característica | YAML | JSON | XML |
|---|---|---|---|
| Legibilidad | Muy alta | Moderada | Moderada |
| Comentarios | Sí (#) | No | Sí (<!-- -->) |
| Tipos de datos | Ricos (fechas, anclas) | Básicos | Básicos + atributos |
| Verbosidad | Baja | Media | Alta |
| Velocidad de parseo | Más lenta | Más rápida | Lenta |
| Uso típico | Configuración, DevOps | APIs REST | SOAP, documentos, legado |
YAML es un superconjunto de JSON: cualquier JSON válido es también YAML válido. En APIs REST se prefiere JSON por velocidad y seguridad; para configuración legible por humanos, YAML es la opción habitual.
Anclas y alias: evitar repetición
YAML permite definir un bloque con & (ancla) y reutilizarlo con * (alias) y <<: (merge):
defaults: &defaults
timeout: 30
reintentos: 3
verbose: false
produccion:
<<: *defaults # hereda todos los campos de defaults
verbose: true # sobrescribe solo este campo
staging:
<<: *defaults
timeout: 60
Esta funcionalidad no tiene equivalente en JSON y es especialmente útil en GitHub Actions o Docker Compose para evitar duplicar configuraciones entre entornos.
Cadenas multilínea
YAML ofrece dos formas de manejar cadenas con saltos de línea:
# Literal (|): conserva los saltos de línea
descripcion: |
Primera línea.
Segunda línea.
Tercera línea.
# Plegado (>): convierte los saltos de línea en espacios
descripcion: >
Este texto largo se plegará
en una única línea al parsearse.
Usos más comunes de YAML
- Docker Compose: define servicios, redes y volúmenes en
docker-compose.yml. - GitHub Actions: workflows en
.github/workflows/*.yml. - Kubernetes: manifiestos de pods, deployments y services.
- Frontmatter de Markdown: metadatos al inicio de archivos
.mden generadores como Astro, Jekyll o Hugo. - Ansible: playbooks para automatización de infraestructura.
- OpenAPI/Swagger: especificación de APIs REST.
- ESLint, Prettier, Stylelint: archivos de configuración
.eslintrc.yml, etc.
Conceptos relacionados
Preguntas frecuentes
¿Qué significa YAML?
¿Es YAML un superconjunto de JSON?
¿Qué errores son más frecuentes en YAML?
Ver todas las herramientas de Utilidades.