Find a site's logo from twelve independent signals

FeatureSecurityService
Shipped
August 25, 2026 at 4:36 PM UTC
Author
Kamo
Commit
16a2c73

Twelve rather than one because there is no single place a logo lives. A Shopify store declares it in JSON-LD; WordPress puts it in a header img; a React app renders its header after hydration so only the manifest and favicons survive in the initial HTML; a hand-built site has nothing but /favicon.ico. Any one signal finds a logo on about half of real sites. Scored twice on purpose -- what the page CLAIMS, then what the bytes turn out to be. The best possible declaration can still point at a 1x1, and a fine 512px PNG in a footer is probably a payment-provider badge. Two misses the tests caught, both real shapes rather than hypotheticals: selecting on img[src] skipped <img data-src> entirely, which is what a lazy loader ships for an above-the-fold header logo since the src is written by JS we never run; and the inline-SVG size floor rejected an svg the site had itself classed "logo", when a compact mark really can be a hundred bytes of path data. A site's own claim now outranks the floor.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing