1.1.0 โข Published 6 months ago
@iocium/favicon-extractor v1.1.0
@iocium/favicon-extractor
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.
๐ Features
- 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
 
๐ฆ Installation
npm install @iocium/favicon-extractor๐งช Basic Usage
import { FaviconExtractor } from "@iocium/favicon-extractor";
const extractor = new FaviconExtractor();
const icons = await extractor.fetchAndExtract("https://example.com");
console.log(icons);โ๏ธ Grouping and MIME Support
const grouped = extractor.groupIcons(icons);
/*
{
  standardIcons: [...],
  appleTouchIcons: [...],
  androidIcons: [...]
}
*/
const withMimeTypes = extractor.addMimeTypes(icons);
/*
[
  { url: "...", type: "...", size: "...", mimeType: "image/png" },
  ...
]
*/๐ผ๏ธ Get the Largest Icon by Type
const largestIcons = extractor.getLargestIconsByMimeType(icons);Each returned icon is the highest resolution found for that MIME type.
๐ง Advanced: Manual Normalization
// 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"]๐งช Running Tests
npm run testโ With Coverage
npm run test:coverageOpen the full report:
open coverage/lcov-report/index.htmlThresholds: 90% branches / 100% lines / 100% statements
๐ท Built for Edge Platforms
This library is compatible with Cloudflare Workers thanks to:
- No use of Node-specific APIs
 HTMLRewritersupport with test mocks- Lightweight and modular core
 
๐งโ๐ป License
MIT
๐ Contributing
Pull requests and improvements welcome!
Feel free to file an issue if you need support for additional icon types or HTML quirks.