> ## Documentation Index
> Fetch the complete documentation index at: https://www.logo.dev/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Cryptocurrency Logo API: Get Crypto Logos by Symbol

> Crypto logo API for Bitcoin, Ethereum, and ~20,000 tokens. Fetch any token's logo by symbol from a simple image URL, with the usual size and format options.

export const LogoDemo = ({type = "domain"}) => {
  const DEFAULT_VALUES = {
    domain: "logo.dev",
    name: "Shopify",
    crypto: "BTC",
    ticker: "AAPL",
    isin: "US0378331005"
  };
  const PLACEHOLDERS = {
    domain: "Enter a domain...",
    name: "Enter a brand name...",
    crypto: "Enter a crypto symbol...",
    ticker: "Enter a stock ticker...",
    isin: "Enter an ISIN..."
  };
  const LABELS = {
    domain: "company domain",
    name: "brand name",
    crypto: "cryptocurrency symbol",
    ticker: "stock ticker",
    isin: "ISIN"
  };
  const [input, setInput] = useState("");
  const [displayValue, setDisplayValue] = useState(DEFAULT_VALUES[type] || DEFAULT_VALUES.domain);
  const [imageError, setImageError] = useState(false);
  const normalizeInput = useCallback(value => {
    if (!value) return "";
    let cleaned = value.trim();
    if (type === "domain") {
      cleaned = cleaned.replace(/^https?:\/\//, "");
      cleaned = cleaned.replace(/^www\./, "");
      cleaned = cleaned.split("/")[0].split("?")[0];
      if (cleaned.includes(".")) {
        return cleaned.toLowerCase();
      }
      if (cleaned.length > 0) {
        return `${cleaned.toLowerCase()}.com`;
      }
    }
    if (type === "name") {
      return encodeURIComponent(cleaned);
    }
    if (type === "crypto" || type === "ticker" || type === "isin") {
      return cleaned.toUpperCase();
    }
    return cleaned;
  }, [type]);
  const handleInputChange = useCallback(e => {
    const value = e.target.value;
    setInput(value);
    const normalized = normalizeInput(value);
    if (normalized) {
      setDisplayValue(normalized);
      setImageError(false);
    } else if (value === "") {
      setDisplayValue(DEFAULT_VALUES[type] || DEFAULT_VALUES.domain);
    }
  }, [normalizeInput, type]);
  const handleImageError = useCallback(() => {
    setImageError(true);
  }, []);
  const imageUrl = useMemo(() => {
    const baseUrl = "https://img.logo.dev";
    const token = "live_6a1a28fd-6420-4492-aeb0-b297461d9de2";
    const params = "format=webp&retina=true&size=128";
    if (type === "domain") {
      return `${baseUrl}/${displayValue}?token=${token}&${params}`;
    }
    return `${baseUrl}/${type}/${displayValue}?token=${token}&${params}`;
  }, [displayValue, type]);
  return <div className="not-prose my-8 rounded-2xl border border-zinc-950/10 dark:border-white/10 bg-gradient-to-br from-zinc-50 to-white dark:from-zinc-900 dark:to-zinc-950 p-8 shadow-sm">
      <div className="max-w-2xl mx-auto space-y-6">
        {}
        <div className="flex justify-center" role="img" aria-label={`${LABELS[type]} logo preview`}>
          <div className="rounded-2xl bg-zinc-100 dark:bg-zinc-800/50 inline-flex items-center justify-center">
            <img alt={`${displayValue} logo`} width="128" height="128" src={imageUrl} onError={handleImageError} className="rounded-lg" loading="lazy" key={displayValue} />
          </div>
        </div>
        {}
        <div className="relative">
          <label htmlFor="logo-input" className="sr-only">
            Enter {LABELS[type]}
          </label>
          <div className="absolute inset-y-0 left-4 flex items-center pointer-events-none">
            <svg className="h-5 w-5 text-zinc-400" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true">
              <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z" />
            </svg>
          </div>
          <input id="logo-input" type="text" value={input} onChange={handleInputChange} placeholder={PLACEHOLDERS[type] || PLACEHOLDERS.domain} aria-describedby={imageError ? "image-error" : undefined} className="w-full pl-12 pr-4 py-4 text-lg rounded-xl border border-zinc-950/10 dark:border-white/20 bg-white dark:bg-zinc-900 text-zinc-950 dark:text-white placeholder:text-zinc-400 focus:outline-none focus:ring-2 focus:ring-zinc-950/20 dark:focus:ring-white/20 transition-shadow" />
          {imageError && <p id="image-error" className="sr-only">
              Logo not found for {displayValue}
            </p>}
        </div>
      </div>
    </div>;
};

Get cryptocurrency logos for your trading platforms, exchanges, wallets, and portfolio trackers using a simple image URL.

The crypto logo API works just like our company logo lookups: pass a coin's symbol and get back a crisp logo. Access reliable crypto logos for Bitcoin, Ethereum, stablecoins, and thousands of altcoins without managing hundreds of image files yourself.

## Try it yourself

Enter any cryptocurrency symbol below to instantly fetch its logo. Works with Bitcoin, Ethereum, and thousands of other tokens.

<LogoDemo type="crypto" />

***

### How to use crypto logos

Access any cryptocurrency logo with your publishable key from the [Logo.dev dashboard](https://www.logo.dev/dashboard).

<Frame caption="https://img.logo.dev/crypto/eth?token=LOGO_DEV_PUBLISHABLE_KEY">
  <img alt="Ethereum Logo" width="100" height="100" src="https://img.logo.dev/crypto/eth?token=live_6a1a28fd-6420-4492-aeb0-b297461d9de2&size=200" />
</Frame>

Here's how to display Ethereum's logo on your website:

<CodeGroup>
  ```html Example theme={null}
  <img src="https://img.logo.dev/crypto/eth?token=LOGO_DEV_PUBLISHABLE_KEY" alt="Ethereum cryptocurrency logo" />
  ```

  ```html Format theme={null}
  <img
    src="https://img.logo.dev/crypto/:symbol?token=LOGO_DEV_PUBLISHABLE_KEY"
    alt="Cryptocurrency logo"
  />
  ```
</CodeGroup>

Use crypto logos anywhere you can use an image URL—trading platforms, portfolio apps, or price trackers:

<CodeGroup>
  ```html Example theme={null}
  https://img.logo.dev/crypto/btc?token=LOGO_DEV_PUBLISHABLE_KEY
  ```

  ```html Format theme={null}
  https://img.logo.dev/crypto/:symbol?token=LOGO_DEV_PUBLISHABLE_KEY
  ```
</CodeGroup>

### Popular cryptocurrency logos

Look up any coin by its standard symbol. A few common examples:

| Cryptocurrency | Symbol | Example URL                                                       |
| -------------- | ------ | ----------------------------------------------------------------- |
| Bitcoin        | `btc`  | `https://img.logo.dev/crypto/btc?token=LOGO_DEV_PUBLISHABLE_KEY`  |
| Ethereum       | `eth`  | `https://img.logo.dev/crypto/eth?token=LOGO_DEV_PUBLISHABLE_KEY`  |
| Tether         | `usdt` | `https://img.logo.dev/crypto/usdt?token=LOGO_DEV_PUBLISHABLE_KEY` |
| Solana         | `sol`  | `https://img.logo.dev/crypto/sol?token=LOGO_DEV_PUBLISHABLE_KEY`  |
| XRP            | `xrp`  | `https://img.logo.dev/crypto/xrp?token=LOGO_DEV_PUBLISHABLE_KEY`  |
| USD Coin       | `usdc` | `https://img.logo.dev/crypto/usdc?token=LOGO_DEV_PUBLISHABLE_KEY` |
| Dogecoin       | `doge` | `https://img.logo.dev/crypto/doge?token=LOGO_DEV_PUBLISHABLE_KEY` |
| Cardano        | `ada`  | `https://img.logo.dev/crypto/ada?token=LOGO_DEV_PUBLISHABLE_KEY`  |

### Customize crypto logos

Crypto logos support the same parameters as company logos, so you can change the size, format, and theme to match your UI:

```html Larger PNG for a dark UI theme={null}
<img
  src="https://img.logo.dev/crypto/btc?token=LOGO_DEV_PUBLISHABLE_KEY&size=256&format=png&theme=dark"
  alt="Bitcoin logo"
/>
```

See the [logo image parameters](/docs/logo-images/introduction#parameters) for the full list of `size`, `format`, `theme`, and `greyscale` options.

### Supported cryptocurrencies

Our index includes \~20,000 tokens and we select from many sources to provide the highest quality and most accurate logo image.

<Note>
  Need a specific token added? [Contact
  us](mailto:support@logo.dev?subject=Crypto%20Logos) with your requirements.
</Note>

## FAQs

<AccordionGroup>
  <Accordion title="Is there a crypto logo API I can call directly?">
    Yes. Every crypto logo is a plain image URL in the form
    `https://img.logo.dev/crypto/:symbol?token=LOGO_DEV_PUBLISHABLE_KEY`. There's
    no SDK to install — request the URL from any frontend, backend, or
    spreadsheet that can load an image.
  </Accordion>

  <Accordion title="Which cryptocurrencies and tokens are supported?">
    Our index covers roughly 20,000 tokens, including major coins like Bitcoin
    and Ethereum, stablecoins, and a wide range of altcoins. Look them up by
    their standard ticker symbol (for example, `btc`, `eth`, `sol`).
  </Accordion>

  <Accordion title="What happens if a token logo isn't found?">
    The API returns a generated monogram fallback with a `200` status, just like
    company logos. Pass `fallback=404` if you'd rather handle missing logos
    yourself.
  </Accordion>

  <Accordion title="Can I get crypto logos in PNG or a custom size?">
    Yes. The crypto endpoint accepts the same `size`, `format`, `theme`, and
    `greyscale` parameters as the [standard logo
    endpoint](/docs/logo-images/introduction#parameters).
  </Accordion>

  <Accordion title="How do I request a missing token?">
    [Contact us](mailto:support@logo.dev?subject=Crypto%20Logos) with the token
    symbol and we'll review it for inclusion.
  </Accordion>
</AccordionGroup>
