Industry comparisons of retail crypto platforms routinely find spreads of roughly 0.5-3% embedded in quoted rates — even on pages that advertise “0% fees.” That gap rarely shows up as a line item you’d notice before confirming a trade. Spread markup is the difference between the mid-market rate an asset is actually worth and the rate a provider quotes you, and it’s how most “free” exchanges make money. This guide breaks down how spread markup works, how to spot it in a live quote, where else costs hide, and when a wider spread is a fair trade rather than a rip-off.
Why “0% Fees” Isn’t the Number to Trust
A “0% fee” or “no commission” badge answers exactly one question: is there a separate charge added on top of your trade amount? It says nothing about the rate you’re quoted. A provider can advertise zero commission and still make its margin by quoting you a rate that’s 1-3% worse than mid-market — the money moves from a visible fee line into an invisible spread.
This isn’t inherently dishonest. Running a swap service costs money — liquidity, network fees, provider risk — and spread is a legitimate way to cover that. The problem is that “0% fee” and “cheap” aren’t the same claim, and headline marketing conflates them on purpose.
| What you see | What it actually tells you |
|---|---|
| ”0% fee” badge | No separate commission line — rate may still include a wide spread |
| Explicit “1% fee” line | A stated cost, but the underlying rate can still deviate from mid-market |
| Rate close to mid-market | The most reliable signal of low real cost, regardless of what’s labeled |
A “0% fee” label describes what’s not charged separately — not what you’ll actually pay.
The only number that matters is the gap between the rate you’re quoted and the mid-market price at that moment. Everything else is presentation.
What Spread Markup Actually Is
The mid-market rate is the neutral, real-time exchange rate for a pair — roughly the midpoint between the best available buy and sell prices across liquid markets. It’s the number you’d see on a neutral price aggregator, not on any single exchange’s order book.
The quoted rate is what a specific provider offers you for your specific trade. The gap between the two is the spread markup. Say mid-market puts 1 ETH at 3,000 USDT. A provider quoting 2,940 USDT for your ETH is applying roughly a 2% markup — even if the interface shows no separate fee anywhere.
Spread markup exists on every trading venue, from centralized exchanges to swap aggregators to DEXs. It’s not unique to any one type of platform. What varies is the size of the markup and how transparently it’s disclosed. A tight, published spread on a liquid pair like BTC/USDT behaves very differently from a wide, undisclosed spread on a thinly traded altcoin — same mechanism, very different real cost.
The spread is the fee. It’s just built into the number instead of listed next to it.
Once you internalize that the rate itself carries the cost, “compare the fee” stops being useful advice — “compare the rate to mid-market” is the actual test.
How to Spot Spread Markup in a Live Quote
You don’t need special tools to catch spread markup — just a neutral reference point and five minutes.
1. Find the mid-market rate first. Before opening any swap widget, check a neutral price source like CoinGecko or CoinMarketCap for the current rate on your pair. Write it down or keep the tab open. This is your baseline — everything else gets measured against it.
2. Compare it to the quoted rate. Open the swap you’re considering, enter your amount, and note the exact rate offered. Calculate the percentage difference from your mid-market baseline. A 0.3-0.5% gap is typically normal cost-of-doing-business. A 2-3%+ gap on a liquid, major pair is worth questioning.
3. Check for a separate fee line. If the quote shows no explicit fee anywhere, the spread is doing all the work. That’s not automatically bad, but it means the “0% fee” framing is misleading you into skipping the one check that matters.
4. Run the same amount through multiple quotes. Enter the identical from/to pair and amount across several providers — either one by one, or through an aggregator that shows several quotes side by side. Note how much the rate varies between them for the exact same trade.
5. Pick the quote closest to mid-market, not the loudest badge. The winning quote is whichever one sits nearest your baseline number, regardless of how it’s labeled. A “best rate” or “0% fee” tag is marketing copy, not a measurement.
Where Else Fees Hide
Spread markup is the biggest lever, but it’s not the only place cost hides in a swap.
Network-fee padding. Some providers add a margin on top of the actual blockchain network fee, quoting you a higher “network fee” than what the transaction will really cost on-chain. This is harder to catch without independently checking current network fee estimates, but it’s usually a smaller absolute amount than spread markup on anything but very small trades.
Minimum-amount thresholds. A provider might not display an unfavorable spread until you enter an amount below their comfortable liquidity range — small trades often get worse rates because the provider’s own hedging cost per trade is higher. If a quote gets noticeably worse as you lower the amount, that’s the threshold effect, not a coincidence.
Vague “processing fee” line items. A flat “processing fee” with no explanation of what it covers is a second lever on top of the spread — it doesn’t replace the spread, it stacks with it. Always check whether a stated fee is instead of a wide spread or in addition to one.
None of these are illegitimate on their own. The issue is when several of them stack silently and the only visible number is a reassuring “0% fee” badge.
Why Comparing Several Quotes Side by Side Exposes the Worst Spreads
Spread markup isn’t a fixed property of a provider — it moves with volatility, liquidity, pair, and trade size. A provider that’s competitive on BTC/USDT can be significantly worse on a smaller-cap pair, and vice versa. That’s why checking one provider and trusting its “best price” claim tells you very little.
Running the same amount through several quotes at once — the core idea behind a swap aggregator — turns an invisible number into a visible one. Instead of trusting a single rate, you see multiple providers’ rates for the identical trade, side by side, and the spread differences become obvious immediately. The provider quoting closest to mid-market for that specific pair, at that specific moment, is usually the one actually cheapest — not the one with the flashiest fee copy.
This is functionally the same logic behind comparing DEXs, CEXs, and aggregators: none of these categories is inherently cheaper, and the only way to know is to check quotes for your specific trade rather than rely on a platform’s general reputation. A roundup of swap aggregators is a reasonable starting point if you want to understand how that comparison layer works before relying on it.
Common Mistakes When Estimating the Real Cost of a Swap
Trusting the fee label over the rate. A stated “0%” or “0.5%” fee is only one input. If you don’t check the quote against mid-market, you have no idea what the total cost actually is.
Comparing rates without a shared timestamp. Crypto prices move constantly. Comparing a quote you got five minutes ago to a mid-market price checked now will show a gap that’s partly just market movement, not markup. Check both close together.
Ignoring amount sensitivity. The spread on a $50 swap and a $5,000 swap through the same provider can differ meaningfully. Always check the rate at the amount you actually intend to trade, not a round test number.
Assuming fixed rate and floating rate carry the same markup. They usually don’t — a fixed quote typically bakes in a bigger buffer because the provider is absorbing price-movement risk during the lock window. See how fixed and floating rates actually differ before assuming one is simply “better.”
Only checking once. Spread markup shifts with volatility. A provider that was tight an hour ago can widen sharply during a fast market move. Re-check before a large trade rather than relying on a memory of “last time this was fine.”
When a Wider Spread Is Actually Justified
Not every wide spread is a red flag. On thinly traded pairs — a low-liquidity altcoin, a route through multiple hops, or a network under unusual congestion — a provider genuinely takes on more risk and cost to fill your order, and a wider spread reflects that rather than opportunistic markup.
Privacy-preserving routes are a good example. A route that moves funds through Monero to break the on-chain link between deposit and payout typically involves two separate legs, each with its own liquidity and execution cost, which shows up as a wider combined spread than a simple direct swap. That’s the cost of the added privacy engineering, not hidden padding — see how private swap routing actually works for the mechanics behind that trade-off.
The practical rule holds either way: a wider spread is fine when you understand why it’s wider. It’s a problem only when it’s presented as free.
Checking how a swap flow works end to end and running your specific pair through the live quote comparison before you commit takes a couple of minutes and answers the only question that actually matters: what will this trade really cost, compared to mid-market, right now. If anything here didn’t fully answer your question, the FAQ covers more of the mechanics in detail.