Converter YAML para TOML

Aqui você converte YAML para TOML de graça e sem conta: solte o arquivo acima e em poucos segundos o resultado está pronto para baixar. A conversão acontece dentro do seu próprio navegador, então o arquivo nunca é enviado. Funciona igual no Windows, no macOS e no Linux e também no iPhone e no Android, e continua funcionando mesmo se você cortar a conexão.

  • Onde roda No seu navegador. O arquivo nunca é enviado.
  • Sem perdas Nada é descartado. O TOML guarda exatamente o que o YAML guardava.
  • Limite de tamanho Até 100 MB por arquivo, de graça e sem conta.

Até 100 arquivos de uma vez. Formatos misturados não são problema.

A forma que um documento YAML assume ao virar TOML

Valores simples e arrays são escritos no topo, depois cada mapeamento aninhado aparece como seu próprio cabeçalho de tabela entre colchetes. Aninhar três níveis de profundidade produz um cabeçalho único com pontos nele em vez de três blocos aninhados, então um mapeamento escrito como tool, depois ruff, depois uma configuração, sai como um único cabeçalho [tool.ruff].

Esse achatamento dos cabeçalhos é a diferença visível entre os dois formatos. YAML expressa profundidade com espaço em branco e consegue aninhar sem limite antes de ficar ilegível; TOML expressa profundidade no nome do cabeçalho e continua legível em quatro níveis porque o caminho completo é escrito em todo bloco.

Uma chave YAML vazia é descartada da saída TOML

Uma linha escrita chave: sem nada depois é YAML válido e interpreta para null. TOML não tem valor nulo — a especificação simplesmente não o define — então o gravador omite a chave. Sem erro, sem placeholder, sem comentário: a chave estava no seu YAML e não está no seu TOML.

Isso importa mais do que parece porque chaves vazias são um idioma YAML deliberado. Marcam uma configuração como presente mas não definida, guardam um lugar para algo que um operador vai preencher depois. Procure linhas terminando em dois-pontos na origem antes de converter.

Um item de lista vazio interrompe a conversão em vez disso

O mesmo null dentro de um array se comporta diferente: o gravador se recusa, e a conversão falha com uma mensagem dizendo que arrays não podem conter valores null ou undefined. Nada é produzido.

Esse é o melhor dos dois comportamentos, e a inconsistência é deliberada em vez de acidental. Descartar uma chave de uma tabela deixa o resto da tabela significativo; descartar um elemento de um array desloca todo elemento depois dele, mudando uma lista ordenada numa lista ordenada diferente.

Por que o arquivo TOML se lê numa ordem diferente

TOML agrupa por tabela. Tudo que pertence a uma tabela precisa aparecer depois de seu cabeçalho e antes do próximo, então o gravador emite todo escalar e array primeiro e depois cada bloco aninhado por vez. Um .gitlab-ci.yml convertido assim coloca seu array de stages no topo e as definições de job abaixo como tabelas.

A consequência a planejar é o diff. Se o arquivo YAML está sob revisão e o TOML o substitui no mesmo repositório, o primeiro commit vai parecer uma reescrita em vez de uma tradução, porque é. Trate a conversão como seu próprio commit, sem mais nada nele.

Scripts YAML de várias linhas chegam como uma string escapada

Um escalar de bloco — o caractere pipe seguido de um script de shell indentado, como todo arquivo CI guarda seus comandos de build — interpreta para uma string contendo quebras de linha, e o gravador a emite como uma string TOML comum entre aspas com escapes \n nela. Um script de dez linhas vira uma linha muito longa.

TOML tem uma sintaxe de string de várias linhas usando aspas triplas que guardaria o script de forma legível, e o gravador não recorre a ela. Isso é uma conversão que você faz à mão: encontre os valores com quebras de linha escapadas neles e reescreva cada um como um bloco entre aspas triplas.

Os tipos que o TOML oferece e esta conversão não entrega

TOML é o único formato desta família com datas de primeira classe: datetimes com offset, datetimes locais, datas locais e horários locais são todos parte da especificação e um interpretador TOML devolve datas em vez de strings. Esse é o motivo principal de um projeto escolher TOML em vez de JSON.

Você não recebe isso desta conversão. YAML 1.2 trata um 2024-01-02 sem aspas como string, então chega no TOML como "2024-01-02" com aspas ao redor. Remover as aspas depois é o trabalho inteiro e leva segundos.

Listas de mapeamentos viram arrays de tabelas

