
# A Brandfetch alternative for product UIs that need consistent logo output

> Brandfetch changed its pricing and access model for the logo API tier. Teams now need a replacement that returns usable, consistent output inside dashboards, CRMs, and browser apps — not just a logo file source.

## What changed with Brandfetch

Brandfetch moved its API access behind a paid plan and added stricter limits on the free tier. Teams that relied on it for bulk logo retrieval in product UIs found themselves needing a replacement that could work at scale without per-domain review requirements.

## Why a direct file swap is not enough

Swapping a logo source URL is the easy part. The harder problem is the last mile: every logo source returns different whitespace, background treatment, framing, and color handling. In a product UI — a company directory, a CRM account list, a customer-facing dashboard — this inconsistency compounds across hundreds or thousands of brands.

The questions worth asking before picking a replacement:

- Does the API detect brand background expectations (light vs. dark logo variants)?
- Does it return a predictably-framed square so every slot in a UI table looks the same?
- Can you use it from client code without a backend signing step?
- How fast can you test it against representative domains from your own data?

## Where ClearLogo fits

ClearLogo is an HTTP API that returns background-aware, auto-cropped, ratio-fit logo images for any domain via a single `GET /logo/{domain}` call. It is opinionated about presentation: the output is designed to look consistent across an entire UI slot, not just to hand back a raw brand asset.

### The simplest shape

```html
<img
  src="https://api.clearlogo.dev/logo/stripe.com?size=64&token=YOUR_BROWSER_KEY"
  alt="Stripe"
  width="64"
  height="64"
/>
```

No backend required for browser apps. A browser key authorizes requests via `Origin`/`Referer` matching, so you can use logo URLs directly in `<img>` tags.

### Server-side usage

```bash
curl \
  -H "Authorization: Bearer YOUR_SERVER_KEY" \
  "https://api.clearlogo.dev/logo/stripe.com?size=128&format=webp"
```

### React + TypeScript

```tsx
function BrandLogo({ domain }: { domain: string }) {
  return (
    <img
      src={`https://api.clearlogo.dev/logo/${domain}?size=64&token=${BROWSER_KEY}`}
      alt={domain}
      width={64}
      height={64}
    />
  );
}
```

## Migration path from Brandfetch

1. **Test representative domains** — drop a sample of your customer or partner domains into the [playground](https://clearlogo.dev/de/docs/playground) to confirm the output works for your UI.
2. **Replace the URL shape** — swap `api.brandfetch.io/v2/brands/{domain}/logo` with `https://api.clearlogo.dev/logo/{domain}?token=YOUR_BROWSER_KEY` for client code, or use `Authorization: Bearer` for backend calls.
3. **Create a production key** — sign in and issue a browser key (for `<img>` tags) or a server key (for backend signing).

## FAQ

### Does ClearLogo require a Brandfetch import or data migration?

No. ClearLogo is a stateless GET API — each call returns a logo for a domain. There is nothing to import or migrate.

### How is the output different from Brandfetch?

Brandfetch returns brand assets as-stored. ClearLogo post-processes the output: it detects background expectations, applies consistent cropping, and fits the logo to the requested canvas so the result is visually consistent across different brands in the same UI slot.

### What about brand coverage?

ClearLogo covers the same broad domain space as other logo APIs. If a domain is not yet in the index, the API returns a styled fallback placeholder — it never breaks an `<img>` tag.

### Is there a free tier?

Yes. Anonymous requests work for low-volume browsing without a key. For production traffic, [sign in](https://clearlogo.dev/login?lang=de) and create a key — a free tier is available for low-volume use cases.

### Can I use it in a browser app without a backend?

Yes. A browser key is validated against the allowed origins you configure on the key, so you can place URLs directly in `<img>` tags without routing requests through your server.
