Bloco de Código Markdown: Guia Completo com Sintaxe, Linguagens e Exemplos
Mestre blocos de código Markdown: realce de sintaxe, diff e nome do arquivo.
Aqui estou revisando opções de blocos de código no Markdown — como especificar a linguagem de programação, formatação de diffs e nome do arquivo do bloco de código.
Este guia faz parte do nosso Ferramentas de Documentação em 2026: Markdown, LaTeX, PDF & Fluxos de Trabalho de Impressão hub.

Visão Geral dos Blocos de Código no Markdown
Blocos de código no Markdown exibem código ou texto pré-formatado dentro de documentos Markdown, preservando a formatação e, opcionalmente, habilitando a destaque de sintaxe. Existem dois principais tipos de formatação de código no Markdown: código inline e blocos de código.
Tipos de Blocos de Código no Markdown
| Tipo | Exemplo de Sintaxe | Caso de Uso | Destaque de Sintaxe | Notas |
|---|---|---|---|---|
| Código inline | `code` |
Trechos curtos dentro do texto | Não | Para palavras únicas ou comandos |
| Bloco indentado | (4 espaços ou 1 tab) | Código de várias linhas (estilo mais antigo) | Não | Não recomendado para uso moderno |
| Bloco delimitado | ```lang … ``` |
Código de várias linhas (moderno) | Sim | Método preferido |
Diferenças Principais
- Código inline usa backticks simples (
`) e é usado para trechos curtos dentro de uma frase. - Blocos de código indentados usam quatro espaços ou uma tabulação no início de cada linha. Eles não suportam destaque de sintaxe e são raros no Markdown moderno.
- Blocos de código delimitados usam três backticks (
```) ou tildes (~~~) antes e depois do código. Este é o método preferido, especialmente em plataformas como GitHub, porque:- Eles são mais fáceis de ler e escrever.
- Você pode especificar a linguagem de programação imediatamente após os backticks abertos para destaque de sintaxe.
- Eles preservam a formatação e suportam código de várias linhas.
Exemplo de um bloco de código delimitado com destaque de sintaxe:
Quando temos o seguinte texto formatado em Markdown:
```python
def hello():
print("Hello, world!")
```
A saída renderizada parece com:
def hello():
print("Hello, world!")
Melhores Práticas para Blocos de Código no Markdown
- Use blocos de código delimitados (três backticks) para código de várias linhas para garantir clareza e compatibilidade entre plataformas.
- Especifique a linguagem após os backticks abertos para destaque de sintaxe (por exemplo,
```python). - Use código inline para trechos curtos ou comandos dentro do texto.
- Evite blocos de código indentados a menos que sejam necessários para compatibilidade com versões antigas, pois eles não suportam destaque de sintaxe e podem ser menos legíveis.
- Coloque uma linha em branco antes e depois dos blocos de código delimitados para melhor legibilidade no Markdown bruto.
Funcionalidades Especiais
- Algumas plataformas suportam identificadores de linguagem adicionais, como
diffpara mostrar alterações de código, que destaca linhas adicionadas ou removidas em revisões de código. - Para exibir backticks dentro de um bloco de código, envolva o bloco com um número maior de backticks (por exemplo, quatro backticks para exibir três backticks dentro).
Resumo Rápido de Referência
| Funcionalidade | Código Inline | Bloco Indentado | Bloco Delimitado |
|---|---|---|---|
| Suporte a várias linhas | Não | Sim | Sim |
| Destaque de sintaxe | Não | Não | Sim |
| Recomendado para código | Não | Não | Sim |
| Facilidade de uso | Fácil | Moderado | Fácil |
Use blocos de código delimitados com um identificador de linguagem para a melhor legibilidade e destaque de sintaxe. Reserve código inline para trechos curtos e evite blocos indentados a menos que sejam necessários para compatibilidade.
Blocos de código combinam naturalmente com tabelas no Markdown para criar documentação técnica bem estruturada.
Destaque de Sintaxe com Diff
O destaque de sintaxe com diff permite mostrar alterações de código claramente — útil em documentação, revisões de código e blogs técnicos.
- Use blocos de código delimitados com três backticks (```) para iniciar e encerrar seu bloco.
- Especifique
diffcomo o identificador de linguagem imediatamente após os backticks abertos.
Exemplo:
- linha antiga que será removida
+ nova linha que será adicionada
linha inalterada
- Linhas começando com
-são destacadas como exclusões (normalmente em vermelho). - Linhas começando com
+são destacadas como adições (normalmente em verde). - Linhas sem prefixo não são destacadas especialmente.
Melhores práticas:
- Coloque uma linha em branco antes e depois do seu bloco de código para melhor legibilidade no Markdown bruto.
- Note que o destaque de diff apenas colora linhas inteiras com base no caractere inicial; não destaca alterações inline dentro de uma linha.
Dica: O destaque de diff é amplamente suportado no GitHub, GitLab e na maioria dos renderizadores de Markdown, tornando-o uma escolha confiável para comunicar alterações de código.
Linguagens Suportadas para Destaque de Sintaxe
O conjunto exato de linguagens suportadas depende da renderer ou plataforma que você usa. O Markdown passa o identificador da linguagem para o motor de renderização, que aplica o destaque de sintaxe apropriado. Isso importa quando converter HTML para Markdown com Python, já que os tags <code> carregando atributos de classe de linguagem (por exemplo, class="language-python") mapeiam diretamente para esses identificadores nos blocos delimitados.
Linguagens comumente suportadas em plataformas principais (GitHub, VS Code, Bitbucket, Docusaurus, ReadMe):
- Web & Scripting:
javascript(js),typescript(ts),html,css,json,xml,yaml,shell/bash(sh, bash, shell, zsh) - Programação:
python(py),java,c,cpp(c++),csharp(c#),php,ruby,go,rust,scala,swift,kotlin,objective-c - Dados & Consultas:
sql,r,matlab - Markup & Configuração:
markdown,ini,toml,dockerfile,makefile - Especiais:
diff,mermaid,geojson,topojson,stl(para diagramas e visualizações de dados no GitHub) - Outros:
jsx,tsx,perl,lua,julia,dart,groovy,powershell,vb,elixir,erlang,fortran,haskell,lisp,schemee muitas outras
Como especificar uma linguagem:
```python
def hello():
print("Hello, world!")
```
Identificadores de linguagem suportados por maioria dos renderizadores:
| Linguagem | Identificador(es) Comum |
|---|---|
| Python | python, py |
| JavaScript | javascript, js |
| TypeScript | typescript, ts |
| Java | java |
| C | c |
| C++ | cpp, c++ |
| C# | csharp, cs, c# |
| Go | go |
| Ruby | ruby, rb |
| PHP | php |
| Rust | rust |
| Swift | swift |
| Kotlin | kotlin |
| HTML | html |
| CSS | css |
| Shell/Bash | shell, bash, sh, zsh |
| SQL | sql |
| JSON | json |
| YAML | yaml, yml |
| Markdown | markdown, md |
| Perl | perl |
| Lua | lua |
| R | r |
| Matlab | matlab |
| Makefile | makefile |
Nota: A maioria dos renderizadores é case-insensitive para nomes de linguagem. Se você usar um identificador não suportado, o bloco de código será renderizado como texto simples.
Como encontrar a lista completa de linguagens suportadas:
- GitHub: Usa Linguist, suportando centenas de linguagens.
- VS Code & muitos renderizadores web: Usam highlight.js ou Pygments — veja suas documentações para listas exaustivas.
- Bitbucket: Refere-se a CodeMirror modes e lexers do Pygments.
Especificando um Nome de Arquivo em um Bloco de Código no Markdown
Exibir o nome do arquivo junto com um bloco de código ajuda os leitores a identificar a qual arquivo um trecho pertence. O suporte varia conforme a plataforma.
1. Nome do Arquivo no Rótulo do Bloco de Código (Sintaxe Meta)
Alguns motores de Markdown (certos geradores de site estático e plataformas de documentação) suportam uma sintaxe meta onde você anexa o nome do arquivo após a linguagem, separado por dois pontos:
```js:app.js
console.log("Hello, world!");
```
Isso exibe o nome do arquivo acima ou ao lado do bloco de código. O renderizador Hugo deste site não suporta:
console.log("Hello, world!");
Nota: Isso não é suportado no Markdown do GitHub.
2. Título ou Código Inline com o Nome do Arquivo
Para compatibilidade universal (incluindo GitHub, Stack Overflow e a maioria dos renderizadores de Markdown), coloque o nome do arquivo acima do bloco de código usando código inline em negrito:
**`app.js`**
```js
console.log("Hello, world!");
```
Ou com um título:
#### `app.js`
```js
console.log("Hello, world!");
```
Isso funciona em todos os lugares e visualmente associa o nome do arquivo ao bloco de código.
3. Nome do Arquivo como Comentário Dentro do Código
Inclua o nome do arquivo como um comentário dentro do próprio bloco de código:
```js
// app.js
console.log("Hello, world!");
```
Isso é especialmente útil quando você deseja que o nome do arquivo seja visível ao copiar o código.
Resumo de Compatibilidade
| Método | GitHub | Docs/Blogs | Universal |
|---|---|---|---|
Sintaxe meta (ex: :app.js) |
Não | Às vezes | Não |
| Título/código inline acima | Sim | Sim | Sim |
| Comentário dentro do código | Sim | Sim | Sim |
Use código inline em negrito acima do bloco de código para máxima compatibilidade, e considere um comentário dentro do código para clareza ao compartilhar em plataformas.
Escapando Backticks Dentro de Blocos de Código
Para exibir fences de backticks dentro de um bloco de código — por exemplo, quando você está escrevendo documentação sobre Markdown em si — aninhe o bloco com um número maior de backticks:
````markdown
```python
# Este fence de backticks triplo está dentro de um fence de quatro backticks
print("hello")
```
````
Usar quatro backticks como o fence externo permite que você mostre exemplos de backticks triplos dentro, o que é útil para tutoriais e dicas rápidas de Markdown.
Específico do Hugo: O Shortcode de Destaque
Se você usa o Hugo, o shortcode embutido highlight oferece mais controle do que blocos simples delimitados, incluindo numeração de linhas e linhas destacadas:
{{< highlight python "linenos=true,hl_lines=2 4" >}}
def greet(name):
print(f"Hello, {name}!")
greet("world")
{{< /highlight >}}
Opções:
linenos=true— mostrar numeração de linhashl_lines=2 4— destacar as linhas 2 e 4linenostart=10— iniciar a numeração de linhas em 10
Isso é particularmente útil em tutoriais ou documentação onde você deseja chamar a atenção para linhas específicas. Veja o Cheatsheet do Markdown para mais recursos de formatação, e o Cheatsheet do Hugo para uma referência mais ampla sobre comandos e templates do Hugo.