CS2 Trade-Up Guide
CS2 Float Values Explained: Wear Tiers, Trade-Up Math, and Why 0.07 Matters
A CS2 float value is a number between 0.00 and 1.00 that controls how worn a skin looks and what wear tier (Factory New through Battle-Scarred) it falls into. Float values are assigned at skin generation and never change. In trade-up contracts, the average normalized position of your inputs within their individual float ranges deterministically sets the output float — which is why restricted input ranges must be handled correctly.
What are CS2 float values?
Every CS2 skin in existence has a float value — a 32-bit floating point number between 0.00 (perfect) and 1.00 (destroyed). Float is set when the skin is generated (from a case, a contract output, or a drop) and is permanent. You cannot change a skin's float; you can only inspect it and sell it.
Float values are uniformly distributed within a skin's wear range. If an AK-47 Redline has a min-float of 0.10 and a max-float of 0.70, any value in that range is equally likely on a freshly generated Redline.
How does float map to wear tier?
The wear-tier mapping is fixed across all CS2 skins:
| Wear Tier | Float Range | Common Abbrev. |
|---|---|---|
| Factory New | 0.00 – 0.07 | FN |
| Minimal Wear | 0.07 – 0.15 | MW |
| Field-Tested | 0.15 – 0.38 | FT |
| Well-Worn | 0.38 – 0.45 | WW |
| Battle-Scarred | 0.45 – 1.00 | BS |
Two skins with floats of 0.0699 and 0.0701 are visually almost identical — but the first is Factory New and the second is Minimal Wear, and FN typically sells for 1.5–3× the MW price. These boundary points are where price cliffs live.
How is float calculated for a CS2 trade-up output?
The Valve formula is:
normalized_i = (raw_float_i − input_min_i) / (input_max_i − input_min_i)
avg_normalized = sum(normalized_i) / number_of_inputs
output_float = output_min + avg_normalized × (output_max − output_min)
Where:
normalized_i= one input's 0–1 position within that input skin's own allowed range.avg_normalized= the arithmetic mean of those normalized input positions.output_min/output_max= the chosen output skin's wear range (varies per skin).
Normalization is explicit and happens before averaging. Never insert the raw arithmetic mean into the output formula unless every input happens to use the full 0.00–1.00 range. Inputs with different min/max ranges must each be normalized separately.
Worked example: why a restricted input range changes the result
Suppose all 10 inputs are the same skin, its allowed range is 0.00–0.08, and their raw floats average 0.04. Because they share a range, their average normalized position is:
avg_normalized = (0.04 − 0.00) / (0.08 − 0.00)
= 0.50
Now suppose one eligible output has a range of 0.10–0.70:
output_float = 0.10 + 0.50 × (0.70 − 0.10)
= 0.10 + 0.30
= 0.40
The result is 0.40, not the 0.124 that a raw-average calculation would produce. A raw 0.04 looks low globally, but it is halfway through a 0.00–0.08 input skin's usable range. This is why every input's own min/max range matters.
How do I check the float of a CS2 skin before buying?
Three main options:
- CSFloat browser extension: Adds inline float values to every Steam Market listing.
- CSFloat / Skinport listings: Display float values natively.
- CS2 in-game inspect: Right-click a skin, choose Inspect, and read the wear value.
For trade-up input shopping, the browser extension is by far the fastest. A profitable contract usually requires inputs at a specific float (e.g. "below 0.10") and you cannot tell from the Steam listing thumbnail alone.
The four float boundary numbers every CS2 trader should memorize
- 0.07 — Factory New / Minimal Wear boundary. The biggest single-skin price cliff in CS2.
- 0.15 — Minimal Wear / Field-Tested boundary. Critical for trade-up output skins because most outputs roll into FT.
- 0.38 — Field-Tested / Well-Worn boundary. WW listings are often 2–4× cheaper than FT.
- 0.45 — Well-Worn / Battle-Scarred boundary. Matters most for high-tier knives and gloves.
If your trade-up output float lands within 0.01 of one of these boundaries, you are sitting on a float-edge contract — see our post on CS2 trade-up edge cases.
Frequently Asked Questions
What does a 0.00 float mean in CS2?
Can a CS2 skin's float change over time?
Why are CS2 float values not always 0–1 for every skin?
How accurate is the CS2 trade-up output float formula?
Does StatTrak affect a CS2 skin's float?
Stop calculating contracts by hand
TradeUpTarget ranks opportunities found within each timestamped, bounded CS2 scan, with normalized float math, post-fee modeled EV, and execution state kept separate.
Open the Scanner →