How exchanges set the price you see, and why it differs across venues
The price on your app isn't "the" price. Here's how exchanges actually generate it, and why Coinbase, Binance and a DEX can quote different numbers.
You open two apps, look up the same coin, and see two different prices. Neither app is wrong. Each one is just reporting a snapshot of its own order book, and no single global order book exists for crypto.
What actually sets the number you see
The price you see is the last executed trade on that specific venue, not a quoted "true" price. It comes from a live match between a buyer's bid and a seller's ask in that exchange's own order book.
- Bid: highest price a buyer currently offers
- Ask: lowest price a seller currently accepts
- Last trade price: where a bid and ask most recently met
- Mid price: the average of the current best bid and ask, used by some apps instead of last trade
Every exchange runs this process independently. Binance's order book has no idea what's happening on Coinbase's order book at the same moment.
Why do prices differ between exchanges
Prices diverge because each venue has its own pool of buyers, sellers, and liquidity. A coin trading at $2.00 on one exchange and $2.03 on another simply means slightly different supply and demand showed up on each book.
- Liquidity depth: thin order books swing further on the same size trade
- Regional demand: a token popular in one country's exchange can trade at a local premium
- Listing timing: new listings or delistings shift where volume concentrates
- Fee structure: maker/taker fees change what price a trader is willing to accept
- Stablecoin used: pairs priced in USDT vs USDC vs a fiat rail can drift slightly apart
These gaps are usually small, often under 0.5% on major pairs like BTC/USD, but they widen fast during volatility or on low-volume altcoins.
How arbitrage keeps the gap from growing
Traders and bots watch for these gaps and trade against them, which is what keeps prices roughly aligned across venues most of the time.
Say ETH trades at $3,200 on Exchange A and $3,215 on Exchange B. An arbitrage trader buys on A and sells on B, pocketing the $15 spread minus fees.
That buying pressure on A pushes its price up, and the selling pressure on B pushes its price down, closing the gap. This happens in seconds on liquid pairs, which is why major-exchange prices for BTC or ETH rarely diverge by more than a few dollars for long.
The catch: arbitrage needs capital already sitting on both exchanges, or a fast enough transfer rail to move it. During network congestion or exchange withdrawal freezes, that mechanism breaks and gaps can persist for hours.
Why aggregators show yet another number
Sites like CoinGecko or CoinMarketCap don't pull from one exchange. They calculate a volume-weighted average price (VWAP) across dozens of venues, so the number you see there won't match any single exchange exactly.
- VWAP weights each exchange's price by how much volume it traded
- A high-volume exchange like Binance pulls the aggregate number toward its own price
- Low-volume or manipulated exchanges get filtered or down-weighted by most aggregators
- This is why the "price" cited in news headlines can differ slightly from your exchange app
CoinGecko's methodology page breaks down how it weights and filters exchange data before averaging.
What to check before you trade on a price gap
A price difference isn't automatically a free trade. Before acting on one, check the practical costs sitting between you and the spread.
- Withdrawal and network fees on both exchanges
- Trading fees (maker/taker) on each side of the trade
- Whether the asset can move between exchanges fast enough to matter
- Order book depth: a big spread on a thin book may vanish the moment you try to fill a real order
- Whether the "cheap" price is actually a stale quote or low-liquidity listing
The price you see is real, but it's local to that venue in that instant. Cross-check it against at least one other exchange and an aggregator before treating any single number as the market.
