Why does Firefox perform a favicon lookup when the website doesn't request one?

If I visit https://example.com/, I see:

GET
https://example.com/favicon.ico
[HTTP/3 404  150ms]


GET
	https://example.com/favicon.ico
Status
404
VersionHTTP/3
Transferred1.72 kB (1.26 kB size)
Referrer Policystrict-origin-when-cross-origin
DNS ResolutionSystem


    accept-ranges
    	bytes
    alt-svc
    	h3=":443"; ma=93600,h3-29=":443"; ma=93600,quic=":443"; ma=93600; v="43"
    cache-control
    	max-age=0, no-cache, no-store
    content-length
    	1256
    content-type
    	text/html
    date
    	Fri, 30 May 2025 22:10:15 GMT
    etag
    	"84238dfc8092e5d9c0dac8ef93371a07:1736799080.121134"
    expires
    	Fri, 30 May 2025 22:10:15 GMT
    last-modified
    	Mon, 13 Jan 2025 20:11:20 GMT
    pragma
    	no-cache
    quic-version
    	0x00000001
    server
    	AkamaiNetStorage

    Accept
    	image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5
    Accept-Encoding
    	gzip, deflate, br, zstd
    Accept-Language
    	en-GB,en;q=0.5
    Alt-Used
    	example.com
    Connection
    	keep-alive
    Host
    	example.com
    Priority
    	u=6
    Referer
    	https://example.com/
    Sec-Fetch-Dest
    	image
    Sec-Fetch-Mode
    	no-cors
    Sec-Fetch-Site
    	same-origin
    TE
    	trailers
    User-Agent
    	Mozilla/5.0 (X11; Linux x86_64; rv:138.0) Gecko/20100101 Firefox/138.0

Why is it requesting an .ico? I’ve been informed by IANA that none is set:

I think you will find it is typical user agent behavior for web browsers to request a favicon.ico from a web server in order to establish if there is an icon available for UI purposes. I suspect there is special logic when it comes to local files not to do this. Perhaps if you wanted to experiment you could put your example HTML in a remote server to see this behavior.

Either way, I don’t believe there is anything on our web server that is conditioning this behavior.

Most browsers are doing the same in order to follow the HTML specification. Here’s the revelant bit of information from the specification:

In the absence of a link with the icon keyword, for Document objects whose URL’s scheme is an HTTP(S) scheme, user agents may instead run these steps in parallel:

  1. Let request be a new request whose URL is the URL record obtained by resolving the URL “/favicon.ico” against the Document object’s URL, client is the Document object’s relevant settings object, destination is “image”, synchronous flag is set, credentials mode is “include”, and whose use-URL-credentials flag is set.

In other words, if a <link rel="icon" ...> tag is missing, the browser will attempt to get the file at /favicon.ico.

1 Like