Which chains process the most gross stablecoin transfer volume?
Aug 29, 2026 to Sep 5, 2026: Base led included priced gross stablecoin transfers with $631.64B (42.7%). Gross volume is not net flow, payments, users, or adoption.
| Chain | Gross transfer volume | Share of included volume | Transfer events | Pricing coverage | Chains represented |
|---|---|---|---|---|---|
| Base | $631.64B | 42.7% | 26,182,948 | 99.7% | 1 |
| Ethereum | $556.46B | 37.6% | 9,703,877 | 99.1% | 1 |
| Solana | $108.34B | 7.3% | 106,741,168 | 99.9% | 1 |
| BNB | $58.25B | 3.9% | 130,780,567 | 100.0% | 1 |
| Optimism | $54.98B | 3.7% | 7,290,954 | 99.6% | 1 |
| Polygon | $21.46B | 1.4% | 103,021,153 | 100.0% | 1 |
| Arbitrum | $13.81B | 0.9% | 8,341,788 | 99.7% | 1 |
| HyperEVM | $13.28B | 0.9% | 1,951,662 | 98.2% | 1 |
| Monad | $7.3B | 0.5% | 2,767,511 | 99.4% | 1 |
| Avalanche C Chain | $4.65B | 0.3% | 1,646,808 | 99.4% | 1 |
| Other chains | $10.39B | 0.7% | 60,180,868 | 97.6% | 26 |
About the data
What is counted
Reviewed priced stablecoin transfer records on the included chains; this is not a complete measure of all stablecoin activity.
Coverage and comparison
- Reviewed seven-day transfer window: Aug 29, 2026 to Sep 5, 2026, expressed in priced gross USD transfer volume.
- Sum of priced gross USD transfer volume over the included chains inside the reviewed seven-day window (period_start exclusive, period_end inclusive); gross volume is not net flow, payments, users, or adoption.
- 10 of 36 included chains are named; Other represents 26 additional chains.
- Named chains account for $1.47T; Other accounts for $10.39B, reconciling to $1.48T.
- 99.6% of included transfer events had USD pricing coverage.
What this does not show
Gross transfer volume is not net flow: the same units can be counted repeatedly. Self-transfers, bridges, routers, DEX multi-leg transactions, bots, minting, and burning can increase raw transfer notional. Do not infer payments, users, adoption, liquidity, economic value, organic demand, or causal activity. Do not compare this raw gross measure directly with adjusted Visa or Artemis series unless their filters and coverage are aligned.
Common questions
Why might a chain not appear separately in the ranking?
The chart ranks only chains covered by the reviewed dataset and groups the unshown long tail into Other chains. A missing standalone bar does not prove that a chain had no stablecoin transfers.
How does missing USD pricing affect the totals?
Only transfer events with usable USD pricing contribute to gross transfer volume. The table reports pricing coverage so readers can see how much of each chain's included transfer-event set was priced; incomplete pricing can make totals less comparable.
Can this ranking be compared directly with stablecoin supply by chain?
Not as the same metric. Gross transfer volume measures repeated transfer notional over a seven-day window, while stablecoin supply by chain measures a balance stock at a point in time; any ratio or comparison needs aligned dates, coverage, and denominators.
Sources & methodology
Source
Dune Analytics
Dune token transfer tables filtered to Stablecoin Atlas USD coverage
- Cadence
- weekly
- Data through
- Sep 5, 2026
- Checked
- Oct 18, 2026
Seven-day sum of positive USD-priced stablecoin transfer notional by chain.
Verification details
Method
- Sum positive USD-priced transfer notional by chain over one seven-day window after filtering token transfers to the Stablecoin Atlas USD coverage universe.
- The start date is exclusive and the end date is inclusive; the top 10 chains are shown separately and the remainder is grouped as Other chains.
- Source execution
- dune:7994429:stablecoin-highway-transfer-activity
View SQL
-- Source compatibility fix: stablecoin_highway_transfer_activity.v1
-- Dune's legacy stablecoin transfer views remain catalogued but are no longer
-- executable. Use the public token transfer tables and constrain their rows to
-- Dune's official Stablecoin Atlas coverage list. The output grain, denominator,
-- weekly window, and logical metric contract remain unchanged.
WITH schedule_anchor AS (
SELECT CAST(
date_add(
'day',
-CAST(mod(day_of_week(current_date) + 1, 7) AS BIGINT),
current_date
) AS date
) AS period_end
),
window_bounds AS (
SELECT
'week' AS window_role,
CAST(date_add('day', -7, period_end) AS date) AS period_start,
period_end
FROM schedule_anchor
),
atlas_tokens AS (
SELECT DISTINCT
LOWER(TRIM(blockchain)) AS blockchain,
LOWER(TRIM(token_address)) AS token_address,
UPPER(TRIM(currency)) AS currency,
TRIM(token_symbol) AS token_symbol
FROM dune.dune_curated_data.result_stablecoin_atlas_coverage
WHERE token_address IS NOT NULL
AND token_symbol IS NOT NULL
AND UPPER(TRIM(currency)) = 'USD'
),
normalized_transfers AS (
SELECT
LOWER(TRIM(t.blockchain)) AS blockchain,
t.block_date,
LOWER(CAST(t.contract_address AS varchar)) AS token_address,
a.token_symbol,
a.currency,
t.amount,
t.amount_usd
FROM tokens.transfers t
CROSS JOIN window_bounds w
INNER JOIN atlas_tokens a
ON a.blockchain = LOWER(TRIM(t.blockchain))
AND a.token_address = LOWER(CAST(t.contract_address AS varchar))
WHERE t.block_month BETWEEN
CAST(date_trunc('month', w.period_start) AS date)
AND CAST(date_trunc('month', w.period_end) AS date)
AND t.block_date > w.period_start
AND t.block_date <= w.period_end
AND t.blockchain <> 'solana'
UNION ALL
SELECT
'solana' AS blockchain,
t.block_date,
LOWER(TRIM(t.token_mint_address)) AS token_address,
a.token_symbol,
a.currency,
t.amount_display AS amount,
t.amount_usd
FROM tokens_solana.transfers t
CROSS JOIN window_bounds w
INNER JOIN atlas_tokens a
ON a.blockchain = 'solana'
AND a.token_address = LOWER(TRIM(t.token_mint_address))
WHERE t.block_date > w.period_start
AND t.block_date <= w.period_end
),
valued_transfers AS (
SELECT
blockchain,
block_date,
token_address,
token_symbol,
currency,
amount,
CASE
WHEN amount_usd IS NOT NULL AND amount_usd > 0 THEN amount_usd
-- Polymarket documents this exact Polygon contract as a USDC-backed
-- 1:1 claim. Keep the exception address-bound; never infer a peg from
-- a token symbol alone.
WHEN blockchain = 'polygon'
AND token_address = '0xc011a7e12a19f7b1f670d46f03b03f3342e82dfb'
THEN amount
ELSE 0
END AS effective_amount_usd,
CASE
WHEN amount_usd IS NOT NULL AND amount_usd > 0 THEN true
WHEN blockchain = 'polygon'
AND token_address = '0xc011a7e12a19f7b1f670d46f03b03f3342e82dfb'
THEN true
ELSE false
END AS has_usd_valuation
FROM normalized_transfers
)
SELECT
w.window_role,
w.period_start,
w.period_end,
t.blockchain AS chain,
t.token_address,
t.token_symbol AS asset_raw,
t.currency,
SUM(
CASE
WHEN t.has_usd_valuation THEN t.effective_amount_usd
ELSE 0
END
) AS gross_transfer_volume_usd,
SUM(t.amount) AS gross_transfer_face_value_usd,
SUM(
CASE
WHEN t.has_usd_valuation THEN t.amount
ELSE 0
END
) AS priced_transfer_face_value_usd,
COUNT(*) AS transfer_event_count,
COUNT_IF(t.has_usd_valuation)
AS priced_transfer_event_count,
'dune:tokens.transfers+tokens_solana.transfers;atlas_coverage' AS source
FROM valued_transfers t
CROSS JOIN window_bounds w
WHERE t.amount IS NOT NULL
AND t.amount > 0
GROUP BY 1, 2, 3, 4, 5, 6, 7
HAVING COUNT(*) > 0
ORDER BY chain, gross_transfer_volume_usd DESC, asset_raw, token_address;