Menu

Favicon no HTML: como colocar um favicon com link rel=icon

O favicon é o pequeno ícone na aba do navegador. Veja a tag link que o adiciona, quais arquivos e tamanhos publicar (ICO, SVG, PNG, apple-touch-icon), como fazer um favicon em SVG ou com emoji, como trocá-lo com JavaScript e por que um antigo continua aparecendo.

Esta página tem editores executáveis - edite, execute e veja a saída na hora.

Como colocar um favicon

Salve o seu ícone no site e aponte para ele com uma tag <link rel="icon"> no <head>:

<link rel="icon" href="/favicon.ico">

Essa é a resposta completa para um site básico. O href pode apontar para um arquivo .ico, .png ou .svg. O exemplo abaixo usa um SVG escrito direto no href como data URI, então não precisa de arquivo separado. Uma prévia dentro de outra página não consegue mudar a aba do seu navegador, então o script desenha o mesmo ícone numa aba simulada e em três tamanhos:

Em 16 pixels só cabe uma letra em negrito ou uma forma simples, e os detalhes finos somem. Desenhe o ícone pensando primeiro no menor tamanho. Troque fill='%232563eb' por outra cor (%23 é o # codificado para URL) e todas as cópias são atualizadas.

Quais arquivos publicar

Navegadores, celulares e launchers de apps procuram ícones diferentes. Um conjunto pequeno cobre todos:

<link rel="icon" href="/favicon.ico" sizes="32x32">
<link rel="icon" href="/icon.svg" type="image/svg+xml">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<link rel="manifest" href="/manifest.webmanifest">
ArquivoTamanhoUsado para
favicon.ico32×32Abas do navegador, e ferramentas que só procuram /favicon.ico
icon.svgQualquer (vetor)Abas nítidas em qualquer densidade de tela, no Chrome, Edge e Firefox
apple-touch-icon.png180×180O ícone quando alguém adiciona o seu site à tela inicial de um iPhone ou iPad
Ícones do manifestPNG de 192×192 e 512×512Tela inicial do Android e web apps instalados

A maioria dos navegadores também pede /favicon.ico na raiz do site por conta própria quando uma página não tem link de ícone, então colocar um favicon.ico ali é um padrão útil. O atributo sizes diz ao navegador o tamanho de cada arquivo, para que ele escolha o mais adequado. Use rel="icon"; o antigo rel="shortcut icon" só funciona porque os navegadores ignoram a palavra a mais.

Um favicon com emoji

Para um protótipo ou uma página pessoal, um emoji vira um favicon rápido. Coloque-o dentro de um elemento <text> de SVG:

%F0%9F%8D%AA é o emoji de cookie, codificado para URL. O emoji é desenhado pela fonte de emojis do sistema operacional, então fica diferente no Windows, no macOS e no Android, e para um produto de verdade um ícone desenhado é a escolha melhor.

Um ícone que acompanha o modo escuro

Um favicon SVG pode levar o seu próprio CSS, inclusive uma media query prefers-color-scheme, então um ícone escuro pode ficar claro quando o navegador usa um tema escuro:

<!-- icon.svg -->
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
  <style>
    circle { fill: #111827; }
    @media (prefers-color-scheme: dark) { circle { fill: #f9fafb; } }
  </style>
  <circle cx="16" cy="16" r="14"/>
</svg>

Trocando o favicon com JavaScript

Sites usam um favicon que muda para mostrar um ponto de notificação ou uma cor de status. Desenhe o novo ícone num <canvas> e defina o href do link com a imagem do canvas:

Numa página real no Chrome ou no Firefox, o ícone da aba muda a cada vez que o href é definido, no mesmo momento em que a imagem da prévia muda aqui.

Erros comuns

  • Um caminho errado. href="favicon.ico" é relativo à página atual, então quebra em /blog/post. Use um caminho a partir da raiz: href="/favicon.ico".
  • Esperar que uma atualização apareça na hora. Os navegadores guardam favicons em cache com força. Recarregue limpando o cache, ou mude a URL (/favicon.ico?v=2) quando trocar o ícone.
  • Um logo cheio de detalhes reduzido a 16 pixels. Simplifique: uma letra ou uma forma com contraste forte.
  • Só um SVG. Mantenha também um ICO ou PNG para navegadores sem suporte a favicon SVG, e adicione o apple-touch-icon para o iOS.
  • Colocar o link no <body>. Mantenha-o no <head>, junto com a tag title e os outros metadados.

Perguntas frequentes

Como colocar um favicon no HTML?

Coloque o arquivo do ícone no seu site e adicione <link rel="icon" href="/favicon.ico"> (ou o caminho de um PNG ou SVG) dentro do <head>. Os navegadores passam a mostrá-lo na aba, nos favoritos e no histórico.

Qual deve ser o tamanho de um favicon?

Publique um favicon.ico de 32×32 (ou PNG) para as abas, um SVG que escala para qualquer tamanho e um PNG apple-touch-icon de 180×180 para a tela inicial do iPhone. Web apps com manifest também listam PNGs de 192×192 e 512×512.

Por que meu favicon não aparece?

As causas comuns são um caminho errado no href, o <link> fora do <head> ou o navegador ainda mostrando um ícone antigo em cache. Abra a URL do ícone direto para conferir o caminho, depois recarregue limpando o cache ou adicione uma versão como ?v=2 à URL.

Posso usar SVG ou PNG como favicon?

Sim. Use <link rel="icon" href="/icon.svg" type="image/svg+xml"> ou <link rel="icon" href="/icon.png" type="image/png">. SVG funciona no Chrome, no Edge e no Firefox; mantenha também um ICO ou PNG para os navegadores sem suporte.

Preciso de rel="shortcut icon"?

Não. rel="icon" é o valor padrão. A palavra shortcut é uma sobra do antigo Internet Explorer e não faz nada nos navegadores atuais.

Posso usar um emoji como favicon?

Sim, envolvendo-o num SVG: uma data URI SVG com um elemento <text> contendo o emoji. É prático para protótipos, mas o emoji fica diferente em cada sistema operacional.

Coddy programming languages illustration

Aprenda a programar com o Coddy

COMEÇAR