Migrate
Migrate from the Clearbit Logo API
Replace logo.clearbit.com URLs with the Brand Identity API logo CDN in one line, with the size and format parameters mapped.
What happened
HubSpot shut down Clearbit's free Logo API on December 8, 2025 (their announcement). Every logo.clearbit.com URL in an app now shows a broken image. The Brand Identity API logo CDN takes the same kind of URL: a domain in the path, options in the query, no key needed for indexed brands.
The one-line change
- <img src="https://logo.clearbit.com/stripe.com" alt="Stripe logo" />
+ <img src="https://brandidentityapi.com/logo/stripe.com" alt="Stripe logo" />The default is a square icon, 128 pixels on its longest side, the closest match to what Clearbit returned. For the full wordmark add ?type=logo.
format parameter we send WebP to clients that list it in their Accept header (every current browser's <img>) and PNG to everything else, so server-side fetches keep working unchanged. Email templates are opened by clients we cannot see, so add ?format=png there.Parameter mapping
| Clearbit | Brand Identity API | Notes |
|---|---|---|
| ?size=128 | ?size=128 | The longest side in pixels, 16 to 1024. Both default to 128. |
| PNG by default | ?format=png | WebP when the client accepts it, else PNG. Add format=png for emails. Also svg and jpeg. |
| ?greyscale=true | (none) | Use CSS: filter: grayscale(1). |
| 404 for an unknown domain | ?fallback=404 | The default is a monogram tile instead. Add fallback=404 if your onerror handler expects a 404. |
Things Clearbit never had: background=dark for a logo that reads on a dark page, type=logo for the wordmark and format=svg for the vector file. See the Logo API.
Find and replace
In most codebases the change is one search and replace:
# Preview every file that still uses the old host.
grep -rl "logo.clearbit.com" src/
# Replace it (GNU sed; on macOS use sed -i '').
grep -rl "logo.clearbit.com" src/ | xargs sed -i 's#https://logo.clearbit.com/#https://brandidentityapi.com/logo/#g'If you stored Clearbit URLs in a database, update them the same way, or better, store only the domain and build the URL when you render. Then the next move is one constant, and the format is one argument:
const LOGO_HOST = "https://brandidentityapi.com";
// format "png" for email templates and PDFs; "webp" is smaller in browsers.
export function logoUrl(domain, size = 128, format = "webp") {
return `${LOGO_HOST}/logo/${encodeURIComponent(domain)}?size=${size}&format=${format}`;
}Missing logos
Without a key, the CDN serves brands that are already in our index and a monogram for the rest. To have unknown domains crawled on first request, add a publishable key as ?key=. It is free, and the logo CDN never spends lookups.
img-src policy, replace logo.clearbit.com with brandidentityapi.com in it.More than logos
Clearbit's logo URL gave you an image and nothing else. The Brand API returns the company's colors, fonts, social links and firmographics from the same domain, and your first 50 lookups are free. If you used Clearbit's company autocomplete as well, /v1/search is the closest match: it takes a name and returns domains with icons.
- Swap the host in your logo URLs.
- Add
?format=pngwhere logos go into emails or PDFs. - Add a publishable key if you show logos for small or new companies.
- Update your Content Security Policy, if you have one.