O'Reilly

Create a Blank Favicon with Data

By on  

I was recently setting up a virtual host and diving into development when I needed to debug a JavaScript issue.  One thing that started annoying me right away was the console message notifying me that the favicon.ico file couldn't be found.  I hadn't put one there and had no desire to...but that damn message was bugging the hell out of me.  I did a quick search and found a tiny data URL snippet to include a blank favicon within the page.

The HTML

The empty favicon is created with the LINK element:

<link href="data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQEAYAAABPYyMiAAAABmJLR0T///////8JWPfcAAAACXBIWXMAAABIAAAASABGyWs+AAAAF0lEQVRIx2NgGAWjYBSMglEwCkbBSAcACBAAAeaR9cIAAAAASUVORK5CYII=" rel="icon" type="image/x-icon" />

Essentially, instead of linking the external ico file, the image data is placed in the HREF attribute.  Cool, huh?  No more annoying messages and no need to add another file to the repository.

Track.js Error Reporting

Recent Features

  • 5 Ways that CSS and JavaScript Interact That You May Not Know About

    CSS and JavaScript:  the lines seemingly get blurred by each browser release.  They have always done a very different job but in the end they are both front-end technologies so they need do need to work closely.  We have our .js files and our .css, but...

  • Responsive Images: The Ultimate Guide

    Chances are that any Web designers using our Ghostlab browser testing app, which allows seamless testing across all devices simultaneously, will have worked with responsive design in some shape or form. And as today’s websites and devices become ever more varied, a plethora of responsive images...

Incredible Demos

  • Skype-Style Buttons Using MooTools

    A few weeks back, jQuery expert Janko Jovanovic dropped a sweet tutorial showing you how to create a Skype-like button using jQuery. I was impressed by Janko's article so I decided to port the effect to MooTools. The XHTML This is the exact code provided by...

  • Highlight Table Rows, Columns, and Cells Using MooTools 1.2.3

    Row highlighting and individual cell highlighting in tables is pretty simple in every browser that supports :hover on all elements (basically everything except IE6). Column highlighting is a bit more difficult. Luckily MooTools 1.2.3 makes the process easy. The XHTML A normal table. The cells...

Discussion

  1. Michael Tully

    The exact same thing annoyed me in the exact same environment, thanks for the heads up Dave :)

  2. Hi david,
    Favicon is the thing which people generally forgot to add in site and they got very massive 404 error for that, which is not shown to user but affect the site loading time, Thanks for easy and quick solution…

    Avinash

  3. It’s also probably worth noting this could be used for making dynamic icons without saving data to your host. Like a pretty graphic that displays the user’s name? Just throw the href attribute into the src attribute of a image tag.

    IE6 is the only browser I have found this not to work on.

  4. Thats pretty cool, i’ve seen the base64 images like that before, does anyone know the full browser compatibility for using that?

  5. This is the best solution, no more calls to /favicon.icon!

  6. The W3C Validator uses this technique, too, to show if the site is valid or not in the URL bar.

    http://validator.w3.org/check?uri=http%3A%2F%2Fjanbuschtoens.de%2F

  7. Did you use any converter to turn your favicon into a long base64 string?
    Thanks!

  8. I’m pretty sure Data URIs don’t work in IE7.

    http://stackoverflow.com/questions/1765342/which-browsers-support-data-uris-and-since-which-version

    However, now that IE9 is out, SCREW IE7!

    And IE6 has been dead to me for nigh on 3 years. Except where I’m currently working. : (

  9. Thanks a lot :), have a nice day sir!

  10. I’d really like to hear more about that… is it possible to change the favicon using JavaScript while the page is loaded? That would be neat for WebApplications stuck in an unopened tab to notify the user that something has happened, for instance with aninstant messenging thingy.

  11. Peter

    Surely that should be “debugging the hell out of me”?

    Sorry… couldn’t resist!

    :-)

  12. JR

    Beware of Internet Explorer!!!

    As someone have said, this doesn’t work in IE6 or 7. In IE8 and above works.

    Nevertheless there are solutions to integrate images this way with MHTML
    http://www.phpied.com/mhtml-when-you-need-data-uris-in-ie7-and-under/

  13. Interesting article! Do you know about setting base64 favicons globally with .htaccess? My website is configured to include the favicon regardless of what file you’re viewing, including images, CSS, and JavaScript files.

  14. thanks a lot dude. i manage to change my favicon with this tutorial.

Wrap your code in <pre class="{language}"></pre> tags, link to a GitHub gist, JSFiddle fiddle, or CodePen pen to embed!

Recently on David Walsh Blog

  • Loading Static Templates for Intern Testing

    I use Intern by SitePen for all of my JavaScript functional testing.  Intern has loads of features other functional test frameworks don't and it's completely Promise-based -- something I got very used to when I used the Dojo Toolkit every day. Async test creation can...

  • Convert Video to mp3

    Let's all be honest for a moment:  we've all ... not paid for ... music.  Whether it was via a file sharing app like Kazaa or Napster, or it was downloading and seeding on bittorrent, or maybe even downloading a music video and ripping its audio,...

  • Sort git Branches by Date

    I'll be first person to admit I don't do as much git repository maintenance as I should.  I rarely delete branches which have been merged, so a git branch execution shows me a mile-long list of branches that likely aren't relevant.  The best way to find branches I've recently...

  • Best Tools and Resources for Web Professionals in 2015

    Looking for the right resources to help you satisfy the needs of your clients? On the lookout for the best tools to help you increase your revenue? Searching for the right software to help you improve your business? Well, then you’ve come to the right place....

  • JavaScript Polling

    Polling with JavaScript is one of those ugly but important functions within advanced front-end user experience and testing practices.  Sometimes there isn't the event you can hook into to signify that a given task is complete, so you need to get your hands dirty and simply poll for...