
Slippage and Price Impact, Explained
You see a quote: 1 ETH for 3,200 USDC. You confirm the swap. Seconds later, the transaction settles and you receive 3,187 USDC instead. Nothing was hacked, no one moved the goalposts — you just met two of the most misunderstood mechanics in on-chain trading: price impact and slippage.
This article unpacks both for self-custody users. By the end, you will know why the number you saw isn't always the number you get, what the "slippage tolerance" setting actually does, and how to think about it when you swap from SSP Wallet or a dApp.
Why a quoted price is only a quote
Most on-chain swaps don't go through a traditional order book. They go through an Automated Market Maker (AMM) — a smart contract that holds two assets in a liquidity pool and prices them by a formula. The most common formula is the constant product rule, often written x * y = k:
xis the amount of token A in the pool.yis the amount of token B.kis a constant the pool tries to preserve.
When you swap token A for token B, you push the ratio of x to y out of balance. The pool re-prices automatically so that k stays roughly constant. That re-pricing is the source of price impact.
A quote is a snapshot of the pool's state a moment ago. By the time your transaction is mined, the pool has often changed — other swaps have hit it, blocks have come and gone, and your own trade is about to nudge it further. The number you saw was honest. It just wasn't a promise.
Price impact: the cost of your own trade
Price impact is the change in price caused by your trade alone, assuming nothing else changes between quote and execution. It is mechanical, predictable, and entirely a function of pool depth.
A thought experiment. Imagine an ETH/USDC pool with 100 ETH and 320,000 USDC. The marginal price is roughly 3,200 USDC per ETH. Now:
- Swap 1 ETH in. You take a tiny slice of the pool's reserves. The new price drifts a hair. You receive close to 3,200 USDC, minus the pool fee. Price impact is small — maybe a few basis points.
- Swap 10 ETH in. You've moved the ratio meaningfully. The price you actually get averages well below 3,200 USDC per ETH. Price impact is now several percent.
- Swap 50 ETH in. You're consuming a third of the pool's liquidity. The execution price collapses. Price impact can run into the tens of percent.
The lesson: bigger trade vs. pool depth equals larger price impact. Doubling the trade more than doubles the cost, because each subsequent unit hits a worse curve. Wallets and aggregators usually surface this as a percentage on the swap screen. Treat anything past a few percent as a warning, not a footnote.
Price impact is not a fee paid to anyone in particular — it's the cost of being your own counterparty against a curve.
Slippage: the gap between quote and fill
Slippage is the difference between the price you expected and the price your swap actually executed at. It includes price impact, but it also includes everything else that happens between the moment you see the quote and the moment the transaction lands on-chain:
- Other trades hitting the same pool. Anyone else swapping in the same block, or in the blocks between your quote and your confirmation, moves the pool state.
- Time between quote and execution. Even a few seconds is enough for the pool to drift, especially on volatile assets.
- Your own price impact. As above — the trade itself shifts the price it executes against.
- MEV. Searchers can sandwich a pending swap by trading just before and just after it. We dig into this in MEV, frontrunning, and sandwich attacks.
Price impact is something you can model. Slippage is what actually happened.
The slippage tolerance setting
Because the network can't guarantee the exact price between quote and execution, swap interfaces let you set a slippage tolerance: a maximum acceptable deviation from the quoted price. If the actual fill would be worse than quote - tolerance, the smart contract reverts the swap.
This sounds neat, but it's a real trade-off:
- Too low. The transaction reverts because the pool drifted past your limit. The revert still costs gas — you pay for the failed attempt and walk away empty-handed. On busy days with volatile assets, you can stack several failed swaps before one lands.
- Too high. The transaction lands almost no matter what, including in cases where MEV bots have deliberately moved the price against you. A 5% tolerance on a popular token is a green light for sandwich attacks. You receive the worst price your tolerance allows.
There is no universal correct number. A 0.1% tolerance on a deep stablecoin pair is sensible. The same number on a thin token mid-news is a guaranteed revert. The pragmatic move is to start small and adjust: if the swap reverts, raise tolerance slightly; if you're being sandwiched, lower it and consider routing through a different venue or smaller chunks.
How this looks from SSP
SSP gives you two ways to swap, and they expose you to slippage differently:
- The in-wallet aggregator (the buy/sell/swap surface inside SSP). The aggregator picks a route across venues and presents you with a single quoted output. Most of the route-level slippage is handled inside that flow; you confirm or cancel based on the final number you see. We covered the broader UX of these flows in swapping crypto from SSP.
- A dApp swap via WalletConnect. When you connect SSP to a DEX directly, the dApp owns the swap UI — including the slippage tolerance setting. You set the number, you live with the consequence. SSP simply co-signs whatever transaction the dApp asks for once you approve in the extension and confirm on SSP Key. Read the dApp's swap screen carefully.
The 2-of-2 multisig nature of SSP doesn't change the AMM math, but it does mean every swap requires confirmation on two devices. That introduces a few extra seconds between "I clicked confirm" and "the tx hit the mempool" — another reason quoted prices and final fills don't always match.
Practical advice
A short checklist that holds up across most chains and DEXs:
- Test small first. Before swapping a large position, send a tiny amount through the same route. If price impact is already alarming on a small trade, the big one will be much worse.
- Watch the price impact percentage. If your wallet shows it, treat anything beyond 1–2% as a red flag for normal-sized trades. Aggregators and deeper pools usually solve this.
- Check the final cost, not just the rate. Network gas fees on Ethereum are an additional cost on top of price impact and slippage. We covered the fee mechanics in gas fees on Ethereum, explained for self-custody users. EIP-1559 means the fee you pay can move between when you sign and when the block lands, which is one more reason "the price moved while I was confirming."
- Prefer deep pools. Liquidity is the friend of price impact. A pair with $50M of liquidity absorbs your trade far better than one with $500k.
- Set tolerance with intent. Don't accept the default blindly. Don't crank it up to 5% just to make a failed swap go through — that failure is often telling you something.
- If you're being sandwiched repeatedly, change route. Smaller chunks, a different aggregator, or an MEV-aware RPC can change the outcome.
The takeaway
Price impact is the inescapable math of trading against a pool: it grows with trade size and shrinks with liquidity. Slippage is the messy reality of executing in a public mempool where other transactions, time, and your own trade all move the price. Your slippage tolerance is the lever that decides whether your tx is more likely to revert or more likely to be sandwiched. Use it deliberately.
When you swap in SSP, the same physics applies whether you go through the in-wallet aggregator or a dApp via WalletConnect. The difference is who sets the tolerance — and once you understand what you're setting, you can hold both options without surprise.


