Cómo se usa
Elige el sentido en las pestañas de arriba (JSON → YAML o YAML → JSON) y pega tus datos en el cuadro de entrada: el resultado aparece al momento. En JSON → YAML puedes elegir la sangría (2 o 4 espacios) y ordenar las claves; en YAML → JSON, la sangría (2 espacios, 4 espacios o tabulador) y si quieres agrupar varios documentos en un array. Puedes copiar el resultado o descargarlo como archivo .yaml o .json. Con «Abrir archivo» cargas un archivo .json, .yaml o .yml, y el sentido se elige según su extensión. Al cambiar de sentido, el resultado que acabas de obtener pasa al cuadro de entrada para que puedas volver a convertirlo. Si la entrada no es válida, en lugar del resultado verás la línea y la columna del problema junto con el código que lo rodea.
La biblioteca yaml se descarga en la primera conversión.
Relación entre JSON y YAML
Los dos formatos describen datos con objetos (mapeos), arrays (secuencias), cadenas, números, booleanos y null. JSON marca la estructura con llaves, corchetes y comillas dobles; YAML usa sobre todo la sangría, - y :, lo que lo hace más fácil de leer y editar para las personas. YAML 1.2, publicado en 2009, tenía como objetivo principal convertir YAML en un superconjunto estricto de JSON. Por eso un JSON válido casi siempre se puede leer también como YAML, y puedes pegar JSON en el modo YAML → JSON. Al revés no funciona: lo que JSON no tiene —comentarios, anclas, varios documentos— se pierde o se expande al pasar a JSON.
Qué cambia en la conversión
- Comentarios: la gramática de JSON (RFC 8259) no tiene sitio para los comentarios, así que al convertir YAML a JSON se pierden todos. La propia especificación de YAML establece que los comentarios son un detalle de presentación que no afecta a los datos. Si necesitas dejar una nota, escríbela antes de convertir como una clave con un valor de cadena, por ejemplo
_comment: "staging port"; en el resultado aparece como"_comment": "staging port". No todos los#son un comentario: un#sin espacio delante, como enhttp://a.com/#frag, y un#dentro de comillas siguen formando parte del valor. Si la entrada solo contiene comentarios, sale el error «No hay ningún documento YAML que convertir. Comprueba si la entrada solo tiene comentarios.» - Anclas y alias (
&name,*name): el valor al que apuntan se copia en su lugar. Para frenar el ataque «billion laughs», en el que los alias se multiplican de forma exponencial, la conversión se detiene si los alias se expanden demasiadas veces (límite por defecto de la biblioteca yaml,maxAliasCount100). Un archivo normal, que no es un ataque, también se detiene con el mismo error cuando una misma ancla se referencia con 100 alias (con 99 todavía se convierte; el tamaño del valor no influye y una fusión<<cuenta como uno). Si un valor que contiene alias se referencia a su vez con un alias, las cifras se multiplican y la conversión se detiene antes. En ese caso, sustituye algunos alias de esa ancla por sus valores. - Claves de fusión (
<<): no forman parte de los esquemas de YAML 1.2, pero se usan mucho en archivos de configuración como los de docker compose, así que se expanden según las reglas de fusión de YAML 1.1. - Varios documentos (
---): en YAML → JSON, con «Agrupar varios documentos (—) en un array» activado (opción por defecto), cada documento pasa a ser un elemento de un array JSON, y junto al resultado se muestra cuántos hay, por ejemplo «3 documentos». Si lo desactivas, solo se convierte el primero y un aviso te indica cuántos han quedado fuera. Un documento único no se mete nunca en un array, esté la opción activada o no. Si el archivo termina con un---sin nada detrás, cuenta como un documento vacío y añade unnullal final del array; borra esa línea si no lo quieres. JSON → YAML escribe siempre un único documento: un array de nivel superior no se divide en documentos separados por---. - Orden de las claves: según ambas especificaciones, las claves de un objeto no tienen orden, pero la herramienta respeta el orden de entrada (las claves con forma de número, como
"2", no se mueven al principio). Activa «Ordenar claves» en JSON → YAML para ordenar las claves de todos los objetos por unidad de código Unicode. - Etiquetas: las que la herramienta no conoce, como
!Ref, se quitan y solo se conserva el valor, con un aviso. En ese caso, un valor etiquetado como!Ref 3o!Ref truepasa a ser una cadena, mientras que los arrays y objetos etiquetados conservan su estructura y los valores que contienen. - Valores que JSON no tiene:
.infy.nanno existen en JSON, así que pasan anullcon un aviso. Las claves YAML que son arrays u objetos se escriben como texto JSON. - Claves duplicadas: la misma clave dos veces en un mapeo YAML incumple la especificación, así que se indica como error. La misma clave dos veces en un objeto JSON conserva solo el último valor, igual que
JSON.parseen el navegador, y muestra un aviso.
El problema de Noruega: yes, no, on, off
YAML 1.1 leía también y, yes, on, n, no y off (con varias combinaciones de mayúsculas) como booleanos. Así que si escribías sin comillas el código de país de Noruega, NO, en una lista, se convertía en false; de ahí el nombre de «problema de Noruega». El esquema core de YAML 1.2 redujo los booleanos a true y false (y sus formas en mayúsculas, como True y TRUE). La herramienta lee YAML con ese criterio, así que NO, yes y off siguen siendo cadenas. No hay ningún ajuste para leer el YAML al estilo de la versión 1.1, así que reescribe en el propio YAML como true o false cada valor que necesites como booleano. Una forma que mezcla mayúsculas y minúsculas, como tRue, es una cadena, y también lo es un valor entre comillas como "true".
Sin embargo, algunas herramientas todavía siguen las reglas de YAML 1.1. Por eso, en el resultado de JSON → YAML se ponen entre comillas dobles las cadenas que un analizador 1.1 podría leer como otra cosa: valores con aspecto de booleano (yes, no, on, off, y, n, etc.), con aspecto de fecha (2026-09-28), en base 60 (1:20), números con guion bajo (1_000) y la clave de fusión <<. Un valor entre comillas es una cadena tanto en 1.1 como en 1.2.
Enteros grandes y precisión numérica
Los números de JavaScript son dobles IEEE 754, así que los enteros mayores que 2^53 - 1 (9007199254740991, 16 cifras) pueden ver cambiadas sus últimas cifras. La herramienta trata los enteros como BigInt en los dos sentidos, de modo que incluso valores grandes como los ID de 64 bits llegan cifra a cifra. En JSON → YAML, un cero final como el de 1.0 se mantiene tal como lo escribiste.
En YAML → JSON, 1.0 se convierte en 1, y un 01234 sin comillas también se lee como entero y pasa a ser 1234; de la misma manera, 1.10 pasa a 1.1, 0x1F a 31 y 0o14 a 12. Un código postal, un número de versión o cualquier otro código que deba conservarse exactamente como lo escribiste necesita comillas en el YAML, por ejemplo "01234"; el JSON lo recibe entonces como cadena. JSON → YAML escribe entre comillas las cadenas con aspecto de número, como "01234" o "12345678901234567890", así que al volver a leer ese YAML siguen saliendo cadenas.
Los decimales se tratan como números de doble precisión en los dos sentidos, así que un decimal con muchas cifras significativas como 0.1234567890123456789 se redondea al doble más cercano en cualquiera de los dos. Los números en notación exponencial cambian de forma: en JSON → YAML, 1e3 sale como 1e+3, y en YAML → JSON, 1e3 sale como 1000. Un valor fuera del rango de doble precisión, como 1e400, se convierte en .inf en JSON → YAML. Si el programa que lee tu JSON trata los enteros grandes como números normales, allí puede perderse precisión; cuando el valor exacto importe, lo más seguro es guardarlo como cadena desde el origen.
Para qué sirve
- Manifiestos de Kubernetes: por convención se escriben en YAML, pero también admiten JSON, y kubectl convierte el manifiesto a JSON u otro formato al llamar a la API. Útil para pasar una respuesta de la API (JSON) a un manifiesto (YAML), o al revés.
- Flujos de trabajo de GitHub Actions: archivos
.ymlo.yamlen la carpeta.github/workflows, con sintaxis YAML. Práctico para pasar a un flujo de trabajo una configuración JSON generada por un script. - docker compose: el nombre de archivo por defecto es
compose.yaml, y las anclas, los alias y las claves de fusión (<<) permiten reutilizar la configuración de los servicios. Al convertir YAML a JSON ves los valores finales con todas las fusiones expandidas.
