← All posts

Your swap screen tells you a price, not what routing saved you

Every quote answers what your size costs. The harder question is what size fits a cost you name — and how much of it exists only because of splitting.

Architecture4 min readDeFiLoops

Ask any swap interface for a quote and it answers the same question: what does my size cost? You type 200 USDC, it says 0.00% price impact, and you press the button.

That is a fine answer to a question almost nobody actually has. If you are moving 200 dollars, nothing you do matters. If you are moving two hundred thousand, the question you have is the other way round: what size fits inside a cost I am willing to pay?

Here is a real read of USDC→WETH on Base, at block 50,574,016, across 11 pools.

Fills within a cost11 pools · block 50,574,016 · axis $1.72M
≤5 bpsavg 2.4
$148.5K1 pool $103.1K7 pools
≤10 bpsavg 4.9
$308.2K1 pool $207.8K8 pools
≤25 bpsavg 12.4
$772.0K1 pool $522.2K8 pools
≤50 bpsavg 24.9
$1.72M1 pool $1.05M10 pools
route, spread across poolsone pool alone
Sizes in dollars, filled at or better than each cost. The gap between the two bars is the routing.

Read the gap, not the bars

The dark bar is the best single pool. The pale bar is every pool that clears the same cost, added together. The gap between them is what the routing is worth, in dollars, at that cost.

At five basis points, one pool takes $103.1K and seven pools take $148.5K. Routing is worth 44% more size at the same price. At fifty basis points it is $1.05M against $1.72M — the same shape, larger numbers.

What no other quote shows you

Quotes are counterfactual-free. You are told a price and, if the interface is generous, a route — but never what you would have got without it. The number that would let you judge whether the routing did anything is the one number nobody prints.

I went looking for a swap interface that does. Depth analysis exists as standalone tooling, computing slippage at fixed sizes like $1K, $10K, $100K and $1M. Aggregators show splits at quote time for the size you asked about. But those answer cost-for-a-size, and they answer it for one size, after you have already decided.

What it is actually for

Three things, and none of them is the 200-dollar trade at the top of the page.

  • Sizing. You can see where your size stops being free. Somewhere between $148.5K and $308.2K on this pair, five basis points becomes ten.
  • Deciding whether to split at all. If the gap is narrow, routing is ceremony and one pool is fine. Splitting a trade usually does nothing, and this is how you tell the usual case from the exception before you trade rather than after.
  • Reading the venue, not the token. A pair with one deep pool and a long thin tail behaves nothing like one with four comparable pools, and the total alone cannot tell them apart. So any row opens.

Here is the five-basis-point row from the same read, opened up:

≤5 bps7 pools · total $148.5K
  1. Slipstream0xb2cc…DC59$103.1K2.4bp
  2. Slipstream V30x3FE0…392A$28.0K2.3bp
  3. Pancake V30x72AB…2D38$10.3K2.4bp
  4. UniV30xd0b5…F224$4.5K0.9bp
  5. UniV30xb4CB…00e5$1.4K2.5bp
  6. Pancake V30xB775…4EaF$1.1K0.8bp
  7. Slipstream V20xc758…54e0$902.3bp
Bars are scaled to the largest pool in the tier, not to the total, so what you see is the shape of the distribution rather than the size of it.

That is one dominant pool and a six-pool tail, which is a particular shape with particular consequences. It also shows something the totals hide: the cheapest pool in the tier is not the biggest one. Two of the small pools fill under one basis point while the pool doing most of the work fills at 2.4 — so a router optimising purely for headline price and a router optimising for size at a bound will not pick the same thing.

The honest limits

The ladder is measured at one block. Liquidity moves, and a reading taken now is a statement about now — the block number is printed for exactly that reason.

It also describes capacity, not outcome. It says a certain size fits inside a certain cost at that moment. It does not promise you fill there: what protects you at execution is the minimum output you signed, and that is still the thing doing the work.