← Back to blog

How to Download Favicons from a Website URL (All Sizes)

Editorial illustration showing browser windows with favicon icons in multiple sizes alongside color swatches and eyedropper tools, on an off-white background

How to Download Favicons from a Website URL (All Sizes)

The quickest way to grab a favicon is to append /favicon.ico to any domain and hit enter. It works most of the time. The problem is that what you get is usually a 16x16 or 32x32 ICO file, which is fine for browser tab rendering but useless for a brand deck, a competitor comparison slide, or any kind of high-DPI design work.

Modern sites publish favicons at multiple sizes across multiple formats. Here is how to find and download all of them.

The /favicon.ico Method (and Its Limits)

Starting with the obvious: open a new tab and type https://example.com/favicon.ico. Most servers will return something. You can right-click, save the file, and move on.

Where this fails:

For anything beyond a quick sanity check, the ICO path is a starting point, not a destination.

Reading the HTML <head> for Declared Favicons

The most reliable method is checking what the site actually declares. View the source of any page (Cmd+U on Mac, Ctrl+U on Windows/Linux) and search for rel="icon". A well-configured site will have several link tags:

<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="96x96" href="/favicon-96x96.png">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
<link rel="manifest" href="/site.webmanifest">

Each href is a path you can copy and combine with the site's origin to get a direct download URL. The apple-touch-icon at 180x180 is typically the largest PNG declared directly in the HTML. If there is an SVG version, that is the best quality option regardless of display size.

Downloading via the Web App Manifest

The manifest link in the HTML head points to a JSON file that contains the full icon set. Fetch it directly:

curl -s https://example.com/site.webmanifest

The response will include an icons array with paths and sizes:

{
  "icons": [
    { "src": "/icons/icon-192x192.png", "sizes": "192x192", "type": "image/png" },
    { "src": "/icons/icon-512x512.png", "sizes": "512x512", "type": "image/png" },
    { "src": "/icons/icon.svg", "sizes": "any", "type": "image/svg+xml", "purpose": "maskable" }
  ]
}

The 512x512 PNG is sufficient for almost any use case. The SVG, if present, is the cleanest option because it scales to any size without quality loss.

One thing to watch: icons marked "purpose": "maskable" include extra padding for Android's adaptive icon system. They are designed to be cropped into a circle, so the visible artwork sits inside a central safe zone. For display use rather than installation, look for a non-maskable variant.

Using curl to Download Specific Sizes

Once you have a direct URL, downloading is straightforward:

# Download the 512x512 PNG
curl -o favicon-512.png https://example.com/icons/icon-512x512.png

# Download the SVG
curl -o favicon.svg https://example.com/favicon.svg

# Download everything in one pass using a simple loop
for size in 32x32 96x96 180x180 192x192 512x512; do
  curl -sO "https://example.com/favicon-${size}.png"
done

If you need to check whether a path actually returns an image rather than a 404, add -I to check the response headers first:

curl -I https://example.com/favicon-512x512.png

A 200 status with Content-Type: image/png confirms the file exists.

The Google Favicon API

Google maintains a public endpoint that returns a favicon for any domain at a specified size:

https://www.google.com/s2/favicons?sz=64&domain=example.com

Change sz to 16, 32, 64, or 128 to get different sizes. This is useful for quick tooling or when you want a consistent fallback that does not require scraping the target site's HTML. It works even when a site has an unusual setup, since Google has already crawled and cached the favicon.

The catch is that you are getting Google's cached version, which may lag behind recent favicon updates, and you are limited to the sizes Google exposes rather than whatever the site originally published.

Using DevTools When Paths Are Non-Standard

Some sites serve favicons through CDN paths with cache-busting hashes, or load them via JavaScript. In those cases, the Network tab in browser DevTools catches everything the browser actually fetches.

Open DevTools, go to the Network tab, filter by Img, reload the page, and sort by time or name. Look for small image requests early in the waterfall. Right-click any result and choose Open in new tab to get the full URL, then download from there.

Downloading Favicons at Scale

All of these steps work fine for a single site. For a competitive audit covering 15 or 20 brands, going through source view and manifests manually eats up time fast.

Use Inspect Brand to pull favicons and full brand assets from any URL in one step. It reads the HTML head, fetches the manifest if one is declared, and returns the best available icon along with the complete color palette and font stack. If you are running a brand comparison or building a competitive reference doc, you can go from a list of URLs to organized, exportable brand data without repeating the same DevTools workflow for each domain.

Format Trade-offs at a Glance

If a site only has an ICO file and you need a clean PNG, ImageMagick can extract individual sizes from it:

convert favicon.ico favicon_%d.png

This outputs each embedded resolution as a separate PNG. It is a decent fallback, but the HTML head route will turn up a better option before you need to reach for this.

---

The full download workflow takes under two minutes per site: check the <head> for declared icons, grab the manifest if it is listed, and use the Network tab when paths are obscured. For research across multiple brands, use Inspect Brand to skip the repetitive manual steps and get clean structured output from a URL list.

More free tools from Landing Page Labs