Menu

Favicon в HTML: как добавить иконку сайта (link rel=icon)

Favicon это маленькая иконка на вкладке браузера. Разберем тег link, который ее добавляет, какие файлы и размеры нужны (ICO, SVG, PNG, apple-touch-icon), как сделать favicon из SVG или эмодзи, как менять его через JavaScript и почему продолжает показываться старый.

На этой странице есть исполняемые редакторы: меняйте, запускайте и сразу видите результат.

Как добавить favicon

Сохраните иконку на сайте и укажите на нее тегом <link rel="icon"> в <head>:

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

Для простого сайта это весь ответ. href может указывать на файл .ico, .png или .svg. Пример ниже использует SVG, записанный прямо в href как data URI, поэтому отдельный файл не нужен. Превью внутри другой страницы не может изменить вкладку вашего браузера, поэтому скрипт рисует ту же иконку на имитации вкладки и в трех размерах:

В 16 пикселях помещается одна жирная буква или простая фигура, а мелкие детали пропадают. Проектируйте иконку сначала под самый маленький размер. Замените fill='%232563eb' на другой цвет (%23 это #, закодированный для URL), и обновятся все копии.

Какие файлы нужны

Браузеры, телефоны и лаунчеры приложений ищут разные иконки. Небольшой набор покрывает их все:

<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">
ФайлРазмерДля чего
favicon.ico32×32Вкладки браузера и инструменты, которые ищут только /favicon.ico
icon.svgЛюбой (вектор)Четкие вкладки при любой плотности экрана в Chrome, Edge и Firefox
apple-touch-icon.png180×180Иконка, когда сайт добавляют на главный экран iPhone или iPad
Иконки манифестаPNG 192×192 и 512×512Главный экран Android и установленные веб-приложения

Большинство браузеров также сами запрашивают /favicon.ico из корня сайта, если на странице нет ссылки на иконку, поэтому favicon.ico в корне это полезное значение по умолчанию. Атрибут sizes сообщает браузеру размер каждого файла, чтобы он мог выбрать самый подходящий. Используйте rel="icon"; старый rel="shortcut icon" работает только потому, что браузеры игнорируют лишнее слово.

Favicon из эмодзи

Для прототипа или личной страницы эмодзи быстро превращается в favicon. Поместите его внутрь элемента SVG <text>:

%F0%9F%8D%AA это эмодзи печенья, закодированное для URL. Эмодзи рисует шрифт эмодзи операционной системы, поэтому в Windows, macOS и Android он выглядит по-разному, и для настоящего продукта лучше нарисованная иконка.

Иконка, которая следует темной теме

SVG favicon может нести собственный CSS, включая медиазапрос prefers-color-scheme, поэтому темная иконка может становиться светлой, когда браузер использует темную тему:

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

Смена favicon через JavaScript

Сайты меняют favicon, чтобы показать точку уведомления или цвет статуса. Нарисуйте новую иконку на <canvas> и присвойте href ссылки изображение с canvas:

На настоящей странице в Chrome или Firefox иконка вкладки меняется каждый раз, когда задается href, в тот же момент, когда здесь меняется картинка превью.

Частые ошибки

  • Неправильный путь. href="favicon.ico" указывается относительно текущей страницы, поэтому ломается на /blog/post. Используйте путь от корня: href="/favicon.ico".
  • Ожидание, что обновление появится сразу. Браузеры сильно кэшируют favicon. Перезагрузите страницу с очисткой кэша или поменяйте URL (/favicon.ico?v=2), когда заменяете иконку.
  • Детальный логотип, уменьшенный до 16 пикселей. Упростите его: одна буква или одна фигура с сильным контрастом.
  • Только SVG. Оставьте также ICO или PNG для браузеров без поддержки SVG favicon и добавьте apple-touch-icon для iOS.
  • Ссылка в <body>. Держите ее в <head> вместе с тегом title и другими метаданными.

Часто задаваемые вопросы

Как добавить favicon в HTML?

Положите файл иконки на сайт и добавьте <link rel="icon" href="/favicon.ico"> (или путь к PNG либо SVG) внутрь <head>. Тогда браузеры покажут его на вкладке, в закладках и в истории.

Какого размера должен быть favicon?

Нужен favicon.ico (или PNG) 32×32 для вкладок, SVG, который масштабируется до любого размера, и PNG apple-touch-icon 180×180 для главного экрана iPhone. Веб-приложения с манифестом также указывают PNG 192×192 и 512×512.

Почему не отображается favicon?

Обычные причины: неправильный путь в href, <link> стоит вне <head> или браузер все еще показывает старую иконку из кэша. Откройте URL иконки напрямую, чтобы проверить путь, затем перезагрузите страницу с очисткой кэша или добавьте к URL версию, например ?v=2.

Можно ли использовать SVG или PNG как favicon?

Да. Используйте <link rel="icon" href="/icon.svg" type="image/svg+xml"> или <link rel="icon" href="/icon.png" type="image/png">. SVG работает в Chrome, Edge и Firefox; оставьте также ICO или PNG для браузеров без его поддержки.

Нужен ли rel="shortcut icon"?

Нет. rel="icon" это стандартное значение. Слово shortcut осталось от старого Internet Explorer и в современных браузерах ничего не делает.

Можно ли использовать эмодзи как favicon?

Да, если обернуть его в SVG: data URI с SVG, где элемент <text> содержит эмодзи. Это удобно для прототипов, но эмодзи выглядит по-разному в каждой операционной системе.

Coddy programming languages illustration

Учитесь программировать с Coddy

НАЧАТЬ