copyfomo/blog/slippage tolerance
slippage tolerance

Slippage Tolerance Explained: What It Controls in a Swap

slippage tolerance sets the most a swap can move against you before it fails. learn how to set it and read realized slippage on copied trades.

Slippage Tolerance Explained: What It Controls in a Swap

Slippage tolerance is the maximum price movement a swap accepts between submission and execution, and a swap that moves past it fails instead of filling at a worse rate. You're following a trader on fomo, a copy fires, and the trade either fills worse than quoted or reverts outright. The setting decides which outcome you get. It doesn't decide what the market does.

Table of Contents

What Slippage Tolerance Limits in a Single Swap

Slippage tolerance is a ceiling. It's the most a swap can move against you between submission and execution. Past that limit, the transaction reverts and no fill happens at a worse rate.

A revert doesn't mean the market moved the full percentage you set. It means the final check found the output below your minimum. The price could have moved just past the line. It could also have moved well past it. The revert itself doesn't tell you by how much.

The chart below maps the sequence from quote to that final check.

An infographic illustrating how slippage tolerance works for cryptocurrency swaps using a visual flow chart.

Four Numbers in Every Swap

Most confusion comes from treating four different numbers as one cost. They're separate mechanics with separate causes. Only one of them is yours to set.

Price impact is your own order moving the pool price. The guide to slippage and price impact in Uniswap v3 notes price impact can be calculated from pool state and trade size before submission. That same guide defines slippage as the additional difference caused by market movement while the transaction is pending, including other transactions landing first. For an exact-input swap, it states a 0.5% tolerance sets the minimum acceptable output at approximately 99.5% of the quoted output.

The trading fee is neither of those. In Uniswap v2-style pools, the Uniswap v2 pricing documentation describes a fixed 0.30% fee on each trade, added to pool reserves. You pay that fee on every fill. It doesn't change because you widened or narrowed your tolerance.

Component What causes it Can you set it? Where to see it
Trading fee Fixed 0.30% per trade in Uniswap v2-style pools No Pool fee shown before the swap
Price impact Your own order moving the pool price Partly, by trade size Quote calculated from pool state before submission
Market slippage Price moves while the transaction is pending Indirectly, through tolerance Realized slippage after execution
Slippage tolerance Maximum deviation you accept Yes Swap settings before submission

Read the table by control, not by size. The fee is fixed by the pool. Price impact is set by the pool and your size. Market slippage only shows up after execution. Tolerance is the only number you choose directly.

Tolerance isn't an expected cost. It's the worst execution you're willing to accept before the swap gives up.

How a Quote Becomes a Fill or a Revert

The flow runs in a fixed order. First you get a quote, and that quote already includes price impact based on the pool state at that moment. Then your transaction waits for confirmation. While it waits, other trades can land and shift the reserves.

At execution, the router compares the actual output with your minimum. If the output clears the minimum, you fill at the actual price, not the quoted one. If it doesn't, the swap reverts.

Say a quote shows roughly $1,000 of output for an exact-input swap. With a 0.5% tolerance, your floor sits near $995. A fill at $997 is inside the limit. A fill that would land at $993 fails instead. You don't get a partial fill at the floor.

Don't read that example as a prediction. The tolerance doesn't say you'll lose 0.5%. It says 0.5% worse is the worst you'll accept. Most fills in a deep, quiet pool land well inside the limit. The limit only matters when conditions move.

Why Size Eats the Room

A large order moves the pool price by itself. That's price impact, and it's baked into the quote before you submit. But it still leaves you with less room inside the same tolerance. Your own trade has already pushed the price, so any extra movement while pending starts from a worse point.

Traders often misread their settings. They widen tolerance to fix reverts caused by their own size. The wider limit helps the swap clear, but it doesn't reduce the impact. It only accepts more of it.

Cutting size works differently. A smaller order moves the pool less, so the quote improves before tolerance even enters the picture. If reverts keep happening at one size and stop at a smaller size, size was the problem.

Small swaps face the opposite balance. Their price impact is usually minor, so the tolerance is mostly absorbing movement from other traders. In that case the limit is doing the job it's meant to do, which is covering the gap between submission and confirmation.

