# Minimum output: the number that decides whether your swap happens at all

> Canonical: https://blazephoenix.xyz/learn/minimum-output-explained
> License: CC BY 4.0 (attribution + link) · © 2026 BlazePhoenix
> Updated: 2026-08-13

The slippage tolerance sets the minimum output — the only enforced promise in a swap: if the trade would return less, the transaction reverts and you keep your tokens. It does not exist to cover price impact, which is already inside the quote; it covers drift between quote and execution, so the honest way to choose it is to measure a pair's actual drift over a minute — and beneath your number the protocol enforces its own floor of 80% per leg.

A swap transaction carries a number that most people never look at: the smallest output they are willing to accept. If the trade would return less, the whole transaction reverts and the tokens stay where they were.

It is the only enforced promise in the entire process. The quote is a calculation about the past; the fill is an outcome you cannot control; the minimum is a condition the contract checks and acts on. This article is about choosing it well.

## Where the number comes from

You do not usually type the minimum. You type a percentage — the slippage tolerance — and the interface multiplies the quote by it. Carrying forward the trade from the earlier article, whose net quote was 90.4072 tokens:

```
tolerance   minimum output          most you can lose
                                    against the quote
   0.1%     90.4072 x 0.999 = 90.3168      0.0904
   0.5%     90.4072 x 0.995 = 89.9552      0.4520
   1.0%     90.4072 x 0.990 = 89.5031      0.9041
   5.0%     90.4072 x 0.950 = 85.8868      4.5204
```

The right-hand column is the sentence to take away. A tolerance is not a setting that makes swaps work. It is a permission slip: it states the largest amount you agree to be worse off by, relative to the quote, before the transaction is called off. Choosing 5% authorises a loss of 4.52 tokens on this trade. Choosing 0.5% authorises 0.45.

## The mistake worth fixing first

Almost everyone believes the tolerance is there to cover price impact — the cost of trading a large size into a pool. It is not, and believing it leads to setting the number far too high.

Look again at where the quote came from. The 90.4072 was computed for your exact size, against the pool's exact balances, with the impact of your own order already subtracted. The 9.09% you give up to your own size is inside the quote, not outside it. Doubling your order does not require a wider tolerance; it produces a smaller quote, and the tolerance is a percentage of that smaller quote.

What the tolerance actually covers is the change between the moment the quote was computed and the moment your transaction executes. That is a completely different quantity: it is about other people trading, not about you.

## How to choose it by measuring

Since the tolerance covers drift over a short wait, the honest way to set it is to measure that drift on the pair you are about to trade.

Ask for the same quote, at the same size, ten times over a minute, and write down the results. Suppose you get numbers spread between 90.30 and 90.51. The spread is 0.21 tokens on about 90.4, which is 0.21 / 90.4 = 0.23%. A tolerance of 0.5% comfortably covers what you just observed, with room for one unusually large trade landing before yours. A tolerance of 5% covers twenty times more movement than the pair has shown you.

Do the same measurement on a thinly traded token and the spread might be 2% over the same minute. Then 0.5% will fail repeatedly, and the correct conclusion is not that the interface is broken — it is that the pair genuinely moves that much while you wait, and you must either accept a wider band or trade a smaller size.

The two failure modes are symmetric, which is why there is no universally correct setting. Too tight and your transaction reverts; you keep your tokens but you paid the chain fee for a swap that did not happen. Too loose and the transaction almost always succeeds, at whatever price the block gives you, up to the limit you authorised.

## The limit nobody can engineer away

Your pending transaction is public before it executes, including the minimum you set. A bot can read it, trade ahead of you to push the price against you, let your trade execute at the worse price, and trade back immediately afterwards to collect the difference. That is a sandwich, and no contract can prevent it, because the order of transactions inside a block is decided outside the contract, before any of its code runs.

What the minimum does is bound it. A bot cannot profitably push you past your floor, because past the floor your transaction reverts and there is nothing to sandwich. So the loss available to that bot is capped at exactly the number in the right-hand column of the table above.

Stated bluntly: your tolerance is the size of the prize you are offering. At 0.5% the prize on this trade is 0.45 tokens. At 5% it is 4.52. The setting most likely to be chosen out of impatience is the setting that pays the most.

## The floor you did not set

Alongside your number, the protocol enforces one of its own, and it cannot be switched off from the interface.

Every leg of a route must return at least 8,000 basis points — 80% — of what the chain itself quoted for that leg, and the aggregate floor is clamped so that it can never sit below 80% either. The reference is the on-chain quote of the last hop, taken before the protocol fee is applied, which means it is derived from the state the trade actually meets rather than from a number computed elsewhere and possibly stale.

Put it against our example. The gross output before the protocol fee was 90.6611, so the protocol floor is 90.6611 x 0.8 = 72.5289. Your own floor at 0.5% tolerance was 89.9552. Yours is far tighter, and yours is the one that will stop the trade.

That is the correct relationship, and it is worth being explicit about it rather than dressing the 80% up as protection it is not. A route delivering 81% of its own on-chain quote is a disastrous fill, and the protocol would execute it. The 80% floor exists so that a broken, hostile or manipulated pool cannot return you a tenth of your money while the contract shrugs. It is a catastrophe stop. Your tolerance is what protects you on an ordinary day.

## What happens when the floor is hit

The transaction reverts. That word has an exact meaning: every state change made by the transaction is undone, as if the code had never run. Your input tokens are still yours, the pools are untouched, and the allowance that was decremented is restored along with everything else. There is no partial swap and no half-filled order.

You still pay the chain fee for the attempt, because the network did the work of running the code and discovering that the condition failed. This article quotes no figure for that fee, on purpose: a gas number is not reproducible unless the chain, the block, the build and the storage state are all stated with it, and a number you cannot reproduce is not a number you should be handed.

A revert is the system working. It is the outcome you bought when you set the number.

**Verify it yourself:** Set a deliberately impossible tolerance — 0.01% on a volatile pair — and send the swap. It should revert, and the explorer should show your token balance unchanged. Then read the enforced floor for yourself: the per-leg minimum is 8000 basis points of the on-chain quote for that leg.

Related: https://blazephoenix.xyz/learn/three-prices · https://blazephoenix.xyz/learn/sandwich-attack-explained · https://blazephoenix.xyz/learn/iron-floor · https://blazephoenix.xyz/learn/slippage-settings-guide · https://blazephoenix.xyz/learn/where-your-tokens-are-during-a-swap