A construção com que as pessoas se preocupam acaba sendo a que funciona melhor. Uma lista YAML cujos itens são mapeamentos — uma lista de autores, uma lista de binários, uma lista de jobs — vira um array de tabelas TOML, com o cabeçalho de colchete duplo repetido uma vez por item.

Uma lista bem no topo do arquivo YAML é a exceção. Documentos TOML são sempre uma tabela, então um documento que é só uma sequência é embrulhado numa tabela com uma única chave chamada items e a lista embaixo.

Chaves que o gravador TOML precisa colocar entre aspas

Chaves nuas do TOML permitem letras, dígitos, underscore e hífen. Qualquer outra coisa precisa de aspas, e o gravador coloca por você: uma chave contendo um ponto sai como "date.timezone" com as aspas incluídas, o mesmo para uma chave contendo espaço. Chaves entre aspas são TOML totalmente válido.

Também são um sinal. Uma chave entre aspas com um ponto nela costuma significar que o YAML estava expressando estrutura no nome da chave em vez de no aninhamento, e em TOML essa estrutura seria melhor escrita como uma tabela de verdade.

Comentários, e por que o YAML deveria sobreviver à migração

Os dois formatos suportam comentários e nenhum dos seus atravessa. O interpretador os descarta ao ler e o gravador não tem nada para escrever. Num arquivo de configuração de projeto isso é um custo real — a nota explicando por que uma dependência está fixada, o bloco comentado mantido como exemplo.

A migração só está terminada quando esses voltam. Converta, depois abra o YAML antigo e o TOML novo lado a lado e reanexe os comentários onde pertencem. São dez minutos num arquivo típico, e é a diferença entre uma configuração que alguém consegue manter e uma que funciona e ninguém ousa mudar.

Como converter YAML para TOML

  1. Solte o seu arquivo YAML nesta página, ou clique para escolher um.
  2. Escolha TOML como destino. A conversão acontece no seu navegador e o arquivo não é enviado.
  3. Baixe o arquivo TOML pronto.

YAML ou TOML: o que muda

YAML comparado com TOML
YAMLTOML
Nome completoYAML Ain't Markup LanguageTom's Obvious Minimal Language
Extensão do arquivo.yaml, .yml.toml
Tipo de mídiaapplication/yamlapplication/toml
Publicado pela primeira vez20012013
EspecificaçãoYAML 1.2TOML 1.0
LicençaPadrão abertoPadrão aberto
Situação hojeAtualAtual
Abre no navegadorNenhum navegadorNenhum navegador
Considerado no lugarJSONJSON, INI

O que se mantém

Nada é descartado. YAML e TOML guardam o conteúdo sem perda, então a conversão troca a embalagem e não a qualidade — e pode ser repetida sem que o estrago se acumule.

Os comentários passam. YAML e TOML têm sintaxe de comentário, então as notas para quem cuidar do arquivo depois não são jogadas fora em silêncio.

Abrir o resultado

Visual Studio Code lê tanto YAML quanto TOML, então dá para comparar o resultado com o original sem um segundo programa.

Para que serve cada formato

YAML foi publicado em 2001. Está descrito em YAML 1.2, e vale conhecer se o arquivo precisa sobreviver à ferramenta que o escreveu.

TOML e de 2013, descrito em TOML 1.0. Visual Studio Code lê o formato.

De YAML para TOML: perguntas frequentes

Meu arquivo YAML é enviado para algum lugar?

Não. Esta conversão acontece inteiramente no seu navegador, então o arquivo não sai do seu aparelho. Você mesmo pode conferir: abra a aba de rede das ferramentas de desenvolvedor e converta alguma coisa. Você verá a própria página e as requisições de estatística e de publicidade com que este serviço é pago, e nenhuma que leve o seu arquivo.

Converter YAML para TOML é grátis?

É. Sem conta, sem marca d’água e sem cota diária para gastar: roda no seu próprio aparelho, então você pode voltar quantas vezes quiser. O navegador processa arquivos de até 100 MB, 100 por vez.

Perde qualidade ao converter YAML para TOML?

Não. TOML guarda o mesmo conteúdo sem jogar nada fora: o resultado é idêntico em qualidade ao original.

A conversão de YAML para TOML é sem perda?

Nada é descartado. YAML e TOML guardam o conteúdo sem perda, então a conversão troca a embalagem e não a qualidade — e pode ser repetida sem que o estrago se acumule.

Mais sobre esses formatos