Conversor de JSON para YAML online

O conversor de JSON para YAML reescreve um JSON no formato YAML, mais enxuto e fácil de ler, usado em arquivos de configuração como os do Kubernetes, do Docker Compose e do GitHub Actions. Você escolhe a indentação e copia ou baixa o resultado. A conversão é feita no seu navegador, sem enviar os dados a nenhum servidor.

Atualizado em · Por Leonardo Gaertner

Achou um resultado errado ou tem uma sugestão? Avise por e-mail.

Como usar

  1. Cole o JSON no campo da esquerda, ou clique em Abrir arquivo.
  2. Escolha a indentação, de 2 ou 4 espaços.
  3. Clique em Copiar resultado ou em Baixar arquivo.

Como funciona

O YAML 1.2 é quase um superconjunto do JSON, então todo JSON pode ser escrito em YAML sem perder informação. Objetos viram pares chave: valor, listas viram itens com hífen e as chaves e os textos dispensam as aspas quando isso não gera ambiguidade.

Textos que poderiam ser lidos como outro tipo ganham aspas. Por exemplo, "123", "true", "null", "yes", "no" e "on" ficam entre aspas, para que o YAML continue lendo texto e não um número ou um booleano, inclusive em bibliotecas mais antigas que seguem o YAML 1.1.

Os textos longos não são quebrados em várias linhas, e textos com quebras de linha usam o bloco literal do YAML (o símbolo | seguido das linhas indentadas), o que preserva o conteúdo exato. O JSON não tem comentários, então o YAML gerado também não terá.

Exemplo

JSON: {"nome":"PraDev","porta":8080,"tags":["dev","grátis"]}

YAML:

nome: PraDev

porta: 8080

tags:

- dev

- grátis

Fonte: YAML 1.2: especificação oficial; RFC 8259: o formato JSON

Em código

Para converter entre YAML e JSON em código, atenção à versão do YAML: o PyYAML segue o 1.1 e lê no como false. Em Python, use sempre safe_load.

JavaScript
import { parse, stringify } from 'yaml'; // npm install yaml

// O pacote yaml segue o YAML 1.2: no, yes e on continuam sendo texto
function yamlParaJson(texto) {
  return JSON.stringify(parse(texto), null, 2);
}

// version '1.1' põe aspas em no, yes, 12:30 e parecidos, para que leitores
// antigos (como o PyYAML) também leiam texto como texto
function jsonParaYaml(texto) {
  return stringify(JSON.parse(texto), { version: '1.1' });
}

Precisa do pacote yaml (npm install yaml).

Python
import json

import yaml  # pip install pyyaml


def yaml_para_json(texto: str) -> str:
    # safe_load: o yaml.load comum pode criar objetos Python a partir do texto
    dados = yaml.safe_load(texto)
    # default=str: o PyYAML transforma 2026-01-01 em date, que o JSON não conhece
    return json.dumps(dados, indent=2, ensure_ascii=False, default=str)


def json_para_yaml(texto: str) -> str:
    return yaml.safe_dump(json.loads(texto), allow_unicode=True, sort_keys=False)

Precisa do PyYAML (pip install pyyaml).

Perguntas frequentes

Todo JSON pode virar YAML sem perder dados?

Sim. O YAML 1.2 foi feito para aceitar JSON válido. A conversão guarda todos os valores, inclusive textos que parecem números ou booleanos, colocando aspas neles.

Por que "yes" e "no" aparecem entre aspas?

Porque em YAML 1.1, usado por bibliotecas como PyYAML e Ruby, yes e no sem aspas são lidos como verdadeiro e falso. As aspas garantem que o valor continue sendo texto em qualquer leitor.

O YAML aceita tabulação para indentar?

Não. A indentação do YAML é sempre com espaços. Usar tabulação é um dos erros mais comuns ao editar YAML à mão.

Posso voltar do YAML para o JSON?

Sim, com o conversor de YAML para JSON do PraDev. Só lembre que comentários do YAML não existem em JSON e se perdem nessa volta.