Keep the distinction clean when you review a trade. Ask which part was the fee, which part was your own impact, and which part was movement while pending. If you lump them together, you'll adjust the one setting you control to compensate for costs it can't fix.

The quote is not a promise. It's an estimate built from pool state at one moment. The tolerance is checked against the final execution, and that check is the only guarantee in the whole flow. Either the output clears your minimum or the trade doesn't happen.

Starting Tolerance Ranges by Market Condition

Start with the ranges, then match your token to a row. These are starting points, not targets.

Market condition Typical tolerance range Reference point Main trade-off
Stable pairs and low-volatility markets 0.05% to 0.5% Historical 0.5% default in Uniswap interface examples Tight limits revert more often after small moves
Standard swaps with moderate liquidity 0.5% to 1% Moderate range in Uniswap integration guidance Balance between fill rate and price protection
Volatile markets, large trades or low-liquidity tokens 1% to 5% Upper range in Uniswap integration guidance Higher fill rate, more room for adverse execution

The Uniswap integration guide lists 0.05% to 0.5% as a conservative range for stable pairs and low-volatility markets, 0.5% to 1% as a moderate range for many swaps, and 1% to 5% for volatile markets, large trades, or low-liquidity tokens. It also states the plain trade-off. A setting that's too tight can cause a transaction to revert after a small price move. A setting that's too wide allows execution at a materially worse price.

Reading Each Row

Stable pairs sit at the tight end for a simple reason. The price doesn't move much between submission and confirmation, so a narrow limit still fills. The 0.5% figure at the top of that row is the historical default shown in Uniswap interface examples. Treat it as a reference point from calmer markets, not a universal answer.

Standard swaps with moderate liquidity take the middle range. There's enough movement that the tightest settings start reverting, but enough depth that you don't need to open the limit wide. This row is where most ordinary trades belong, and it's a reasonable place to start when you don't know a token well.

Volatile markets, large trades and low-liquidity tokens take the widest range. Price can move a lot while a transaction is pending, and thin pools shift under smaller orders. A wider limit fills more often here. It also lets worse prices through, which is the cost of that fill rate.

Three Checks Before You Pick a Value

The range gets you to the right row. Three checks place you inside it.

  • Pool depth against your size: Compare your order with the liquidity available. A trade that's large relative to the pool needs more room, or a smaller size.
  • Recent movement: Look at how far the token has moved over the last hour or day. A token swinging hard in an hour will eat a tight limit before confirmation.
  • Buy or sell: Entries and exits don't carry the same cost when they fail. That difference can justify different values on each side.

None of these checks need precision. You're sorting the trade into calm, ordinary or fast. That sorting matters more than the second decimal place.

I would not copy a value from one token to another without running those checks. The same token can need different values on different days. A pool that's deep and quiet on Tuesday can be thin and moving on Friday. Your setting should follow the conditions, not the ticker.

What Tolerance Does to Copied Entries and Exits

The copy flow is short. A trader you follow on fomo fills a trade. copyfomo mirrors both entries and exits, in both directions, about one second after the trader's fill. Your swap then has to clear your tolerance at the price of that moment, not at the price the trader got.

That gap is the whole issue. The trader's fill already moved the pool. Other copies and other traders may be moving it too. Your limit is checked against conditions after all of that.

Two Failures That Look the Same

A failed entry and a failed exit both show up as no fill. They aren't the same problem.

  • Failed entry: You stay uninvested. That's usually harmless. You miss the move, but you hold no position you didn't choose.
  • Failed exit: You stay in the position after the source trader has already sold. That one needs attention first, because you're exposed without the trader whose judgement put you there.

On an entry, your risk is paying a worse price than the trader paid. A tight limit protects that price. If the copy reverts, you've lost an opportunity and nothing else.

On an exit, your risk flips. Staying in is the danger, not the fill price. An exit limit needs to be bounded, so you don't accept any price at all, but wide enough to clear when the market moves against the sale. A limit tuned for entries can be too tight to get you out.

Practical rule: Protect the price on the way in. Protect the exit on the way out.

Setting Two Values Instead of One

