A quoted price says nothing about size. The same rate can hold for a modest order and give way under a large one: two separate costs sit between the quote on a screen and the tokens that arrive. Price impact is the cost of the trade’s own size against a pool: it follows from the pool’s curve, so it is known before the trade. Slippage is the movement between the moment of the quote and the moment of execution, which cannot be known in advance. Some sources use “slippage” for both. Uniswap’s Help Center keeps them apart; so does this article.
Price impact: the curve decides
Uniswap prices swaps with a constant product formula, x * y = k. Here x and y are the reserve balances of the two tokens and k is a value the pool must hold constant or grow after every trade. Taking one token out means putting the other in, so the ratio of reserves shifts and the price shifts with it. The larger the trade relative to the reserves, the further the price moves.
A worked example makes the shape visible. The numbers below are hypothetical and chosen to be round: they are not a current ETH price and not any real pool. Take a pool holding 1,000 ETH and 3,000,000 USDC. The mid price is 3,000 USDC per ETH. A trader sells ETH into the pool and receives USDC. This table ignores the fee.
| Trade (sell ETH) | Value at mid price | USDC received | Shortfall vs mid |
|---|---|---|---|
| 10 ETH | 30,000.00 | 29,702.97 | 0.99% |
| 100 ETH | 300,000.00 | 272,727.27 | 9.09% |
For a pool like this one with no fee, the shortfall equals the trade size divided by the reserve plus the trade size. Ten times the size produces about nine times the shortfall: the cost does not scale in a straight line. Nothing in that arithmetic needs a market to be open or a counterparty to answer. The reserves are on chain, so the impact of a given trade can be computed before it is sent. Uniswap’s interface shows a price impact warning ahead of a swap and offers a “Swap Anyway” option for trades where the loss looks significant.
Two readings of the example are easy to confuse. The shortfall above is the average price the seller received compared with the mid price. The pool’s own price after the trade sits further away: 1.97% below its starting point after the 10 ETH sale and 17.36% below after the 100 ETH sale. The shortfall is what this trader paid. The pool’s new price is where the next trader will find the market.
The fee is a separate cost
Uniswap v2 pools charge a flat 0.30% fee; v3 offers several tiers, including 0.01%, 0.05%, 0.30% and 1%. The fee is taken from the amount paid in before the formula is applied. With a 0.30% fee in the example pool, the 10 ETH sale returns 29,614.74 USDC (1.28% below mid) and the 100 ETH sale returns 271,983.27 USDC (9.34% below mid). That is 88.23 USDC extra on the 10 ETH trade and 744.00 USDC extra on the 100 ETH trade. The curve and the fee are two costs with two causes; the example keeps them in separate calculations.
Slippage: what moves after the quote
Slippage starts where the quote ends. A swap is quoted against the pool as it stands, then waits to be included in a block. If anything changes the pool in between, the trader’s execution differs from the quote.
Stay with the example. The 10 ETH sale is quoted at 29,702.97 USDC. Before it executes, another 10 ETH sale is processed. The pool now holds 1,010 ETH and 2,970,297.03 USDC. The same sale now returns 29,120.56 USDC. That is 582.41 USDC (1.96%) below the quote and 2.93% below the 30,000 USDC at mid. The 1.96% is slippage. The 0.99% that was already in the quote is price impact.
Other trades are one cause. Uniswap’s own explainer points to another: searchers can place transactions before and after a large swap to profit from the price movement the swap causes, which widens the gap between the quoted price and the price received.
Slippage tolerance caps the drift
Swap interfaces let the user set a tolerance, labelled “Max slippage” in Uniswap’s web app and wallet. It caps how far execution may drift from the quote. If the price moves beyond the tolerance, the swap does not go through. The network cost of the attempt is still paid. The web app can also pick a value automatically, based on factors such as network cost and swap size.
The example shows how the cap works. A 0.5% tolerance on the 29,702.97 USDC quote sets a floor of 29,554.46 USDC. The 1.96% move above would breach it, so that swap would not go through. A 1.0% tolerance on the 100 ETH quote of 272,727.27 USDC sets a floor of 270,000.00 USDC. Notice what the setting does not do: the 9.09% shortfall was already part of that quote, so the tolerance does not reduce price impact. It limits what can change afterwards.
Both extremes cost something. Uniswap’s Help Center warns that a value set too low may make a transaction fail. A value set too high can return fewer tokens than the preview showed: its example is a 25% setting, which could mean 25% fewer tokens. The swap screen shows price impact and max slippage as separate fields, which is the distinction this article draws. No single value suits every swap: the pool and the order size should guide it.
Concentrated liquidity changes impact near the price
Earlier Uniswap versions spread liquidity along the whole curve, from a price of zero to infinity. Uniswap v3 introduced concentrated liquidity: providers allocate liquidity to a custom price range. Inside that range a position behaves like a constant product pool with larger reserves, which the v3 whitepaper calls virtual reserves. The formula still applies, but within each provider’s chosen range.
Extend the example. Suppose the same capital acts as virtual reserves ten times larger inside its range. The factor of ten is chosen for illustration. The 10 ETH sale then falls from a 0.99% shortfall to 0.100% and the 100 ETH sale from 9.09% to 0.990%, provided the trade stays inside the range. Uniswap’s docs note that narrower tick spacing, which suits pairs such as stablecoins, may lower price impact.
There is a limit. It follows from how ranges work rather than from any quoted figure. When the price leaves a position’s range, that liquidity stops being active. A swap large enough to cross a tick boundary moves on to whatever liquidity is active in the next interval, which may be less than the liquidity it just used. Impact near the price can be low while impact beyond the range edge is high, so a single percentage for a pool describes just the stretch of the curve it was measured on.
Depth at ±1%: one number for both
A risk desk rarely wants a curve. It wants a figure to hold an order size against. Depth within one percent of the rate is that figure: how much trading the market offers before the price has moved a set distance. In the example pool, selling 5.038 ETH (about 15,113 USDC at the starting mid) moves the pool’s price 1% down; paying in 14,962.69 USDC moves it 1% up. This is arithmetic for that one pool with no fee, shown to illustrate what “within 1%” means. It is not a description of how any feed computes its figure.
ML Data feed pages carry a ±1% depth chip wherever depth data is available: the dollar amounts on the bid side and the ask side that the API reports for a one percent move below and above the rate. It is a delayed snapshot of those API values. Because price impact is a property of size, a team can set a planned order next to the figure for the side it trades: a seller faces the bid side, a buyer the ask side. A snapshot is a sizing reference, not an execution quote, so slippage tolerance still does its separate job at the moment of the swap.
The chip sits in the chart header of feed pages such as the ETH/USD feed and the USDC/USD page as well as the wstETH/USD feed. The feed-page guide explains how to read the chip alongside the rate and the composition. For where the rate itself comes from, see how DEX-native price feeds work; the methodology page describes the approach and the API page covers access to the same values.
Two companion articles cover neighbouring questions: TWAP, VWAP and liquidity-weighted prices asks which average makes a reference price; CEX vs DEX pricing compares how the two kinds of venue produce a price.
Sources
- Uniswap Docs: How Uniswap Works
- Uniswap Docs: Uniswap v2 Swaps
- Uniswap Docs: Uniswap v2 Pricing
- Uniswap Docs: Fees
- Uniswap Docs: Concentrated Liquidity
- Uniswap Help Center: Price Impact vs Price Slippage
- Uniswap Help Center: What is price impact?
- Uniswap Help Center: How to change slippage on the Uniswap Web app
- Uniswap Blog: What is Slippage?
- Uniswap v3 Core whitepaper