@iocium/favicon-extractor - v1.1.0
    Preparing search index...

    @iocium/favicon-extractor - v1.1.0

    @iocium/favicon-extractor

    npm build codecov npm downloads bundle size types license

    Extracts all relevant favicons, Apple touch icons, Android web app icons, and manifest-defined icons from a given URL.
    Designed to be edge-compatible (Cloudflare Workers safe) and fully testable in Node.js.


    • Parses HTML <link> and <meta> tags for favicon/icon references
    • Follows <link rel="manifest"> to extract additional icons
    • Groups icons by platform (standard, Apple, Android)
    • Identifies the largest icon per MIME type
    • Fully type-safe (written in TypeScript)
    • Compatible with Cloudflare Workers and Node.js environments

    npm install @iocium/favicon-extractor
    

    import { FaviconExtractor } from "@iocium/favicon-extractor";

    const extractor = new FaviconExtractor();

    const icons = await extractor.fetchAndExtract("https://example.com");
    console.log(icons);

    const grouped = extractor.groupIcons(icons);
    /*
    {
    standardIcons: [...],
    appleTouchIcons: [...],
    androidIcons: [...]
    }
    */

    const withMimeTypes = extractor.addMimeTypes(icons);
    /*
    [
    { url: "...", type: "...", size: "...", mimeType: "image/png" },
    ...
    ]
    */

    const largestIcons = extractor.getLargestIconsByMimeType(icons);
    

    Each returned icon is the highest resolution found for that MIME type.


    // If you already have raw relative icon paths:
    extractor["icons"] = ["/favicon.ico", "images/logo-192.png"];
    const absoluteUrls = extractor["normalizeIcons"]("https://example.com");

    console.log(absoluteUrls);
    // โ†’ ["https://example.com/favicon.ico", "https://example.com/images/logo-192.png"]

    npm run test
    
    npm run test:coverage
    

    Open the full report:

    open coverage/lcov-report/index.html
    

    Thresholds: 90% branches / 100% lines / 100% statements


    This library is compatible with Cloudflare Workers thanks to:

    • No use of Node-specific APIs
    • HTMLRewriter support with test mocks
    • Lightweight and modular core

    MIT


    Pull requests and improvements welcome!
    Feel free to file an issue if you need support for additional icon types or HTML quirks.