Skip to main content
Most logo problems are visual, not HTTP errors: the image loads with a 200 but doesn’t look right. Find your symptom below. For status codes like 401, 403, and 429, see errors and status codes.
SymptomCause
White or colored box behind the logoDefault format=jpg is opaque
A monogram instead of the real logoNo logo available for that domain
Blurry or low-resolution logoUpscaled past the source, or no retina
Wrong logo for the companyThe record needs updating
Logo doesn’t render at allContent Security Policy or a bad key
next/image errors about the hostnameimg.logo.dev not in remotePatterns
The default format is jpg, which has no transparency. On any colored or dark surface, the logo sits on a white rectangle. Request format=png for a transparent background, and theme to match the logo to your UI:
<img src="https://img.logo.dev/stripe.com?token=LOGO_DEV_PUBLISHABLE_KEY&format=png&theme=dark" alt="Stripe logo" />
theme=dark lightens logos with dark colors so they read on dark backgrounds. theme=light does the reverse. See format and theme. When Logo.dev has no logo for a domain, it returns a generated monogram (a black-and-white mark with the domain’s first letter) so your UI never shows a broken image. A monogram means Logo.dev has no logo for that domain, not that the request failed. If the domain should have one, request an update. To detect a missing logo in code instead of showing the monogram, set fallback=404 and handle the error. See fallback images for the full pattern, including the onerror handler. Logos render up to 800 pixels. A larger size upscales the source, and the result looks soft. Request the size you display, and add retina=true to serve a 2x image for high-density screens:
<img src="https://img.logo.dev/stripe.com?token=LOGO_DEV_PUBLISHABLE_KEY&size=128&retina=true" alt="Stripe logo" />

Wrong logo for the company

If a domain returns an outdated or mismatched logo, request an update. The team refreshes the database daily, and corrections usually land within 24 hours.

Logo doesn’t render at all

Check the browser console. A line like Refused to load the image ... because it violates the following Content Security Policy directive means your Content-Security-Policy is blocking it. Add img.logo.dev to your img-src directive. See CORS and Content Security Policy. If the request returns 401, the publishable key is missing or wrong, or domain restrictions are blocking it: a key with Allowed Domains Only enabled rejects requests from unlisted domains, localhost, or any context that sends no Referer. Check the key’s allowed domains before rotating it. See API keys.

next/image errors about the hostname

next/image rejects external images until you allow their hostname. Add img.logo.dev to images.remotePatterns. See Use Logo.dev with Next.js.