Skip to content

Instantly share code, notes, and snippets.

Created January 3, 2011 19:32
Show Gist options
  • Save kentbrew/763822 to your computer and use it in GitHub Desktop.
Save kentbrew/763822 to your computer and use it in GitHub Desktop.
How to short-circuit those annoying favicon requests in node.js
// early experiments with node had mysterious double requests
// turned out these were for the stoopid favicon
// here's how to short-circuit those requests
// and stop seeing 404 errors in your client console
var http = require('http');
http.createServer(function (q, r) {
// control for favicon
if (q.url === '/favicon.ico') {
r.writeHead(200, {'Content-Type': 'image/x-icon'} );
console.log('favicon requested');
// not the favicon? say hai
r.writeHead(200, {'Content-Type': 'text/plain'} );
r.write('Hello, world!');
console.log('Server running at');
Copy link


Copy link

Great and simple! Thank you.

Copy link

Thanks for this! Chrome causes this issue.

Copy link

If you are using express you can do it like this

app.use(express.favicon(__dirname + '/public/favicon.ico'));

Copy link

flpms commented Jul 3, 2014

Great Solution without express! Thanks!

Copy link

Thank you! Exactly what I was looking for. πŸ‘

Copy link

Thanks... Once again.

Copy link

SC7639 commented Sep 24, 2015

Thanks that's what I was looking for πŸ‘

Copy link

jcabasc commented Mar 11, 2016


Copy link

thanks for sharing πŸ‘

Copy link

Great !!!!!

Copy link

Nice one, thanks

Copy link

scc0309 commented May 30, 2016

God Bless you~

Copy link

if you are interested I made and express middleware based on this gist; you can find it here:

// cc @kentbrew

Copy link

Worth noting that this only works if you call return form the main app.js file. I put the above code in a separate router.js file, and it didn't work as expected.

Copy link

DivideBySara commented Jul 29, 2017

@damirkotoric Where would I call return from my server.js file? I'm new to backend Node.js. Installing @mattiaerre 's express-favicon-short-circuit middleware did not help, and I've already posted to, so I am on the hunt for answers to this favicon problem. This is the project I'm working on.

Copy link

Fraasi commented Nov 13, 2017


Copy link

Awais-cb commented Dec 3, 2017

thanks man

Copy link

Thanks a million. This was driving me insane

Copy link

Thank you very much! ^_^

Copy link

Thanks so much .. I was wondering why my page's visitor count was increasing twice on a single request.

Copy link

I read up on StackOverFlow that 204 (No Content) is a better response status than 200 (Success) for silencing the favicon problem! Just saying. good solution, I just like the semantics implied by status 204. :)

Copy link

Great approach. Thank you

Copy link

Thank You.

Copy link

πŸ‘ Thanks!

Copy link

Still useful, thanks good Sir!!! πŸ‘ πŸ‘

Copy link

Thanks much πŸ‘ πŸ‘ πŸ‘

Copy link

Great man, thank you!

Copy link

Alik64 commented May 2, 2022

Exactly what i was looking for! Thanks ! πŸ‘

Copy link

souli2020 commented Feb 20, 2023

I think the solution above don't avoid the favico requests @ least in my case! the solution that i came up with is adding an else statement in the end of my code to avoid all urls that i don't want

const http = require('http');

const server = http.createServer((req, res) => {
    console.log('user hit the server')
    if (req.url === '/') {

                'content-type': 'text/html',

        res.write(`<h1>home page</h1>`)
    else {
            { 'Content-Type': 'text/html' }
        res.write('<h2>Page not found!</h2>');


Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment