What is float capping in CS2?
Float capping is the practice of picking trade-up inputs by their floats so that the output lands where you want it on the wear scale. Usually that means under a wear boundary: below 0.07 for Factory New, below 0.15 for Minimal Wear, and so on. Sometimes it means the opposite, chasing a very high float on a skin where Battle-Scarred looks good.
The name comes from the fact that every skin has a float cap, a fixed minimum and maximum it can never go beyond. Those caps shape what a trade-up can produce. Understand the caps and the formula and you can predict the output wear before you spend anything. Ignore them and you will eventually turn ten clean inputs into a Field-Tested output and wonder what happened.
This guide assumes you know the contract rules from how trade-up contracts work and what float is from float values explained. Here we go deep on the float side only.
What are a skin's min and max float?
Every skin was given a float range by Valve when it was designed. Many use the full 0.00 to 1.00. Many do not.
| Range type | Example range | What it means |
|---|---|---|
| Full range | 0.00 to 1.00 | Every wear tier exists, and extremes are rare |
| Clean-only | 0.00 to 0.08 | Only Factory New and the bottom of Minimal Wear exist |
| No Factory New | 0.10 to 0.70 | Starts above 0.07, so the best wear is Minimal Wear or worse |
| No Battle-Scarred | 0.00 to 0.40 | Never gets truly wrecked |
| Narrow middle | 0.15 to 0.38 | Every copy is Field-Tested |
The float cap calculator lists the real range for any skin. The float checker shows it alongside a specific item's float when you paste an inspect link.
Two things follow from ranges. First, wear names mean different things on different skins. A Factory New on a 0.00 to 1.00 skin sits anywhere from 0.00 to 0.07. A Factory New on a 0.06 to 0.80 skin is always between 0.06 and 0.07, and every copy looks about the same. Second, and this is the whole point of the guide, ranges control what a trade-up can produce.
How is a trade-up output float calculated?
The output does not simply take the average of your input floats. It takes the average of where each input sits within its own range, then places that average within the output's range. Three steps:
- Normalise each input. For each input: (float minus that skin's min) ÷ (that skin's max minus that skin's min). This gives a number from 0 to 1 that says how worn the input is relative to its own possibilities. A 0.05 on a 0.00 to 1.00 skin is 0.05. A 0.05 on a 0.00 to 0.10 skin is 0.50.
- Average the normalised values. Add the ten (or five) numbers and divide by the count.
- Map onto the output. Output float = output min + average × (output max minus output min).
Step 1 is the one people skip. If all your inputs are from skins with a full 0.00 to 1.00 range, the normalised value equals the float and you can just average the floats. As soon as an input comes from a capped skin, the raw float is misleading. A 0.06 input from a skin capped at 0.06 to 0.80 is the cleanest possible copy of that skin, and it normalises to 0.00, not 0.06.
Step 3 explains the "my output is worse than my inputs" surprise. If the average is 0.05 and the output's range is 0.10 to 0.70, the output float is 0.10 + 0.05 × 0.60 = 0.13. Minimal Wear, from Factory New inputs.
How do you pick inputs to hit a target wear?
Work backwards from the output.
- Pick the outcome you care about most. Usually the most valuable one. Look up its range with the float cap calculator.
- Decide the target float. To land Factory New, you need an output float under 0.07. Give yourself a margin, say 0.065, because you cannot always find perfect inputs.
- Convert the target to a required average. Required average = (target minus output min) ÷ (output max minus output min). If the output runs 0.00 to 0.50 and you want 0.065, you need an average of 0.13.
- Check every other outcome with that average. The same average maps onto every outcome's range. Some will be Factory New, some may not. The trade-up calculator shows the predicted wear for each.
- Buy inputs whose normalised floats average at or below the requirement. They do not all need to be equal. Two very clean inputs can carry one dirtier one. But the dirtier one has to be normalised against its own range, not judged by its raw float.
- Verify each input with the float checker before you buy, and again before you put it in the contract.
Cleaner inputs cost more. The extra you pay for low floats is only worth it if the output's price jumps across a boundary. That trade is the subject of the EV section below.
Why can some skins never be Factory New?
Because their minimum float is 0.07 or higher. The mapping formula puts the output at output min + something, and something is never negative. If the minimum is 0.10, the best possible output is 0.10, which is Minimal Wear.
This is the most common expensive mistake in trade-ups. Someone sees a Factory New price for the outcome, builds a contract with pristine inputs, and receives a Minimal Wear. The Factory New price was for a copy that cannot exist. Whoever listed it was wrong or the listing was for a different skin.
The same logic applies at every boundary:
- If the minimum is above 0.15, Minimal Wear is impossible and Field-Tested is the best.
- If the maximum is below 0.45, Battle-Scarred is impossible.
- If the maximum is below 0.38, Well-Worn is impossible too.
Check the range before you build. Every time.
What does a worked float capping example look like?
All numbers are invented to show the method. They are not real skins.
Goal. A Classified output, Skin X, worth a lot in Factory New and much less in Minimal Wear. Skin X's range is 0.00 to 0.60. Factory New needs an output float under 0.07, so the required average is 0.07 ÷ 0.60 = 0.1167. Target a little lower: 0.11.
Inputs. Ten Restricted skins from the right collections. Their floats and ranges:
| Input | Float | Skin's range | Normalised |
|---|---|---|---|
| 1 to 6 | 0.06 each | 0.00 to 1.00 | 0.06 each |
| 7 | 0.20 | 0.00 to 1.00 | 0.20 |
| 8 | 0.09 | 0.06 to 0.80 | 0.0405 |
| 9 | 0.25 | 0.00 to 1.00 | 0.25 |
| 10 | 0.07 | 0.00 to 1.00 | 0.07 |
Average. (6 × 0.06 + 0.20 + 0.0405 + 0.25 + 0.07) ÷ 10 = 0.0921.
Output float for Skin X. 0.00 + 0.0921 × 0.60 = 0.0553. Factory New. Good.
But check the other outcome. Suppose the same collections also contain Skin Y with a range of 0.08 to 0.50. Output float = 0.08 + 0.0921 × 0.42 = 0.1187. Minimal Wear, and it could never have been Factory New. If your EV assumed a Factory New Skin Y, the contract is worse than you thought.
Notice input 8. Its raw float of 0.09 looks worse than the 0.07 of input 10, but its skin is capped at 0.06, so it is actually a cleaner copy and normalises lower. Notice input 9 too. A 0.25 dragged the average up by more than any other single input. Replacing it with a 0.06 would drop the average to 0.0731 and give room to spare.
How does float capping change trade-up EV?
Float capping changes which price you use for each outcome, which changes the expected value. The full EV method is in how to calculate trade-up EV. The float-specific parts:
- Price outcomes at the wear the formula predicts. Not the wear you hope for. If the calculator says Minimal Wear, use the Minimal Wear price.
- Count the cost of cleaner inputs. A set of inputs at 0.06 costs more than a set at 0.20. That extra cost has to be beaten by the price gap between the output wears.
- Compare across all outcomes. Capping for the best outcome sometimes does nothing for the others. If the best outcome is 35% likely, you pay the input premium 100% of the time and benefit 35% of the time.
- Very low floats have their own market. Pushing the output well under 0.07 can land it in a range collectors pay extra for. That is a bonus on top of the tier price, and it only applies to skins people collect.
A contract that is negative EV at average floats can turn positive with capped inputs, and the reverse is also true when the input premium is too high. The trade-up calculator recalculates as you change inputs, so test both versions.
What mistakes do people make with float caps?
- Averaging raw floats when inputs have different ranges. Normalise first. A raw 0.09 can be cleaner than a raw 0.07.
- Not checking the output's minimum. If it is 0.07 or higher, stop chasing Factory New.
- Checking only the best outcome. Every outcome has its own range and its own predicted wear.
- Leaving no margin. An output float of 0.0699 is Factory New. An output of 0.0701 is not. Aim a little under the boundary, not at it.
- Trusting listed floats. Verify every input with the float checker. Listings are wrong often enough to matter.
- Forgetting Souvenir and StatTrak inputs follow the same maths. Since the 22 May 2026 update allowed Souvenir inputs, their floats count exactly like any other input.
- Ignoring knife finish ranges. Since the 22 October 2025 update, five Coverts can produce a knife or gloves. Knife finishes have widely different ranges. The same five inputs can give a Factory New on one finish and a Field-Tested on another, and you do not choose the finish.
Float capping is arithmetic, not luck. The luck is in which outcome you get. The wear of that outcome is something you can calculate to three decimal places before you press the button, and you should.
