YAML Formatter / Validator

Format, validate, sort keys in YAML. Browser-only.

formatters

YAML Formatter / Validator

Input
Output

Runs entirely in your browser. Your input never leaves your device.

What next?

How it works

YAML em 30 segundos

YAML ("YAML Ain't Markup Language") é um formato de configuração legível, sensível à indentação. Dominou DevOps porque é mais conciso que JSON e permite comentários. Você encontra YAML em Kubernetes manifests, GitHub Actions workflows, Docker Compose, Ansible playbooks, Hugo frontmatter, e mais.

Indentação importa MUITO

YAML usa espaços (nunca tabs) para indentação. Inconsistência quebra o parsing:

servers:
  - name: web
    port: 80
  - name: api
   port: 8080    # ← 3 espaços em vez de 4 — ERRO

O formatter normaliza para 2 espaços (padrão da comunidade) ou o que você escolher. Tabs são rejeitados pela spec.

O Norway problem (de novo)

YAML 1.1 trata NO, YES, ON, OFF, TRUE, FALSE (qualquer caixa) como booleans. Strings ambíguas precisam de aspas:

country: NO      # ← false
country: "NO"    # ← string "NO"

YAML 1.2 restringiu para apenas true/false, mas js-yaml (e muitos outros) usam 1.1 por padrão. Esta ferramenta usa modo "json" da js-yaml (1.2-like) por padrão.

Octal silencioso

01234 em YAML é octal (= decimal 668), não a string "01234". Para preservar zeros à esquerda (CEPs, telefones), coloque em aspas:

cep: "01234-567"   # ← string
cep: 01234-567     # ← erro de parsing

Anchors & references

YAML permite reutilizar valores sem repetir:

defaults: &defaults
  timeout: 30
  retries: 3

prod:
  <<: *defaults
  host: prod.example.com

staging:
  <<: *defaults
  host: staging.example.com

O &defaults define um anchor; *defaults referencia; <<: merge keys. Útil para configs grandes com muito boilerplate, mas confuso para iniciantes. O formatter preserva anchors se você ativar essa opção.

Multi-line scalars

description: |
  Linha 1
  Linha 2 (newlines preservados)

summary: >
  Linha 1
  Linha 2 (newlines viram espaços)

| (literal) preserva quebras de linha. > (folded) dobra newlines em espaços. Útil para strings longas, snippets de código em config, ou comandos shell.

Segurança: tags YAML

YAML tem tags como !!python/object que podem instanciar classes durante o parsing. Em alguns parsers (PyYAML antigo), isso permite RCE em YAML "confiável". js-yaml por padrão é seguro (safe mode), mas em outras linguagens, sempre use safe_load.

Casos de uso

  • Validar manifests do K8s antes de kubectl apply
  • Reformatar workflows do GitHub Actions
  • Normalizar YAML gerado por ferramentas para diff limpo
  • Detectar erros de indentação silenciosos
  • Sort keys para reduzir noise em diffs git

Tudo local

js-yaml no browser. Zero servidor.

FAQ

Por que NO virou false no YAML?

YAML 1.1 trata NO, YES, ON, OFF como booleans. Coloque em aspas: "NO". Ou use parser YAML 1.2 strict. Esta é a base do "Norway problem".

Como preservar comentários?

Comentários YAML (# ...) não são preservados na maioria dos parsers (incluindo js-yaml). Se você dá format em um YAML comentado, os comentários somem. Para preservá-los, edite manualmente ou use yq -P em terminal.

Tabs funcionam?

Não. YAML proíbe tabs para indentação (apenas espaços). Se você tem tabs, converta para 2 ou 4 espaços antes de formatar.

Anchors são suportados?

Sim. &anchor e *reference funcionam normalmente. O formatter pode expandir (resolve) ou preservar — verifique a opção.

É seguro processar YAML não-confiável?

js-yaml por padrão usa safe mode, sem instanciação de classes via tags. Em PyYAML antigo (antes de 5.1), yaml.load() era inseguro — use yaml.safe_load(). Em geral, nunca confie em YAML de fontes externas sem validação.

Tudo client-side?

Sim. js-yaml roda no navegador. Network tab vazio. Funciona offline.