You uploaded a sharp SVG favicon, opened Safari, and saw a tiny blurry PNG instead. That's because not every browser reads SVG favicons yet. The fix is a hybrid markup: SVG first, PNG behind it for older engines. This guide walks through the exact HTML pattern, the right file sizes, and the pitfalls that make the fallback silently fail.

Why SVG with PNG Fallback?

The HTML living standard lets you declare multiple <link rel='icon'> tags pointing at different formats. According to the WHATWG HTML spec for rel='icon', browsers scan the list and pick the last tag they recognize. That ordering is the trick: put SVG last so modern browsers prefer it, and PNG ahead so legacy engines fall back gracefully.

This pattern matters because some renderers — older Safari builds, in-app webviews, niche mobile browsers — still ignore SVG entirely. Without a PNG behind it, your visitors see a blank tab.

Prerequisites

Need a clean SVG export? See the SVG favicon design guide for the basics. You can also skip the manual work with a favicon package generator that outputs the full set in one click.

Step-by-Step: Build the SVG + PNG Stack

Step 1: Export a Lean SVG

Save your artwork as a square SVG with viewBox='0 0 100 100'. Strip out editor metadata, hidden layers, and embedded raster fallbacks — they defeat the purpose. A 1KB SVG beats a 15KB PNG in tab clarity.

Step 2: Generate PNG Fallbacks

Export the same artwork at 32x32 and 16x16. If your logo uses transparency, double-check the PNG actually keeps the alpha channel — some exporters flatten it silently. Save them as favicon-32x32.png and favicon-16x16.png.

Step 3: Add the Link Tags in the Right Order

Drop these tags inside your <head>, before any preconnect or preload hints. The order is critical:

&lt;link rel='icon' type='image/png' sizes='32x32' href='/favicon-32x32.png'&gt;
&lt;link rel='icon' type='image/png' sizes='16x16' href='/favicon-16x16.png'&gt;
&lt;link rel='icon' type='image/svg+xml' href='/favicon.svg'&gt;

Browsers iterate top-to-bottom and use the last valid match they support. Putting SVG last means Chrome, Firefox, and Safari pick it; older renderers stop at the PNG.

Step 4: Keep an ICO for Truly Legacy Browsers

If your audience still includes IE11 or very old Edge builds, add an ICO at the very front:

&lt;link rel='icon' type='image/x-icon' href='/favicon.ico'&gt;
&lt;link rel='icon' type='image/png' sizes='32x32' href='/favicon-32x32.png'&gt;
&lt;link rel='icon' type='image/svg+xml' href='/favicon.svg'&gt;

Modern engines ignore the ICO and skip straight to SVG. Legacy browsers that do not understand SVG or type-tagged PNGs still get something.

Step 5: Add Dark Mode Variants (Optional)

SVG lets you ship one file per theme using the media attribute:

&lt;link rel='icon' type='image/svg+xml' href='/favicon-light.svg' media='(prefers-color-scheme: light)'&gt;
&lt;link rel='icon' type='image/svg+xml' href='/favicon-dark.svg' media='(prefers-color-scheme: dark)'&gt;
&lt;link rel='icon' type='image/png' href='/favicon-32x32.png'&gt;

The trailing PNG guarantees browsers without theme awareness still see something instead of a blank square. You can also embed prefers-color-scheme directly inside a single SVG using a <style> block — that is a more advanced approach but it keeps the head markup lean.

Step 6: Verify the Stack

Open DevTools, hit the Network panel, and reload. You should see every declared icon requested once. If only the PNG loads, your SVG path is wrong or the file is not valid XML. If Safari ignores your PNG, the server is probably serving it with the wrong MIME type — force image/png in your server config rather than relying on auto-detection. You can confirm the served MIME by hovering the request in the Network panel.

Common Pitfalls

Wrapping Up

The SVG + PNG fallback pattern is the practical compromise: crisp scalable icons where supported, dependable raster icons everywhere else. Three files, one <head> block, no JavaScript required. Get the order right, validate your MIME types, and test on Chrome, Firefox, and Safari before shipping. Your tab presence will stop being a guessing game.

Need the files pre-built? Mzu favicondl exports a complete SVG + multi-size PNG + ICO package from a single upload, ready to drop into any project.