npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

favicon-stealer

v3.0.0

Published

Get clear and consistent favicon of a website easily

Downloads

702

Readme

favicon-stealer

A react component to get clear and consistent favicon of a website easily.

Installation

npm

npm install favicon-stealer

pnpm

pnpm add favicon-stealer

Usage

import { Favicon } from 'favicon-stealer';

<Favicon url="https://example.com" />

Props

| Name | Type | Description | | ---- | ---- | ----------- | | url | string | The URL of the website to fetch the favicon for. | | src | string | The image src(can be local) of the favicon to display. | | alt | string | The alt text for the favicon image. | | size | number | The size of the favicon in pixels. Default is 32. | | className | string | A class name to apply to the element. | | timeout | number | The timeout in milliseconds before giving up on a slow/unresponsive auto-detected source and trying the next one. A provided src is exempt — it is only abandoned on a real load failure, never on a timeout. Default is 2000 (2 seconds). | | lazy | boolean | Whether to load the favicon lazily. Default is false. | | border | boolean | Whether to show a border around the favicon. Default is false. | | padding | number | The padding in pixels.(px) Default is 0. | | background | string | The background color of the favicon. Default is transparent.(in hex) | | borderRadius | number | The border radius in pixels.(px) Default is 0. | | preferFallback | boolean | Whether to prefer fallback service (e.g.Google's favicon service) over the website's own favicon. Default is false. | | preferSrc | boolean | Whether to try the provided src before auto-detecting the website's own favicon (if both are provided). If src fails to load it falls back to auto-detection either way. Default is true. |

NPM Package

favicon-stealer - npm

GitHub Repository

favicon-stealer - github

License

MIT License

Changelog

  • v1.0.0: Initial release (2025.1.21)
  • v1.0.1: Add README.md (2025.1.21)
  • v1.0.2: Update license to MIT (2025.1.21)
  • v1.1.0: Fix show bug(2025.2.1)
  • v1.2.0: Add props(lazy, border, padding, background, borderRadius)(2025.2.1)
  • v1.4.0: Improved favicon detection and optimized package size; Added preferGoogle option and improved favicon loading reliability (2025.2.27)
  • v1.5.0: Update default timeout to 3000(3 seconds) (2025.2.27)
  • v1.6.0: change prop preferGoogle to preferFallback (2025.2.27)
  • v1.8.0: Add props(src, alt, preferSrc), add new fallback(favicon.im)(2025.3.13)
  • v1.9.0: Fix show bug when use 'src'(2025.3.26)
  • v2.0.0: Dual ESM/CJS build with an exports map — fixes Vite 8 / modern bundler SSR "exports is not defined". Breaking: output is now a single bundle, deep sub-path imports (e.g. favicon-stealer/dist/Favicon) are gone (2026.6.20)
  • v3.0.0: Rewrite of favicon resolution + rendering.
    • BREAKING: react is now a peerDependency (consumer must provide React); the unused react-dom peer was dropped.
    • BREAKING: styling is fully self-contained inline style — no Tailwind classes are emitted, and default padding/borderRadius/background no longer override your className.
    • BREAKING: src behavior — preferSrc is now honored, a provided src no longer times out (it falls back only on a real load failure), the default timeout is now 2000ms (was 3000), and the candidate source list was trimmed, so some sites/inputs resolve differently.
    • Fixes: src load-failure no longer hangs on the skeleton; reload on url/src change without a stale frame or wasted request; cache/SSR hits use img.decode() (feature-detected — falls back to naturalWidth on engines without it, e.g. old WebViews / jsdom; no false-negative on dimension-less SVGs); offscreen lazy images wait for the viewport instead of being timed out through every source to the letter fallback; de-duped sources (no key collision); border works; alt="" is honored for decorative icons (and the loading image is silent to screen readers until shown); empty/invalid url no longer renders a blank box; pulse keyframes inject once per document (DOM-id de-duped across HMR / duplicate copies); FaviconProps is exported. (2026.6.21)