YAML Formatter / Validator
Format, validate, sort keys in YAML. Browser-only.
YAML Formatter / Validator
—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.