1001Ferramentas
📑Dev

Gerador de TOC Markdown

Gere o sumário (table of contents) de um arquivo Markdown a partir das headings (#, ##, ###). Inclui anchors no estilo GitHub. Tudo no navegador.

Gere o sumário de um Markdown

Documento Markdown longo pede um sumário no topo, com link para cada seção. Só que fazer isso na mão e manter tudo sincronizado com os títulos dá um trabalho danado. Cole seu arquivo aqui e o índice (table of contents) sai pronto a partir das próprias headings.

A ferramenta lê os títulos de # a ###### , respeita a hierarquia entre eles e monta a lista com as âncoras no estilo do GitHub, aquelas que pulam direto para a seção ao clicar. Título repetido ganha o sufixo -1, -2 e assim por diante, como o próprio GitHub faz, e o que está dentro de bloco de código cercado por crases fica de fora do sumário. Em poucos segundos ele está pronto para colar no início do documento, já com a indentação certa em cada nível.

Nada do texto sai do navegador durante a geração. Bom para quem cuida de READMEs, wikis e documentação técnica e quer navegação fácil sem ficar atualizando o índice à mão.

Perguntas frequentes

Ele pega títulos que estão dentro de blocos de código?
Pega, e essa é a maior fonte de sujeira no sumário. A varredura é linha a linha, procurando de um a seis caracteres # seguidos de espaço, sem saber onde uma cerca de código começa e termina. Uma linha como "# instala as dependências" dentro de um bloco bash entra na lista como se fosse seção. Já títulos no estilo Setext, sublinhados com === ou ---, ficam de fora: só a forma com # é reconhecida. Confira a saída antes de colar no documento.
As âncoras funcionam mesmo no GitHub?
Na maioria dos casos, sim. O slug é o título em minúsculas, com a pontuação removida e os espaços virando hífen, que é a regra do GitHub, e as letras acentuadas são preservadas como lá. A exceção é título repetido: o GitHub numera o segundo, com sufixo -1, e aqui os dois saem com a âncora idêntica, então o segundo link leva de volta à primeira seção. Renomeie os títulos duplicados ou acrescente o sufixo à mão.
O sumário nasceu todo indentado. Como corrijo?
A indentação vem do nível do título em si, não do título mais raso do documento: um ## recebe dois espaços mesmo que não exista nenhum # no arquivo. Como muitos READMEs usam o # apenas para o nome do projeto e abrem as seções em ##, o índice sai com dois espaços em toda linha. Basta remover essa margem no editor depois de colar, porque a hierarquia relativa entre os níveis já está correta.

Ferramentas Relacionadas