You are building a wallet UI, a portfolio tracker, or a token explorer. The feature list looks great, until you realize you need logos. Chain logos for the network selector, token logos for every balance row, native currency icons for the gas display. The usual approach is scraping images from GitHub repos, CoinGecko, or random CDNs. The result: inconsistent sizes, broken links after upstream changes, and hours lost on something that should be trivial.

Tatum maintains a public CDN with SVG chain logos for 77+ blockchain networks and PNG token logos for thousands of tokens across 9 major chains. Chain logos require no API key at all. Token logos come back automatically in the Data API response when you query token metadata.

Here is how to use both.

Two types of logos

Before writing any code, pick the logo type that matches the row on screen.

Chain logos represent the blockchain network itself: Ethereum, Solana, Bitcoin, Polygon, and the rest of the set. They are SVG files served from a public CDN. No API key is needed. Use them for network selectors, chain badges, transaction history labels, and anywhere you identify a blockchain rather than a specific token.

Token logos represent individual tokens deployed on a chain: USDC, WETH, SHIB, and thousands more. They are PNG files. You can get them in two ways: from the logo field in the GET /v4/data/tokens API response, or by constructing the CDN URL directly if you already know the chain and contract address. Use token logos for balance views, token lists, swap interfaces, and portfolio breakdowns.

In many UIs you will need both at the same time: a token logo as the primary image with a small chain logo badge in the corner to show which network the token lives on.

Two cards labeled Chain logo and Token logo. The chain card shows the Ethereum mark and 77+ networks. The token card shows USDC and 9 chains.

Pick one

Chain logo or token logo

Ethereum

The network itself. SVG, no API key, one URL per chain.

77+ networks
USDC

A token on that chain. PNG, returned on the Data API logo field.

9 chains

Chain logos: one line of HTML

The URL pattern is predictable and stable:

URL
https://blockchains.tatum.io/assets/img/{slug}.svg

Replace {slug} with the chain's lowercase, hyphenated name. For Ethereum it is ethereum, for Arbitrum One it is arbitrum-one, for Bitcoin Cash it is bitcoin-cash. The full list of all 77 slugs is in the Tatum docs.

A single icon in HTML:

HTML
<img src="https://blockchains.tatum.io/assets/img/ethereum.svg"
     alt="Ethereum" width="32" height="32" />

A row of five chains:

HTML
<!-- Five chains in a row -->
<div style="display: flex; gap: 12px; align-items: center;">
  <img src="https://blockchains.tatum.io/assets/img/bitcoin.svg" alt="Bitcoin" width="40" height="40" />
  <img src="https://blockchains.tatum.io/assets/img/ethereum.svg" alt="Ethereum" width="40" height="40" />
  <img src="https://blockchains.tatum.io/assets/img/solana.svg" alt="Solana" width="40" height="40" />
  <img src="https://blockchains.tatum.io/assets/img/polygon.svg" alt="Polygon" width="40" height="40" />
  <img src="https://blockchains.tatum.io/assets/img/base.svg" alt="Base" width="40" height="40" />
</div>

Here is what that renders. Pick a chain and the URL updates with it.

Chain logo picker with Bitcoin, Ethereum, Solana, Polygon, and Base. Bitcoin is selected and the CDN URL is https://blockchains.tatum.io/assets/img/bitcoin.svg.
Bitcoin
Bitcoinhttps://blockchains.tatum.io/assets/img/bitcoin.svg
Ethereum
Ethereumhttps://blockchains.tatum.io/assets/img/ethereum.svg
Solana
Solanahttps://blockchains.tatum.io/assets/img/solana.svg
Polygon
Polygonhttps://blockchains.tatum.io/assets/img/polygon.svg
Base
Basehttps://blockchains.tatum.io/assets/img/base.svg

No API key, no build step, no npm package. Because the files are SVGs, they scale to any size without losing quality: 16px favicons and 128px hero graphics from the same URL.

Token logos: API-powered

To get a token's logo along with its metadata, call GET /v4/data/tokens with the chain and contract address:

Bash
curl -X GET "https://api.tatum.io/v4/data/tokens?chain=ethereum-mainnet&tokenAddress=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" \
  -H "x-api-key: YOUR_API_KEY"

The response includes a logo field pointing to the CDN:

JSON
{
  "name": "USD Coin",
  "symbol": "USDC",
  "tokenType": "fungible",
  "supply": "48699269596631307",
  "decimals": 6,
  "logo": "https://blockchains.tatum.io/assets/token-logos/ethereum-mainnet/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48.png"
}

Render it directly:

HTML
<img src="https://blockchains.tatum.io/assets/token-logos/ethereum-mainnet/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48.png"
     alt="USDC" width="32" height="32" />

The API supports 22 mainnet chains and 18 testnets (40 total). See the Tatum docs for the full list. Each call costs 20 credits, so if you are displaying dozens of tokens, cache the responses rather than calling per render.

If you already know the chain and contract address, you can skip the API call entirely and construct the CDN URL yourself: https://blockchains.tatum.io/assets/token-logos/{chain}/{address}.png. Nine chains have token logo coverage: Ethereum, Arbitrum One, Base, BNB Smart Chain, Celo, Monad, Optimism, Polygon, and Solana.

Not every token has a logo. Missing logos return a 404, so always implement a fallback image.

Build a mini token card

Here is a practical example that ties everything together. This HTML/CSS snippet renders a token info card combining the token logo, token metadata from the API, and a chain badge, all in copy-pasteable markup:

HTML
<div style="display: flex; align-items: center; gap: 16px; padding: 16px; border: 1px solid #e2e8f0; border-radius: 12px; font-family: sans-serif; max-width: 320px;">
  <!-- Token logo -->
  <img src="https://blockchains.tatum.io/assets/token-logos/ethereum-mainnet/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48.png"
       alt="USDC" width="48" height="48" style="border-radius: 50%;" />
  <!-- Token info -->
  <div>
    <div style="font-weight: 600; font-size: 18px;">USD Coin</div>
    <div style="color: #64748b; font-size: 14px;">USDC · 6 decimals</div>
    <div style="display: flex; align-items: center; gap: 4px; margin-top: 4px;">
      <img src="https://blockchains.tatum.io/assets/img/ethereum.svg" alt="Ethereum" width="14" height="14" />
      <span style="color: #94a3b8; font-size: 12px;">Ethereum</span>
    </div>
  </div>
</div>

The result looks like this:

USD Coin card with the USDC logo, 6 decimals, and a small Ethereum chain badge.
USDC
USD Coin
USDC · 6 decimals
Ethereum

The outer container uses flexbox to align the token logo on the left with the text block on the right. The token logo comes from the API's logo field (or the direct CDN URL). The text block shows the token name, symbol, and decimal count, all fields from the GET /v4/data/tokens response. At the bottom, a 14px chain logo SVG serves as a network badge next to the chain name. Swap the URLs and text values for any token on any supported chain to reuse this card pattern throughout your app.

Getting started

Chain logos are free and require no key. Start using them now: just drop an <img> tag into your HTML with the CDN URL pattern shown above.

For token logos and metadata, sign up for a free Tatum API key. The /v4/data/tokens endpoint gives you the logo URL, name, symbol, decimals, and supply in a single call.

Full reference material: