Why your market order filled worse than the price you saw
The number on the ticker is a record of a trade that already happened, not a price anyone is offering you. This piece takes one order through an order book level by level and separates the three costs that people habitually add together and call slippage.
The complaint is always shaped the same way. The screen said 2,500. You pressed buy. The trade history says you paid 2,501.38, and then a fee came off on top of that, and the whole thing feels like a bait and switch.
It is not one. Three separate costs arrived at the same moment and were billed in different places. Once you can see which one you are paying, you can usually do something about at least two of them.
Why isn't the ticker price the price I pay?
The price on the ticker is the price of the most recent completed trade, which is a record of the past rather than an offer being made to you.
An exchange order book has two sides. On the bid side sit people committed to buy at a stated price; on the ask side, people committed to sell. Those are live standing offers, and the only prices you can transact against. Between the best bid and the best ask is a gap where nobody is offering anything, and any price quoted inside that gap is a description, not an opportunity.
The ticker number is neither of those. It is the price at which the last trade printed. If the last trade was somebody selling into the bid, the ticker shows a price on the bid side, and if you then buy, you buy from the ask side, which is higher. You have not been cheated. You looked at a number generated by somebody else's trade in the other direction.
Most interfaces make this worse by setting the last-trade price in the largest type on the page and the bid and ask in small figures at the top of the book. The first time it caught me out I had not registered that the big number and the number I would transact at were different objects. The order book is the price display. The ticker is a headline.
Walking the book, level by level
A market order takes the best available price first, then the next best, then the next, until the full quantity is filled, so a large order ends up paying a blend of several price levels rather than one.
A market order specifies a quantity and no price. You are telling the matching engine: fill this, whatever it takes. The engine works outward from the touch in price priority, and where two resting orders sit at the same price it matches the one that arrived first.
If the quantity you want is smaller than the quantity resting at the best price, you get filled entirely at the best price and never see any of this. That is why small orders in liquid pairs feel like the screen price is the price you get. Nothing is different about those orders. They just did not run out of the first level.
The moment your quantity exceeds what is resting at the touch, the order fills in pieces, each a separate fill at a separate price. What is reported back is usually a single average, and that average is volume-weighted: total money divided by total quantity. Not the arithmetic mean of the prices, which is wrong whenever the levels hold different amounts.
Slippage is the gap between the price you had in mind when you sent the order and the volume-weighted average price you actually got.
That definition has a soft spot. "The price you had in mind" is not well defined: people benchmark against the last trade, the best ask, or the mid price halfway between bid and ask, and on a tight pair the gap between those benchmarks can be as large as the slippage itself. Below I use both the top of the book and the mid, and label which is which.
It runs the other way too, occasionally. If the book moves in your favour in the fraction of a second between pressing the button and the order reaching the matching engine, you can fill better than the last-trade price on the ticker. That is positive slippage, and on very short timescales it happens about as often as you would expect from a coin flip. It is not something you can plan around, and it is almost always small next to the half-spread you pay for crossing in the first place.
Five levels, one blended price
On a book where the top level holds 6 units and you buy 40, the blended price came out 0.055% above the best ask in the example below, which is roughly half of what the trading fee cost on the same order.
Here is a made-up book with round numbers so the arithmetic is checkable. Treat the units as ETH and the prices as USDT. It is an illustration, not a capture of a real market.
| Ask level | Price | Size | Cumulative size | Cost of this level |
|---|---|---|---|---|
| 1 (best ask) | 2,500.00 | 6 | 6 | 15,000.00 |
| 2 | 2,500.40 | 9 | 15 | 22,503.60 |
| 3 | 2,501.10 | 12 | 27 | 30,013.20 |
| 4 | 2,502.30 | 8 | 35 | 20,018.40 |
| 5 | 2,504.00 | 5 | 40 | 12,520.00 |
| Total | — | 40 | — | 100,055.20 |
Divide the total cost by the total quantity: 100,055.20 / 40 = 2,501.38. That is your volume-weighted average fill price. Against the best ask of 2,500.00 you paid 1.38 more per unit, or 55.20 in total, which is 0.0552% of the notional.
Five fills, five prices, one average reported back to you.
Most interfaces will expand a single order into its component trades if you press the right chevron. It is a genuinely useful button and almost nobody presses it.
The important property of this cost is that it is not linear in size. Doubling the order more than doubles the slippage, because each additional unit is drawn from a worse level than the last. Against the same book, extended two levels further with 20 units at 2,506.50 and 40 units at 2,511.00:
| Order size | Total cost | Average fill | Slippage vs best ask |
|---|---|---|---|
| 5 units | 12,500.00 | 2,500.00 | 0.000% |
| 15 units | 37,503.60 | 2,500.24 | 0.010% |
| 40 units | 100,055.20 | 2,501.38 | 0.055% |
| 100 units | 250,625.20 | 2,506.25 | 0.250% |
Twenty times the size, and the slippage rate has gone from zero to a quarter of a percent. Size does not scale your execution cost proportionally. It scales it faster than proportionally, and the shape of that acceleration depends entirely on how the book is stacked at that moment.
Note also that the five-unit order slipped by exactly nothing. Below the depth of the top level, slippage is zero by construction. Every book has a size threshold under which this article does not apply to you at all.
Three costs going to three different places
The spread is what you pay for crossing from one side of the book to the other, slippage is what you pay for being bigger than the top level, and the fee is what the exchange charges you for the match — three different amounts going to three different places.
People fold all three into one word and then argue about numbers that are not comparable. Keeping them apart:
| Cost | What it is | Who receives it | Depends on |
|---|---|---|---|
| Spread | The gap between best bid and best ask. Crossing it costs about half the gap. | Market makers quoting both sides | How competitive quoting is in that pair |
| Slippage | The extra cost of the part of your order that had to reach deeper levels. | Traders whose resting orders you filled | Your size against the depth of the book |
| Trading fee | A percentage of traded value, billed by the venue at the match. | The exchange | Your fee tier and taker or maker status |
Put arithmetic on the 40-unit order. Say the best bid was 2,499.60 against the best ask of 2,500.00, so the bid-ask spread is 0.40 and the mid is 2,499.80. Crossing to the ask costs half the spread, 0.20 per unit, or 8.00 on 40 units. Walking to level five costs a further 1.38 per unit, 55.20 in total. A regular spot account on Binance paid 0.100% as a taker when we checked their public fee schedule on 2026-08-30, dropping to 0.07500% with the 25% BNB discount applied, so the fee on 100,055.20 is 100.06.
So: 8.00 of spread, 55.20 of slippage, 100.06 of fee. Total 163.26 against a mid-price notional of 99,992, about 0.163%. The fee was the largest of the three by a wide margin, and it was the one nobody in this scenario was complaining about.
On a liquid major pair at retail size, the fee usually dwarfs the slippage, because the fee is deducted quietly in the asset received rather than shown as a worse price. Both are real money. Only one of them is displayed as a price, and it is not the bigger one.
Worth being blunt about one of the three, because the word gets used as though somebody bills it. Slippage is not a charge. Nobody invoices it. It is the difference between the price you expected and the blended price your order actually paid as it consumed several levels, and the money goes to the traders whose resting orders you filled against rather than to the venue. The venue's cut is the separate taker fee. One of these two appears on a published fee schedule. The other never will, because there is nobody to put it there.
The proportions invert as size grows or liquidity thins. On the 100-unit order, slippage was 0.250% against a 0.100% fee. Which of the three dominates is a function of your size against that book, not a fixed fact about markets. Whether you paid the taker rate at all is a separate question, covered in the piece on maker and taker classification.
What is order book depth and why does it matter more than the price?
Depth is how much quantity is resting at and near the touch, and it determines how far your order has to travel to get filled, which is the whole of the slippage question.
Two venues can show an identical best ask and give completely different fills. The one with 6 units at the touch will hand a 40-unit order a much worse average than one with 200. The headline price is the same. The depth is not.
Some interfaces express this directly: how much of the quote asset it would take to move the price 1% or 2% in either direction. For anyone trading size that is a far better summary statistic than the spread.
Two caveats about what the displayed book is telling you.
- Some liquidity is deliberately hidden. Iceberg and reserve orders show a small visible quantity and refill from a larger hidden parent as they are consumed. Your fill can therefore be better than the visible book implied.
- Quoting is not a commitment. A market maker who sees a large aggressive order arrive can pull the rest of their quotes faster than you can react, so depth measured a second ago is not depth at the moment your order lands.
That last point is the one that makes precise slippage prediction impossible rather than merely hard. You can bound the cost using the visible book. You cannot guarantee it.
Why do odd hours and small pairs punish size?
Liquidity is provided by people and systems that are not equally attentive at all times or in all pairs, so the same order can cost several times more at 04:00 on a Sunday than it does mid-session on a Wednesday.
Crypto markets run continuously, which is often described as though it removed the concept of a trading session. It did not. Market makers still sleep, risk limits are tighter at some hours than others, and the periods when several regions are awake at once are visibly deeper than the periods when almost nobody is. Weekend books are thinner than weekday books in most pairs.
If your order is large relative to a normal book, it will be very large relative to a quiet one, and the difference is often bigger than any fee tier improvement you could realistically earn.
Small pairs are the same problem in another dimension. A token quoted against BTC on a venue where almost all the volume happens against USDT can have a book that is orders of magnitude thinner than the USDT book for the same token. Traders reach for the BTC pair because they already hold BTC, and then pay for the privilege in execution.
There is arithmetic worth doing before you route. Suppose the thin pair would cost an estimated 0.9% in slippage, and the alternative is two legs through a liquid quote asset, each costing a 0.100% fee and near-zero slippage. Two legs cost about 0.2% plus a little spread. One leg costs 0.9%. The two-leg route wins easily, even though it looks more expensive because you can count the fees. Counting only the visible cost is how people choose the dearer path.
Scheduled events compress the same effect into seconds. Around a known macro release, market makers widen their quotes or step away entirely, because they do not want to be the passive side of a trade against someone reacting faster than they can. The book thins, the spread widens, and an order sent in that window can fill several tenths of a percent away from where it would have filled a minute later.
How do I stop a market order from slipping?
Use a limit order wherever you can tolerate not being filled, and where you genuinely need immediacy, cap the damage with a marketable limit price, a smaller slice size, or the exchange's own slippage tolerance control.
In rough order of how much they help:
- Send a limit order instead. A limit order names the worst price you will accept, so slippage in the sense described here is structurally impossible. What you take on instead is the risk of not being filled, or being filled only partly, if the market moves away. For some purposes that is worse than paying the slippage. It is still the right default for anything that is not urgent.
- Use a marketable limit order. The underused middle option. Send a limit buy priced a little above the current ask, three or four levels up. It sweeps the book like a market order for everything available under your limit, then stops rather than walking into a hole. Most of the time it behaves identically to a market order, and the times it does not are exactly the times you wanted protection.
- Check the book before you send. Look at the cumulative size column at the depth you are about to consume. If your quantity is larger than what is resting in the first several levels, you know the answer before you press anything. Four seconds, and the highest-value habit in this list.
- Split the order. Break the quantity into slices and space them out, so the book refills between them and each slice starts from the touch again. This does not reduce your fee, which is proportional to value however you chop it up. It does reduce slippage, sometimes sharply. The cost is time in the market: over several minutes the price can drift against you by more than you saved. A good tool for size in a thin book, a waste of attention for a small order in a deep one.
- Stay out of the seconds around a scheduled release. If a macro number or a known protocol event has a published time, do not send a market order into the moments around it unless reacting to that event is the entire point of the trade. Waiting a minute costs nothing on any position held longer than a minute.
- Use the slippage tolerance control if the venue offers one. Some order tickets and most swap interfaces let you set a maximum acceptable deviation, after which the order is cancelled rather than filled. Set it to a number you would genuinely be unhappy to pay instead of leaving a wide default in place. A tolerance set too tight in a fast market means repeated failures to execute, which has its own cost if you are trying to get out of something.
One clarification on splitting, because it is the item most often misread. It does nothing at all for the fee. The fee is a percentage of each fill's value, so ten orders of a tenth the size pay the same total as one large order, subject to rounding. What splitting buys is slippage, because the book has time to refill between your slices. What it costs is time in the market: while you are spread over several minutes the price can move against you by more than the slippage you saved. Splitting is a tool for size, not a discount.
Compare your quantity against the cumulative depth of the first few levels. If the whole order fits inside the top level, none of this matters. If it does not, you have already learned that a limit price is worth setting, and it took one glance at a column you were looking at anyway.
The instant buy widget folds the cost into the rate
A quote-based widget gives you a single all-in price with the venue's markup already inside it, so there is no separate slippage line to display, which is not the same as there being no cost.
Simplified buy screens, convert tools and swap widgets all work the same way. You state an amount, the venue returns a firm price, a timer starts, and you accept within a few seconds or ask for a new quote. The price you accept is the price you get. No partial fills, no walking.
That is genuinely valuable for some users, and there is nothing dishonest about it. But the venue is taking the execution risk on your behalf and is not doing that for free. The compensation is a markup between the quoted rate and the mid price of the underlying book, and because it is embedded in the rate, there is no line item for you to read.
The order book route shows you the cost in pieces: a spread you can measure, slippage you can estimate from the depth, a fee stated as a percentage. The widget route shows one number, and that number is often larger than the sum of the pieces.
How much larger varies by venue, pair, size and the volatility of the moment. Anyone quoting a fixed figure for it is guessing. Finding out takes thirty seconds: note the widget's quoted rate, open the order book for the same pair, take the mid, and express the difference as a percentage. Do that at a few different sizes and you will know what that particular widget charges you.
This is also why the widget's fee line, where it has one, tends to read as though there is nothing to pay. Nothing is being concealed in a dishonest sense. There is simply no line item to read, because the cost sits inside the rate rather than beside it, and the quote is held for a few seconds so you can accept or refuse the whole thing as one number.
The comparison that matters is widget-versus-book at your size. For an amount small enough to fill inside the top level, the book is usually cheaper and the convenience is being paid for in full. For an awkward amount in a thin pair, a firm quote that cannot slip has real value. Work it out rather than assuming.
Certainty of execution is worth paying for
Sometimes certainty of execution is worth more to you than the last few basis points of price, which is a real situation and not a failure of discipline.
This piece could read as an argument against market orders. It is not. A market order is the correct instrument whenever being filled matters more than the price at which you are filled.
Getting out of a position that has moved against you is the clearest case. A limit order that does not fill leaves you holding the thing you decided to stop holding, and that can cost far more than any spread. The same applies to closing a leveraged position approaching a level you would rather not test.
Small orders in deep books are the other case, and they are the majority of retail activity. If the top level holds many multiples of your quantity, a market order and a marketable limit order do exactly the same thing.
The failure mode is not using market orders. It is using them without knowing your size against the book, then reading the fill as evidence that something was done to you. The order did what it said: it bought the quantity you asked for at whatever it took, and the book told you in advance what that would be.