Ferramentas
Guias

Validador e formatador de YAML

Formatação

Valide, normalize ou comprima YAML com js-yaml. Ajusta indentação e aspas e separa fluxos de vários documentos (---). Processamento apenas de YAML — sem conversão de formato.

100% no cliente Sem backend

URLs remotas não são buscadas; cole seu JSON diretamente.

Entrada
Saída
Cole YAML à esquerda e escolha Formatar ou Compactar.
Nesta página

O que é um formatador de YAML?#

Um formatador de YAML pega um arquivo de configuração que derivou — tabulações misturadas com espaços, passo de indentação inconsistente, aspas usadas nuns sítios e não noutros, uma âncora que alguém definiu e nunca reutilizou — e normaliza-o para uma forma limpa e previsível. Também apanha a coisa pela qual o YAML é notório: um documento que parece estar bem e silenciosamente significa outra coisa, porque o YAML é sensível a espaços em branco e cheio de regras implícitas sobre o que uma palavra solta significa.

Esta página analisa o seu YAML e reemite-o através do js-yaml de forma controlada. Formatar re-indenta com o passo que escolher (2 ou 4 espaços), desliga a quebra de linha para que cada valor fique na sua própria linha, e expande quaisquer âncoras e aliases em conteúdo repetido simples para que a saída seja totalmente autossuficiente. Compactar redespeja os mesmos dados em notação de fluxo{a: 1, b: [2, 3]} — que é o mais próximo que o YAML tem de uma forma compacta, já que o YAML não consegue simplesmente apagar os seus espaços em branco como o JSON ou o CSS conseguem. Qualquer que seja o modo escolhido, o documento é analisado primeiro, pelo que uma tabulação onde devia haver um espaço, ou um dois-pontos sem o espaço final, é reportada com a sua linha e coluna em vez de produzir silenciosamente a estrutura de dados errada.

Como usar#

  1. Cole o seu YAML no painel Entrada à esquerda. O marcador de posição mostra um documento mínimo, ou clique em Exemplo.
  2. Escolha um botão de Modo na barra de ferramentas:
    • Formatar — re-indentar, desativar a quebra de linha, expandir âncoras/aliases, e emitir cada coleção em estilo de bloco.
    • Compactar — emitir todas as coleções em estilo de fluxo no menor número de linhas possível. A indentação torna-se irrelevante porque as coleções de fluxo são explícitas.
  3. No modo Formatar, escolha a Indentação: 2 ou 4 espaços.
  4. Opcionalmente escolha um estilo de Aspas: auto (pôr entre aspas apenas quando um escalar realmente precisa — a predefinição), simples ou duplas. Isto normaliza o carácter de aspas em escalares que têm de estar entre aspas; nunca força aspas em valores simples que não precisam delas.
  5. Leia o resultado no painel Saída. O cabeçalho mostra o tamanho da saída; use Copiar para o recolher. Limpar repõe ambos os painéis.

Se a análise falhar, a barra de estado reporta a linha e a coluna do problema — os erros do js-yaml transportam uma posição, e esta página fá-la surgir diretamente.

Principais funcionalidades#

  • Formatar e compactar a partir da mesma análise. Ambos os modos validam o documento antecipadamente, pelo que um erro estrutural é reportado uma vez com uma localização, independentemente do botão em que se carregou.
  • Âncoras expandidas. As referências &anchor / *alias são resolvidas e escritas inline (noRefs), pelo que a saída nunca depende de um nome definido três telas antes. O resultado é um documento autossuficiente que se pode entregar a qualquer pessoa.
  • Sem quebra de linha. Os valores longos não são quebrados num limite de coluna (lineWidth: -1), pelo que cada valor ocupa exatamente uma linha — mais fácil de comparar e mais fácil de ler.
  • Normalização de aspas opcional. Escolha aspas simples ou duplas para tornar o carácter de aspas consistente em todo o documento, ou deixe em auto para que só os valores que genuinamente precisam de aspas as recebam.
  • Conhecedor de multidocumento. Entrada separada por --- é analisada como múltiplos documentos e reemitida com separadores --- intactos — útil para manifestos Kubernetes e arquivos multidoc semelhantes.
  • Defende-se contra YAML bombs. Um limite de profundidade de aninhamento impede documentos patologicamente profundos de se expandirem em algo perigoso.
  • Estritamente no lado do cliente, com um Web Worker para entradas acima de 1 MB para a página se manter responsiva.

Exemplo prático#

Uma configuração de serviço com uma âncora reutilizada e estilo ligeiramente irregular:

Entrada:

service:
  name: &name "api-gateway"
  host:   example.com
  reaspas simples: 3
  id: *name
logging:
  level: info
  outputs: [{name: stdout}, {name: file}]

Clique em Formatar com 2 espaços e aspas auto:

service:
  name: api-gateway
  host: example.com
  reaspas simples: 3
  id: api-gateway
logging:
  level: info
  outputs:
    - name: stdout
    - name: file

Duas coisas aconteceram que se podem ver. A âncora &name e o alias *name foram ambos resolvidos para o valor literal api-gateway, pelo que id aparece agora como um valor simples e o documento já não depende da âncora. E a lista de fluxo [{name: stdout}, {name: file}] foi reescrita como uma lista de bloco, uma entrada por linha — muito mais fácil de perscrutar e de comparar contra outra versão. Clique em Compactar na mesma entrada e os mesmos dados voltam em forma de fluxo:

service: {name: api-gateway, host: example.com, reaspas simples: 3, id: api-gateway}
logging: {level: info, outputs: [{name: stdout}, {name: file}]}

Cada coleção está agora inline. A contagem de bytes desce porque a indentação e as mudanças de linha desapareceram, mas o significado é idêntico — que é exatamente o que compactar deve significar para um formato sensível a espaços em branco.

FAQ#

Para onde foram os meus comentários?#

O round-tripping do YAML através do js-yaml analisa comentários e descarta-os — não há redumper que preserve comentários na biblioteca. Os comentários são tolerados durante a análise (nunca causam erro) mas não aparecem na saída. Se os comentários transportam contexto importante, mantenha o seu arquivo original como fonte de verdade e trate a saída desta ferramenta como a forma canónica de máquina.

Qual é a diferença entre Formatar e Compactar para YAML?#

Formatar reescreve o documento em estilo de bloco limpo: mapeamentos e sequências aninhadas indentados com o passo que escolheu, um valor por linha, sem quebra. Compactar reescreve os mesmos dados em estilo de fluxo: coleções {key: value} e [a, b] numa única linha. Ambos analisam de forma idêntica primeiro; só diferem em como os dados são serializados de volta.

Em que é que isto difere do conversor YAML/JSON?#

Esta ferramenta é YAML dentro, YAML fora — normaliza ou compacta um documento YAML e devolve YAML. O conversor YAML/JSON neste site traduz entre os dois formatos. Use esta página quando quer o mesmo formato, apenas com melhor forma; use o conversor quando efetivamente quer JSON.

O meu YAML é enviado para algum lado?#

Não. O js-yaml está empacotado na página e corre no seu navegador. Para entradas acima de 1 MB a análise acontece dentro de um Web Worker, mas ainda localmente — nada sai do seu dispositivo.