How to download the favicon on any website
Here's a technical breakdown of how to trigger favicon downloads through browser console commands, with explanations of key implementation details:
Core Implementation
// Retrieve favicon URL from document metadata
const faviconLink = document.querySelector("link[rel*='icon']")?.href || "/favicon.ico";
// Create temporary anchor element
const link = document.createElement('a');
link.href = faviconLink;
// Configure download behavior
link.download = 'favicon.ico';  // Forces file download instead of navigation
// DOM manipulation required for Firefox compatibility
document.body.appendChild(link); 
// Simulate user click interaction
link.click();
// Cleanup DOM changes
document.body.removeChild(link);
Key Components Explained
1. Favicon Location Resolution
- Searches <link>elements forrel="icon"attributes
- Falls back to default /favicon.icopath
- Uses optional chaining (?.) for null safety
2. Anchor Element Configuration
- downloadattribute triggers file save dialog
- Filename explicitly set to favicon.ico
- Temporary element avoids visual pollution
3. Browser-Specific Handling
- Firefox requires DOM attachment for download initiation
- Element removal prevents memory leaks
4. Security Considerations
- Same-origin policy restrictions apply
- HTTPS sites block HTTP favicon downloads
- CORS headers may prevent cross-domain downloads
Full Implementation with Error Handling
function downloadFavicon(filename = 'favicon.ico') {
  try {
    const favicon = document.querySelector("link[rel*='icon']")?.href 
      || `${window.location.origin}/favicon.ico`;
    
    const link = document.createElement('a');
    link.href = favicon;
    link.download = filename;
    
    document.body.appendChild(link);
    link.click();
    document.body.removeChild(link);
    
    return true;
  } catch (error) {
    console.error('Favicon download failed:', error);
    return false;
  }
}
// Usage example
downloadFavicon('website-favicon.ico');
Browser Compatibility Table
| Browser | DOM Attachment Required | Supported Formats | 
|---|---|---|
| Chrome | No | .ico, .png, .svg | 
| Firefox | Yes | .ico, .png | 
| Safari | No | .ico, .png | 
| Edge | No | .ico, .png | 
Common Use Cases
- Browser extension development
- Website asset backup tools
- Favicon-based web scrapers
- Progressive Web App (PWA) generators
Note: Modern browsers may block downloads without user interaction in some security contexts. This technique works best when executed through explicit user actions like button clicks.
 
            