Tag HTML <xmp>
A tag <xmp> exibe o texto entre as tags de abertura e fechamento sem interpretar o HTML e usando uma fonte monoespaçada.
A tag HTML <xmp> é obsoleta e descontinuada. Foi removida do padrão HTML e não deve ser utilizada em novas páginas. Esta página explica o que ela fazia, por que foi removida e como exibir HTML literal ou texto pré-formatado corretamente nos dias de hoje.
Historicamente, <xmp> ("example") renderizava o texto entre suas tags de abertura e fechamento exatamente como escrito — em uma fonte monoespaçada, com espaços em branco e quebras de linha preservados — e, de forma crítica, sem interpretar nenhum HTML dentro dela. Isso significava que você podia colar marcação bruta como <b>bold</b> e o navegador mostraria os colchetes angulares em vez de renderizar o texto em negrito.
Não use <xmp>. Ela não está em conformidade com o HTML5 e seu comportamento é não confiável entre navegadores. Use <pre> (opcionalmente com <code>) e escape os caracteres <, > e & com entidades HTML. Veja o substituto moderno abaixo.
Por que <xmp> foi removida
O elemento <xmp> foi descontinuado porque seu comportamento de "mostrar HTML bruto sem escape" é fundamentalmente incompatível com a forma como os navegadores analisam documentos:
- A análise era inconsistente. Como o analisador precisava entrar em um modo especial de "texto bruto" para encontrar o
</xmp>de fechamento, os navegadores discordavam sobre casos extremos — tags aninhadas, comentários e, especialmente, a string literal</xmp>aparecendo dentro do conteúdo se comportavam de forma diferente em diferentes motores. - Incentivava conteúdo sem escape. Os autores dependiam de
<xmp>para despejar HTML diretamente em uma página. Um único</xmp>perdido nesse conteúdo encerraria o bloco antecipadamente e permitiria que o restante da marcação fosse renderizado, o que é ao mesmo tempo um bug de renderização e um potencial problema de segurança. - Uma alternativa padrão e previsível já existia. O
<pre>preserva espaços em branco e usa uma fonte monoespaçada, e o escape de entidades exibe de forma confiável os literais<e>. Como essa combinação é bem definida e funciona da mesma forma em todos os lugares, o<xmp>não era mais necessário.
A tag intimamente relacionada <plaintext> foi removida pelos mesmos motivos. Para a lista completa, consulte Tags HTML Descontinuadas.
O substituto moderno
Para exibir HTML literal, use <pre> e substitua cada caractere especial pela sua entidade HTML: < vira <, > vira > e & vira &. O navegador decodifica as entidades de volta aos caracteres visíveis, mas nunca os trata como marcação.
<!DOCTYPE html>
<html>
<head>
<title>Showing literal HTML with pre</title>
</head>
<body>
<pre>
This is <b>bold</b> in source.
The <b> tag is shown as text, not rendered.
</pre>
</body>
</html>Na página renderizada, o bloco <pre> acima exibe exatamente:
This is <b>bold</b> in source.
The <b> tag is shown as text, not rendered.Quando o texto pré-formatado é especificamente um bloco de código-fonte, envolva-o em <code> para uma semântica mais clara:
<pre><code>function greet(name) {
return "Hello, " + name;
}
// Literal HTML still needs escaping here too:
// <div class="box"></div>
</code></pre>A regra de escape é a diferença fundamental em relação ao <xmp>. Dentro do <pre> (e em qualquer outro lugar no HTML normal), um <b> literal seria analisado como uma tag, portanto você deve escrever <b> para exibi-lo como texto.
Sintaxe
A tag <xmp> vinha em pares. O conteúdo era escrito entre as tags de abertura (<xmp>) e fechamento (</xmp>). (Mostrado apenas para referência — não a utilize.)
Exemplo legado da tag HTML <xmp>
O exemplo abaixo mostra como <xmp> era usado antigamente. É mantido para referência histórica; no HTML moderno, substitua-o pela abordagem com <pre> mostrada acima.
Tag HTML <xmp>
<!DOCTYPE html>
<html>
<head>
<title>The title of the document</title>
</head>
<body>
<xmp> This is a preformatted text.
All characters in this area have the same width,
and the spaces and line breaks within this element are shown as typed.
</xmp>
</body>
</html>Resultado

Atributos
A tag <xmp> também suporta os Atributos Globais.
Prática
Tags relacionadas
<pre>— o elemento padrão para texto pré-formatado e monoespaçado.<code>— marca um fragmento de código de computador.<plaintext>— outra tag removida com comportamento similar de texto bruto.- Tags HTML Descontinuadas — a lista completa de elementos obsoletos a evitar.