Menu

Favicon w HTML: jak dodać favicon przez link rel=icon

Favicon to mała ikona na karcie przeglądarki. Poznaj znacznik link, który ją dodaje, pliki i rozmiary do przygotowania (ICO, SVG, PNG, apple-touch-icon), sposób na favicon z SVG lub emotki, zmianę ikony w JavaScripcie i powód, dla którego wciąż widać starą.

Na tej stronie są działające edytory: edytuj, uruchamiaj i od razu zobacz wynik.

Jak dodać favicon

Zapisz ikonę na swojej stronie i wskaż ją znacznikiem <link rel="icon"> w <head>:

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

To cała odpowiedź dla prostej strony. href może wskazywać plik .ico, .png lub .svg. Przykład poniżej używa SVG wpisanego bezpośrednio w href jako data URI, więc nie potrzebuje osobnego pliku. Podgląd osadzony w innej stronie nie może zmienić karty twojej przeglądarki, więc skrypt rysuje tę samą ikonę na udawanej karcie i w trzech rozmiarach:

Przy 16 pikselach jest miejsce na jedną pogrubioną literę albo prosty kształt, a drobne detale znikają. Projektuj ikonę najpierw dla najmniejszego rozmiaru. Zmień fill='%232563eb' na inny kolor (%23 to zakodowany w URL #), a każda kopia się zaktualizuje.

Jakie pliki przygotować

Przeglądarki, telefony i launchery aplikacji szukają różnych ikon. Mały zestaw obsługuje je wszystkie:

<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">
PlikRozmiarDo czego służy
favicon.ico32×32Karty przeglądarki i narzędzia, które szukają tylko /favicon.ico
icon.svgDowolny (wektor)Ostre karty przy każdej gęstości ekranu, w Chrome, Edge i Firefoksie
apple-touch-icon.png180×180Ikona, gdy ktoś doda twoją stronę do ekranu głównego iPhone'a lub iPada
Ikony manifestuPNG 192×192 i 512×512Ekran główny Androida i zainstalowane aplikacje webowe

Większość przeglądarek sama pobiera też /favicon.ico z katalogu głównego strony, gdy strona nie ma linku do ikony, więc umieszczenie tam favicon.ico to przydatne ustawienie domyślne. Atrybut sizes mówi przeglądarce, jaki rozmiar ma każdy plik, żeby mogła wybrać najlepiej pasujący. Używaj rel="icon"; starsze rel="shortcut icon" działa tylko dlatego, że przeglądarki ignorują dodatkowe słowo.

Favicon z emotki

W prototypie lub na stronie osobistej emotka to szybki favicon. Umieść ją w elemencie SVG <text>:

%F0%9F%8D%AA to emotka ciastka zakodowana w URL. Emotkę rysuje czcionka emoji systemu operacyjnego, więc wygląda inaczej w Windowsie, macOS i Androidzie, a w prawdziwym produkcie lepiej sprawdzi się zaprojektowana ikona.

Ikona, która dostosowuje się do trybu ciemnego

Favicon w SVG może mieć własny CSS, łącznie z zapytaniem medialnym prefers-color-scheme, więc ciemna ikona może stać się jasna, gdy przeglądarka używa ciemnego motywu:

<!-- 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>

Zmiana favicona w JavaScripcie

Strony używają zmieniającego się favicona do kropki powiadomień albo koloru statusu. Narysuj nową ikonę na <canvas> i ustaw href linku na obraz z canvasa:

Na prawdziwej stronie w Chrome lub Firefoksie ikona karty zmienia się przy każdym ustawieniu href, w tym samym momencie, w którym zmienia się tutaj obrazek podglądu.

Częste błędy

  • Zła ścieżka. href="favicon.ico" jest względne wobec bieżącej strony, więc psuje się na /blog/post. Użyj ścieżki od katalogu głównego: href="/favicon.ico".
  • Oczekiwanie, że zmiana pojawi się od razu. Przeglądarki mocno cache'ują faviconki. Przeładuj z wyczyszczoną pamięcią podręczną albo zmień adres (/favicon.ico?v=2), gdy podmieniasz ikonę.
  • Szczegółowe logo zmniejszone do 16 pikseli. Uprość je: jedna litera lub jeden kształt z mocnym kontrastem.
  • Tylko SVG. Zachowaj też ICO lub PNG dla przeglądarek bez obsługi favicona SVG i dodaj apple-touch-icon dla iOS.
  • Link w <body>. Trzymaj go w <head> razem ze znacznikiem title i innymi metadanymi.

Najczęściej zadawane pytania

Jak dodać favicon w HTML?

Umieść plik ikony na swojej stronie i dodaj <link rel="icon" href="/favicon.ico"> (albo ścieżkę do PNG lub SVG) wewnątrz <head>. Przeglądarki pokażą ją wtedy na karcie, w zakładkach i w historii.

Jaki rozmiar powinien mieć favicon?

Przygotuj favicon.ico (lub PNG) 32×32 dla kart, SVG, które skaluje się do każdego rozmiaru, i PNG apple-touch-icon 180×180 dla ekranów głównych iPhone'a. Aplikacje webowe z manifestem podają też PNG 192×192 i 512×512.

Dlaczego mój favicon się nie wyświetla?

Zwykle przyczyną jest zła ścieżka w href, <link> umieszczony poza <head> albo przeglądarka nadal pokazuje starą ikonę z pamięci podręcznej. Otwórz adres ikony bezpośrednio, żeby sprawdzić ścieżkę, a potem przeładuj stronę z wyczyszczoną pamięcią podręczną albo dodaj do adresu wersję, np. ?v=2.

Czy mogę użyć SVG lub PNG jako favicona?

Tak. Użyj <link rel="icon" href="/icon.svg" type="image/svg+xml"> albo <link rel="icon" href="/icon.png" type="image/png">. SVG działa w Chrome, Edge i Firefoksie; zachowaj też ICO lub PNG dla przeglądarek, które go nie obsługują.

Czy potrzebuję rel="shortcut icon"?

Nie. rel="icon" to standardowa wartość. Słowo shortcut to pozostałość po starym Internet Explorerze i w obecnych przeglądarkach nic nie robi.

Czy mogę użyć emotki jako favicona?

Tak, umieszczając ją w SVG: data URI z SVG zawierającym element <text> z emotką. Przydaje się w prototypach, ale emotka wygląda inaczej w każdym systemie operacyjnym.

Ilustracja języków programowania w Coddy

Ucz się programowania z Coddy

ZACZNIJ