A painfully obsessive cheat sheet to favicon sizes/types. Compiled from:
- http://www.jonathantneal.com/blog/understand-the-favicon/
- https://en.wikipedia.org/wiki/Favicon.ico
- http://snook.ca/archives/design/making_a_good_favicon
- http://www.netmagazine.com/features/create-perfect-favicon
- http://mathiasbynens.be/notes/touch-icons
- http://www.ravelrumba.com/blog/android-apple-touch-icon/
- http://msdn.microsoft.com/en-us/library/ie/gg491740(v=vs.85).aspx
Basics
Insert into `<head>`:
.. code-block:: html
<link rel="icon" sizes="16x16 32x32" href="/path/to/favicon.ico">
<!--[if IE]><link rel="shortcut icon" href="/path/to/favicon.ico"><![endif]-->
This is optimized for the best experience in every desktop browser:
* Most browsers use the standard HTML5-style line 1.
* IE 9 and below will use line 2, the inner part of which follows the spec in http://msdn.microsoft.com/en-us/library/ie/gg491740(v=vs.85).aspx
* Note: IE 10 doesn't support conditional comments. There is no documentation
on whether IE 10 has HTML5-style icon declaration support. TODO: verify
whether IE 10 will use line 1.
Optional But Encouraged
You probably also want the following:
-
Touch icon for iOS 2.0+ and Android 2.1+:
.. code-block:: html
<link rel="apple-touch-icon-precomposed" href="path/to/favicon-152.png">
-
IE 10 Metro tile icon (Metro equivalent of apple-touch-icon):
.. code-block:: html
<meta name="msapplication-TileColor" content="#FFFFFF"> <meta name="msapplication-TileImage" content="/path/to/favicon-144.png">
Replace #FFFFFF with your desired tile color.
Very Optional, for the Obsessive
If you're obsessive, you want all this too:
1. Largest to smallest apple-touch-icons:
.. code-block:: html
<!-- For iPad with high-resolution Retina display running iOS ≥ 7: -->
<link rel="apple-touch-icon-precomposed" sizes="152x152" href="/path/to/favicon-152.png">
<!-- For iPad with high-resolution Retina display running iOS ≤ 6: -->
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="/path/to/favicon-144.png">
<!-- For iPhone with high-resolution Retina display running iOS ≥ 7: -->
<link rel="apple-touch-icon-precomposed" sizes="120x120" href="/path/to/favicon-120.png">
<!-- For iPhone with high-resolution Retina display running iOS ≤ 6: -->
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="/path/to/favicon-114.png">
<!-- For first- and second-generation iPad: -->
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="/path/to/favicon-72.png">
<!-- For non-Retina iPhone, iPod Touch, and Android 2.1+ devices: -->
<link rel="apple-touch-icon-precomposed" href="/path/to/favicon-57.png">
2. Favicons targeted to any additional png sizes that you add that aren't covered above:
.. code-block:: html
<link rel="icon" href="/path/to/favicon-32.png" sizes="32x32">
The Images
----------
Create at least this:
============= =============== =======================================================================
Sizes Name Purpose
============= =============== =======================================================================
16x16 & 32x32 favicon.ico Default required by IE. Chrome and Safari may pick ico over png, sadly.
============= =============== =======================================================================
More about favicon.ico below. Yes, it's 1 file with multiple sizes.
If you also sort of care about iOS and Android but are lazy:
======= =============== =======================================================================
Size Name Purpose
======= =============== =======================================================================
152x152 favicon-152.png General use iOS/Android icon, auto-downscaled by devices.
======= =============== =======================================================================
But keep in mind that icons with complex detail often don't downscale well.
Often you have to tweak subtle design details for smaller sizes.
If you're obsessive, create these too:
======= =============== =======================================================================
Size Name Purpose
======= =============== =======================================================================
32x32 favicon-32.png Certain old but not too old Chrome versions mishandle ico
57x57 favicon-57.png Standard iOS home screen (iPod Touch, iPhone first generation to 3G)
72x72 favicon-72.png iPad home screen icon
96x96 favicon-96.png GoogleTV icon
120x120 favicon-120.png iPhone retina touch icon (Change for iOS 7: up from 114x114)
128x128 favicon-128.png Chrome Web Store icon
144x144 favicon-144.png IE10 Metro tile for pinned site
152x152 favicon-152.png iPad retina touch icon (Change for iOS 7: up from 144x144)
195x195 favicon-195.png Opera Speed Dial icon
======= =============== =======================================================================
ICO File
--------
An .ico file contains an icon at multiple sizes. In favicon.ico, create at least these:
======= =======================================================================
Size Purpose
======= =======================================================================
16x16 IE9 address bar, Pinned site Jump List/Toolbar/Overlay
32x32 New tab page in IE, taskbar button in Win 7+, Safari Read Later sidebar
======= =======================================================================
If you're obsessive and don't mind 1-3kb extra size, also include these sizes
in your .ico:
======= =======================================================================
Size Purpose
======= =======================================================================
48x48 Windows site icons (no specifics given by MSDN)
64x64 Windows site icons (no specifics given by MSDN)
======= =======================================================================
Helpful Tools
-------------
I haven't tried them all, so use at your own risk.
* MSDN recommends this web-based .ico creator: http://www.xiconeditor.com
* Resize favicons: http://faviconer.com
* More resizing: https://github.com/abrkn/icon
* Creating .ico files: http://www.imagemagick.org/Usage/thumbnails/#favicon
* Dynamically setting favicons: https://github.com/HenrikJoreteg/favicon-setter
* Fancy favicon tricks: https://github.com/component/piecon
Forcing a Favicon Refresh
-------------------------
* For yourself: Clear the browser cache (Ctrl+F5 or Ctrl+Shift+R).
- Also close and reopen browser if IE.
- If still stuck, try opening new tab. Or see http://stackoverflow.com/questions/2208933/how-do-i-force-a-favicon-refresh
* For yourself and all site visitors: Append a query string. (TODO: find out if any
browsers have problems with this.)
.. code-block:: html
<link rel="shortcut icon" href="http://www.yoursite.com/favicon.ico?v=2" />
FAQ
---
**Why use png in addition to ico?**
**Is it true that favicons should be in the site root?**
No, that's only if you don't explicitly specify the browser/device-specific
`<link>` tags with a favicon path. See https://en.wikipedia.org/wiki/Favicon.ico.
**Is it true that the png has to be named favicon.png?**
No, this has never been true as far as I can tell from my obsessive research.
**Is it true that the ico has to be named favicon.ico?**
If you don't explicitly specify its `<link>` tag, yes. Explicitness is best,
so we both name it `favicon.ico` and explicitly specify the `<link>` tag.
**Why not prefix with "apple-touch-icon"?**
If you don't specify `<link>` tags, iOS looks for files prefixed with
`apple-touch-icon` or `apple-touch-icon-precomposed`. Many (e.g. HTML5
Boilerplate) rely on this assumption, but:
* Explicitly specifying `<link>` tags is clearer and supported by Apple.
* Not hard-coding names as `apple-touch-icon` clears up confusion as to whether
the same icons can be reused for other purposes as-is, e.g. reusing
favicon-144.png for Windows pinned site.
**Why use iOS precomposed icons?**
* iOS non-precomposed icons add rounded corners, drop shadow, and reflective
shine. Sounds great in theory, but in practice the results can be very
frustrating, especially to designers.
* Non-precomposed icons don't work with Android 2.1.
**Why absolute paths?**
Some Firefox versions require absolute paths. Since all browsers support them,
it's the simplest choice.
Contribute!
-----------
Send pull requests if you have anything to add/change, providing citations
and justification. I'd love to see this improve.