Review entry and exit limits as two separate values. One number for both sides forces a compromise that serves neither. Tighten the entry until reverts start costing you trades you wanted. Set the exit so it clears under stress while still rejecting a clearly bad price.

Think about what each side is for. The entry limit answers how much worse than the quote you'll pay to get in. The exit limit answers how much worse you'll accept to be out. Those are different questions, and they rarely deserve the same number.

If you're new to the flow, the mechanics of following a trader and sizing copies are covered in our guide to how copy trading works. Set the tolerance thinking after that, with entries and exits kept apart.

Check two things in your settings before you rely on them. Confirm which side each limit applies to, entry or exit. Confirm whether failed exits are recorded where you can review them later. A failed exit you never see is worse than a bad fill you can measure.

Tight and Wide Settings in Real Trades

Say a trader buys a fast-moving memecoin and two copies follow. One runs a tight limit. The price jumps between the trader's fill and the copy, the output misses the minimum, and the copy reverts. The second copy runs a wide limit. It fills, but at a noticeably worse price than the trader paid.

Neither copy malfunctioned. Both did exactly what their settings told them to do.

The comparison below puts those two outcomes side by side.

A comparison chart explaining how tight and wide slippage tolerance settings affect cryptocurrency swap trade outcomes.

What Traders Actually Set

The study of slippage tolerance defaults on Uniswap and SushiSwap found most users historically left the default tolerance unchanged, with both the 25th percentile and median at 50 basis points, or 0.50%. Behaviour differed for PEPE, where the 25th percentile sat at 100 basis points and the median at 300 basis points, or 3.00%. The same study found the probability of adversarial slippage when trading PEPE was about 80% higher than when trading USDC.

Read those PEPE figures as a market telling you something. Users accepted more execution risk because price movement was expected. They weren't being careless. A tight limit on that pool would have reverted constantly.

But the wider limit wasn't free. Adversarial slippage was far more likely on PEPE than on USDC. More room in the setting means more room for someone else to use it against you.

The default research points the same way. That study examined a change from Uniswap's earlier static 0.5% default to a dynamically computed default, and reported the new default reduced trader losses by approximately 54.7% overall and by about 90% among traders who followed default settings. A fixed number, left alone, cost money in markets where it didn't fit.

The short walkthrough below shows the same tight versus wide choice on a live swap.

Same Number, Different Odds

Put a 0.5% limit on a deep stablecoin pool. Price barely moves while you wait, so the limit is almost never tested. Put the same 0.5% on a thin memecoin pool. Ordinary movement blows through it before confirmation.

The number didn't change. The odds did. That's why copying a setting from a calm trade into a fast one fails, and why a wide setting that saved a memecoin copy will overpay on a stable pair. Match the limit to the pool in front of you.

Failed Swaps, Sandwich Attacks and Their Costs

The common assumption is that a wider limit is safer because trades fill. That's half true. A wide limit also gives an attacker room to work.

A sandwich attack is simple. The attacker places a transaction before yours and one after it. The first trade moves the price against you. Your swap fills at the worse price. The second trade closes the attacker's position and keeps the spread.

The diagram below shows that ordering around a victim swap.

A diagram explaining a cryptocurrency sandwich attack, showing how an attacker manipulates price and exploits slippage tolerance.

The EigenPhi research on sandwich attacks on Ethereum describes sandwich attacks as placing a transaction before and after the victim's swap, moving the price against the victim and allowing the attacker to capture the resulting spread. It also notes displayed slippage can reflect pending-transaction ordering and liquidity conditions, not only market volatility. That's why a copied trade should be judged on its actual execution price rather than the initial quote.

Your tolerance sets the attacker's budget. If your swap would revert past a small move, there's little room to extract. If you'll accept a large move, the attack can take more before your limit stops it. The wider limit doesn't cause the attack. It decides how far the attack can push and still get paid.

The Cost of Reverts

Tightening up isn't free either. A reverted transaction returns your input tokens, so the swap itself doesn't happen at a bad price. The attempt can still cost network fees. Repeat that across several copies in a fast market and the fees become a real cost of a setting that never fills.

