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

# Balances

> Token balances for fungible tokens on EVM networks and Solana

Dune provides curated token balance tables for portfolio analysis, holder distribution, treasury tracking, and wallet activity across EVM networks and Solana.

<Info>
  **Maintained by:** Dune · **Refresh:** hourly · **Token standards:** native, ERC20
</Info>

<Card title="Get This Data" icon="database" href="https://dune.com/collection/balances/overview?dataset=balances">
  Access balance data via API, Datashare, or the Dune App.
</Card>

## Available Datasets

<CardGroup cols={3}>
  <Card title="Latest Balances" icon="bolt" href="/data-catalog/curated/balances/evm-latest">
    Most recent balance per (address, token) with USD value
  </Card>

  <Card title="Daily Balance Updates" icon="calendar-day" href="/data-catalog/curated/balances/evm-daily-updates">
    Sparse validity-interval table for historical balance reconstruction. The default for time-series analysis.
  </Card>

  <Card title="Balance Updates" icon="arrows-rotate" href="/data-catalog/curated/balances/evm-updates">
    Per-block balance changes
  </Card>
</CardGroup>

## Choosing a Table

| Question                                                  | Use                                                                                  |
| --------------------------------------------------------- | ------------------------------------------------------------------------------------ |
| What does this wallet hold right now?                     | [`balances_<chain>.latest`](/data-catalog/curated/balances/evm-latest)               |
| What did this wallet hold on day X? Over the last N days? | [`balances_<chain>.daily_updates`](/data-catalog/curated/balances/evm-daily-updates) |
| Exactly when did the balance change?                      | [`balances_<chain>.updates`](/data-catalog/curated/balances/evm-updates)             |

For most historical analysis, `balances_<chain>.daily_updates` is the right default. It trades off granularity for query speed and includes USD values. Drop down to `balances_<chain>.updates` only when you need block-level resolution.

`balances_<chain>.daily_updates` is **sparse**: it stores one row per balance change with a validity interval `[valid_from, valid_to)`, not one row per day per pair. The interval layout means you can reconstruct the balance for any `(address, token)` on any past day by joining a calendar table or expanding the interval. See the page's [usage notes](/data-catalog/curated/balances/evm-daily-updates#usage-notes) for the recommended filter pattern and `address_prefix` partition key.

## Cross-chain

The tables are per-chain. For a wallet's portfolio across chains, `UNION ALL` per-chain totals from `balances_<chain>.latest`:

```sql theme={null}
SELECT 'ethereum' AS chain, sum(balance_usd) AS total_usd
FROM balances_ethereum.latest
WHERE address = 0xd8da6bf26964af9d7eed9e03e53415d37aa96045
UNION ALL
SELECT 'arbitrum', sum(balance_usd)
FROM balances_arbitrum.latest
WHERE address = 0xd8da6bf26964af9d7eed9e03e53415d37aa96045
UNION ALL
SELECT 'optimism', sum(balance_usd)
FROM balances_optimism.latest
WHERE address = 0xd8da6bf26964af9d7eed9e03e53415d37aa96045
UNION ALL
SELECT 'base', sum(balance_usd)
FROM balances_base.latest
WHERE address = 0xd8da6bf26964af9d7eed9e03e53415d37aa96045
ORDER BY total_usd DESC NULLS LAST
```

## Coverage

arbitrum, avalanche\_c, base, bnb, ethereum, flare, gnosis, hyperevm, ink, linea, mantle, monad, optimism, plasma, polygon, sei, sonic, unichain, worldchain, zksync.

Token standards: `native` and `erc20`. NFT balances (ERC721/ERC1155) are not included. Native tokens use the standardized contract address from `dune.blockchains` for that chain (zero address on most EVMs, `0x0000…1010` on Polygon).

## Methodology

Balances are read directly from chain state at the blocks where activity is observed, rather than being accumulated from transfer events. Between observed activity, the most recent value is carried forward. Balance changes that occur without surfacing any tracked activity (for example, a rebase that emits no `Transfer`) are not detected until the next surfacing event.

`balances_<chain>.daily_updates` and `balances_<chain>.latest` include `balance_usd` joined from `prices.day` and `prices.latest` respectively. `balances_<chain>.updates` is intentionally unpriced. See its [docs](/data-catalog/curated/balances/evm-updates) for how to attach a price that fits your analysis.

## Solana

Solana balances (native SOL and SPL tokens) are available in a separate pair of tables under the `solana_utils` schema. These predate the EVM `balances_<chain>` tables above and use a different layout.

<CardGroup cols={2}>
  <Card title="Solana Latest Balances" icon="bolt" href="/data-catalog/curated/balances/solana-latest-balances">
    Current SOL and SPL token balance per address (`solana_utils.latest_balances`)
  </Card>

  <Card title="Solana Daily Balances" icon="calendar-day" href="/data-catalog/curated/balances/solana-daily-balances">
    Historical end-of-day SOL and SPL token balances (`solana_utils.daily_balances`)
  </Card>
</CardGroup>

## Related Tables

* `tokens.transfers` for token transfer events
* `prices.day` / `prices.latest` for token prices
* `tokens_<chain>.erc20` for ERC20 metadata (name, symbol, decimals)

<CardGroup cols={2}>
  <Card title="Enterprise Data Solutions" icon="building" href="https://dune.com/enterprise">
    Need custom balance datasets or dedicated support? Talk to our enterprise team.
  </Card>

  <Card title="Build Custom Models" icon="code" href="/api-reference/connectors/overview">
    Build private balance tracking pipelines with the dbt Connector.
  </Card>
</CardGroup>
