What does stablecoin supply by chain show?
As of 2026-07-18, Ethereum held $179.5B (54.2%) of $330.9B in Dune-tracked USD stablecoin balances, followed by Tron with $92.3B (27.9%).
| Chain | Share of tracked balances | Tracked balance | Leading stablecoin | Leading stablecoin share | Tracked assets | As of |
|---|---|---|---|---|---|---|
| Ethereum | 54.2% | $179.49B | USDT | 55.6% | 74 | Jul 18, 2026 |
| Tron | 27.9% | $92.32B | USDT | 98.4% | 6 | Jul 18, 2026 |
| Solana | 4.9% | $16.15B | USDC | 45.1% | 30 | Jul 18, 2026 |
| BNB | 4.2% | $13.81B | USDT | 66.5% | 33 | Jul 18, 2026 |
| HyperEVM | 1.8% | $5.86B | USDC | 96.9% | 10 | Jul 18, 2026 |
| Arbitrum | 1.4% | $4.74B | USDC | 55.4% | 24 | Jul 18, 2026 |
| Other chains | 5.6% | $18.56B | Other assets | 41.7% | 77 | Jul 18, 2026 |
About the data
What is counted
This chart groups Dune stablecoin balance rows by blockchain and asset bucket for the displayed snapshot date. Other chains is an aggregated long-tail bucket, not one blockchain.
Coverage and comparison
Snapshot through Jul 18, 2026. 6 ranked chain groups represent $330.9B in tracked balances.
What this does not show
Stablecoin supply by chain is balance-stock evidence, not proof of usage, liquidity, demand, reserves, or bridge flow.
Common questions
Which chain holds the most stablecoin supply?
As of 2026-07-18, Ethereum is the largest chain in this Dune snapshot, with 54.2% of tracked USD stablecoin balances. Other chains is a grouped long-tail bucket, not one blockchain.
Why is Tron's stablecoin balance almost all USDT?
Within this source and date, USDT accounts for 98.4% of Tron's tracked stablecoin balance. The chart shows the asset mix; it does not explain the user, venue, issuer, or bridge reasons behind that mix.
Is stablecoin supply by chain the same as market cap or usage?
No. This page uses Dune balance rows by chain; use separate market-cap, activity, liquidity, or flow data for those questions.
Sources & methodology
Provider, method, coverage, and verification details.
Source
Dune Analytics
Dune supplies the reviewed observations used here. This chart groups Dune stablecoin balance rows by blockchain and asset bucket for the displayed snapshot date. Other chains is an aggregated long-tail bucket, not one blockchain.
- Cadence
- weekly
- Checked
- Jul 26, 2026
Source and coverage
The published dataset spans Jul 18, 2026. Its rows represent single-date chain asset snapshot. This is a dated chart input rather than a live market feed.
Method
Rows come from Dune stablecoins_multichain.balances on the displayed snapshot date, filtered to USD stablecoins and summed by blockchain and asset bucket. Chain totals use the same in-scope denominator for that date.
Limits
Stablecoin supply by chain is balance-stock evidence, not proof of usage, liquidity, demand, reserves, or bridge flow. Do not read this chart as proof of liquidity, demand, solvency, peg safety, or future market direction unless those claims are explicitly measured.
View SQL
with latest as (
select date '2026-06-25' as as_of
), usd_universe as (
select distinct symbol as token_symbol
from stablecoins_multichain.tokens
where currency = 'USD'
), by_chain_asset as (
select
l.as_of,
b.blockchain as chain,
b.token_symbol as asset,
sum(b.balance_usd) as supply_usd
from stablecoins_multichain.balances b
join latest l on b.day = l.as_of
join usd_universe u on b.token_symbol = u.token_symbol
where b.balance > 0
group by 1, 2, 3
), chain_totals as (
select
as_of,
chain,
sum(supply_usd) as supply_usd,
count(*) as asset_count
from by_chain_asset
group by 1, 2
), market_totals as (
select
as_of,
sum(supply_usd) as total_tracked_balances_usd,
count(distinct chain) as denominator_chain_count,
count(distinct asset) as denominator_asset_count
from by_chain_asset
group by 1
), ranked_chains as (
select
c.as_of,
c.chain,
c.supply_usd,
c.asset_count,
m.total_tracked_balances_usd,
m.denominator_chain_count,
m.denominator_asset_count,
row_number() over (partition by c.as_of order by c.supply_usd desc, c.chain asc) as rank
from chain_totals c
join market_totals m on c.as_of = m.as_of
), labeled_assets as (
select
a.as_of,
case when r.rank <= 6 then a.chain else 'Other chains' end as chain,
case
when a.asset in ('USDT', 'USDC', 'USDS', 'USDe', 'DAI', 'USD1') then a.asset
else 'Other assets'
end as asset_bucket,
sum(a.supply_usd) as supply_usd,
max(r.total_tracked_balances_usd) as total_tracked_balances_usd,
max(r.denominator_chain_count) as denominator_chain_count,
max(r.denominator_asset_count) as denominator_asset_count,
min(case when r.rank <= 6 then r.rank else 999 end) as display_order,
count(distinct a.chain) as chain_count_in_bucket,
count(distinct a.asset) as asset_count_in_bucket
from by_chain_asset a
join ranked_chains r on a.as_of = r.as_of and a.chain = r.chain
group by 1, 2, 3
), stack_rows as (
select
*,
supply_usd / nullif(sum(supply_usd) over (partition by as_of, chain), 0) * 100 as chain_asset_share_percent,
sum(supply_usd) over (partition by as_of, chain) / nullif(total_tracked_balances_usd, 0) * 100 as chain_market_share_percent
from labeled_assets
), dominant_asset as (
select
as_of,
chain,
asset_bucket as dominant_asset,
supply_usd as dominant_asset_supply_usd,
chain_asset_share_percent as dominant_asset_share_percent
from (
select
*,
row_number() over (
partition by as_of, chain
order by supply_usd desc, asset_bucket asc
) as segment_rank
from stack_rows
)
where segment_rank = 1
), final_rows as (
select
s.as_of,
s.chain,
s.asset_bucket as asset,
s.asset_bucket,
s.supply_usd,
s.chain_asset_share_percent,
s.chain_market_share_percent,
s.total_tracked_balances_usd,
s.denominator_chain_count,
s.denominator_asset_count,
s.display_order,
s.chain_count_in_bucket,
s.asset_count_in_bucket,
d.dominant_asset,
d.dominant_asset_supply_usd,
d.dominant_asset_share_percent,
concat(
d.dominant_asset,
' at ',
format('%.1f', d.dominant_asset_share_percent),
'% of chain balances'
) as dominant_asset_context
from stack_rows s
join dominant_asset d on s.as_of = d.as_of and s.chain = d.chain
)
select
as_of,
chain,
asset,
asset_bucket,
supply_usd,
chain_asset_share_percent,
chain_market_share_percent,
total_tracked_balances_usd,
denominator_chain_count,
denominator_asset_count,
display_order,
chain_count_in_bucket,
asset_count_in_bucket,
dominant_asset,
dominant_asset_supply_usd,
dominant_asset_share_percent,
dominant_asset_context
from final_rows
order by
display_order,
case asset_bucket
when 'USDT' then 1
when 'USDC' then 2
when 'USDS' then 3
when 'USDe' then 4
when 'DAI' then 5
when 'USD1' then 6
else 99
end,
supply_usd desc