There's also the position cost. A reverted entry leaves you out. A reverted exit leaves you in. Both show up as failures, but only one of them leaves you holding risk you tried to drop. Weigh reverts by side, not just by count.

This is one of the core risks of automated copying, and it sits alongside the others in our breakdown of copy trading risks. Tolerance is where several of those risks meet in a single number.

A lower tolerance isn't automatically safer. It trades bad fills for missed fills, and missed exits carry their own risk.

There's no setting that removes both problems. Too tight turns protection into missed fills and wasted fees. Too wide fills reliably and hands an attacker more room. The right point between them depends on the token's depth and volatility, not on a single rule you set once and forget.

Reading Realized Slippage on Copied Trades

Your setting is a ceiling. Realized slippage is what happened. copyfomo prints the slippage on every copied trade, so each copy carries a figure you can read against the limit you set.

That comparison tells you more than the limit alone. A realized number well below your tolerance means the market had room to spare and your limit was never close to binding. A number close to the tolerance means the trade used most of the room you allowed. A missing fill means the limit was hit.

A Short Review Routine

Run this after trades settle, not while they're firing.

  1. Note the limit for that side: Write down the tolerance that applied, entry or exit. Don't compare an exit fill against your entry setting.
  2. Read the realized figure: Take the slippage printed on the copied trade. That's the execution you got, not the quote you saw.
  3. Compare within the same token: Set the figure against recent copies in that token. A single trade tells you little. A run of fills near the ceiling tells you the limit is tight for that pool.
  4. Log failed copies with a suspected cause: Note whether you suspect the limit, thin liquidity, fast movement or something else. A guess you can revisit beats a blank.
  5. Change limits slowly: Adjust only after several trades on the same token point the same way. One bad fill is noise.

Keep the log plain. Token, side, limit set, realized slippage, filled or failed. Five columns are enough. You're looking for patterns across copies, not building a research project.

What the Pattern Should Look Like

Realized slippage is a sample, not a forecast. Past copies don't predict the next fill, and a calm run of trades doesn't mean the next one clears. Conditions change between trades even in the same pool.

A healthy pattern has three marks. Fills land close to the source trade time. Realized slippage sits inside your limit without crowding it every time. Failures are ones you can explain from your log.

Watch for the unhealthy versions. Realized slippage pinned near the ceiling on most fills means you're paying close to your worst case as a habit. Reverts clustering on exits mean your exit limit is too tight for that token's movement. Fills far inside the limit on every trade can mean the limit is wider than the market needs, which leaves room you don't have to leave.

I would change one side at a time. If entries look fine and exits keep failing, touch the exit limit only. Changing both at once leaves you unable to say which adjustment did what.

Set Your Tolerance Before the Next Copy

Make the decision in order. Pick a starting range that fits the token's market condition. Set entry and exit limits as separate values. Then check realized slippage after the first few trades before changing anything.

On copyfomo, slippage is set to auto by default, with options of 2%, 5%, 10% and 15%. Whatever you choose, keep the first settings conservative for a token you know. Widen only after logged reverts show the limit is the cause, rather than thin liquidity or fast price movement.

  • Match the range first: Use market condition to find the row, then place your value inside it.
  • Split the sides: Entries protect price. Exits protect the way out.
  • Review before adjusting: Read realized slippage across several copies on the same token.

The detailed walkthrough of these controls sits in our guide to fomo copy trading settings. Review the traders you plan to follow on the traders pages and use the data pages for context on their results. Read the existing blog posts if a term here is unclear.

Copy trading carries risk, and past performance does not predict results. This article is informational, not financial advice, and it recommends no token. Set your tolerance before the first mirrored trade by starting copyfomo on Telegram.


copyfomo is a Telegram bot that mirrors the entries and exits of traders you follow on fomo and prints the slippage on every copied trade, so you can set your limit and then check each fill against it. Copy trading carries risk and no setting removes it. Start with copyfomo, set your entry and exit tolerance first, and review realized slippage after your early copies.

stop reading. start copying.

pick a trader from the fomo leaderboard, set your size, and the entries and the exits land in your own wallet while you sleep.

open copyfomo on telegram →