So bereitest du 2025 ein Favicon vor
(evilmartians.com)- Da die Erstellung von Favicons immer komplexer geworden ist, werden oft mehr als 20 PNG-Dateien verwendet, nur um das Website-Logo in Browser-Tabs oder auf Touchscreens anzuzeigen
- Als Alternative wird ein Ansatz vorgeschlagen, der mit vergleichsweise wenigen Icon-Dateien und minimaler Konfiguration die meisten Umgebungen abdeckt
Sehr einfache Version
-
Ohne kompliziertes Setup reichen die fünf wichtigsten Icons und eine JSON-Datei aus
-
Beispiel für die grundlegenden Links im HTML
<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"><!-- 180×180 --> -
Wenn PWA (Progressive Web App) unterstützt wird, kommt noch Folgendes hinzu
<link rel="manifest" href="/manifest.webmanifest"> -
Beispielhafte Struktur der Datei
manifest.webmanifest{ "icons": [ { "src": "/icon-192.png", "type": "image/png", "sizes": "192x192" }, { "src": "/icon-mask.png", "type": "image/png", "sizes": "512x512", "purpose": "maskable" }, { "src": "/icon-512.png", "type": "image/png", "sizes": "512x512" } ] } -
Bei maskierbaren Icons können Teile am Rand abgeschnitten werden, daher empfiehlt es sich, einen kreisförmigen Bereich von 409×409 als sichere Zone vorzusehen
-
Schon mit dieser Konfiguration funktionieren Favicons in den meisten wichtigen Browsern und auf den meisten Geräten zuverlässig
Ausführliche Erklärung
- Favicon leitet sich von „favorite icon“ ab und ist das kleine Icon, das unter anderem in Browser-Tabs angezeigt wird
- Auch Safari unterstützt Favicons inzwischen ordentlich
- Statt für jede Auflösung eigene Icon-Sets zu erstellen, lässt sich das effizient mit SVG, einigen PNG-Icons und einem einfachen Manifest lösen
Die ultimative Favicon-Konfiguration
- Mit einer SVG-Datei, einigen wenigen PNG-Dateien und einer Web-Manifest-Datei lassen sich Icons in verschiedenen Browsern und auf unterschiedlichen Geräten konsistent anzeigen
- SVG ist ein Vektorformat und kann daher je nach Bedarf frei skaliert werden; dank Hintergrund-Download ist auch die Performance-Belastung gering
- Bei PNG werden nur die wirklich nötigen Größen vorbereitet, etwa für Apple (
apple-touch-icon) und PWA-Icons - Ältere Formate wie Windows-Tile-Icons, Safari Pinned Icon oder
rel=“shortcut”sind in aktuellen Browsern weitgehend nicht mehr nötig - Da ältere Browser oder Tools Icons teils direkt über den Pfad
/favicon.icoabrufen, bleibt einfavicon.icoim Root-Verzeichnis weiterhin wichtig
So erstellt man das Ultimate Favicon Set
- Die folgenden Schritte beschreiben den Prozess zum Erstellen und Optimieren der Icons
- Schritt 1: SVG vorbereiten
- Es wird eine Datei
icon.svgmit quadratischem Seitenverhältnis benötigt - Innerhalb von
<svg>kann per CSS-Media-Query ein Farbwechsel für Hell- und Dunkelmodus umgesetzt werden - Wie im Beispiel gezeigt, lässt sich mit
@media (prefers-color-scheme: dark)eine Farbe für den Dunkelmodus festlegen
- Es wird eine Datei
- Schritt 2: ICO-Datei erstellen
icon.svgwird in ein Rasterbild mit 16×16 oder 32×32 umgewandelt, umfavicon.icozu erzeugen- Dafür können Tools wie GIMP oder Inkscape+ImageMagick verwendet werden
- Achte darauf, dass das Logo bei kleinen Auflösungen nicht zu stark verwaschen wirkt
- Schritt 3: PNG-Bilder erstellen
- PNG-Icons werden in den Größen 512×512, 192×192, 180×180 und 512×512 (maskierbar) vorbereitet
- Für das iOS-
apple-touch-iconwird mit 180×180 gearbeitet; ein Hintergrund oder passende Abstände sind dabei sinnvoll - Bei maskierbaren Icons muss ein Bereich von 409×409 als sichere Zone freigehalten werden
- Schritt 4: PNG und SVG optimieren
- SVG wird etwa mit SVGO komprimiert, PNG lässt sich mit Squoosh stärker komprimieren
- Da Nutzer sich in Umgebungen mit eingeschränktem Datenvolumen befinden können, ist eine minimale Dateigröße vorteilhaft
- Schritt 5: Icons im HTML einbinden
- Standardmäßig werden
favicon.ico,icon.svgundapple-touch-icon.pngim Tag<head>eingebunden<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"> - Wenn etwa Webpack verwendet wird, kann das Caching beim Build auch über Hashes verwaltet werden
- Um Staging-(Entwicklungs-)Umgebung und Produktionsumgebung zu unterscheiden, können auch unterschiedliche Favicons verwendet werden
- Standardmäßig werden
- Schritt 6: Web Manifest erstellen
- In der Datei
manifest.webmanifestwerden die Icon-Informationen für PWA hinterlegt und über<link rel="manifest" href="/manifest.webmanifest">eingebunden - Das folgende Beispiel definiert Icons für 192×192, 512×512 (maskierbar) und 512×512
{ "name": "My website", "icons": [ { "src": "/icon-192.png", "type": "image/png", "sizes": "192x192" }, { "src": "/icon-mask.png", "type": "image/png", "sizes": "512x512", "purpose": "maskable" }, { "src": "/icon-512.png", "type": "image/png", "sizes": "512x512" } ] } - In einer Webpack-Umgebung lässt sich das mit Plugins wie
webpack-pwa-manifestautomatisieren
- In der Datei
- Mit einem solchen Vorgehen lassen sich schon mit wenigen Dateien in den meisten Browsern und auf den meisten Geräten passende Favicons anzeigen
- Noch bequemer wird es, wenn dafür ein Automatisierungs-Tool betrieben wird
4 Kommentare
SVG-Favicon wird in Firefox noch nicht unterstützt...
Ah, es war Safari.
In einem Projekt, das ich in einem früheren Unternehmen umgesetzt habe, habe ich ein Webgame entwickelt.
Aus Langeweile habe ich als Easter Egg ein animiertes Favicon eingebaut.
Da ich die Animation mit einem Spritesheet umgesetzt habe, wirkte sie ziemlich überzeugend.
Favicon-Übersicht für 2021
Ich hatte das vor 4 Jahren schon einmal gepostet, jetzt wurde es an die heutigen Anforderungen angepasst aktualisiert.