CSDelta Logo
CSDelta
← Back to Blogs
Trade-ups

CS2 Trade-Up Float Explained: Weighted Float vs Normal Average (2026)

July 30, 2026

cs2 weighted floatcs2 trade up floatweighted float vs average floatcs2 trade-up calculatorcs2 float formulahow cs2 trade-ups workcs2 outcome floatspectrogram trade-up float

Disclaimer: Skin prices in CS2 move constantly. The float formulas in this guide do not change, but expected value does. Always recheck live prices in a trade-up calculator before you buy inputs or submit a contract.

Why trade-up float confuses people

If you have built CS2 trade-up contracts for a while, you have probably seen two float numbers on a calculator and wondered which one matters. One is usually called average float. The other is weighted float. They look related, they often sit close together, and they are still not the same thing.

A lot of older guides simplify the rule into "average your ten floats, then map that average onto the outcome." That explanation is easy to remember, and it is close enough when every input can roll anywhere from 0.00 to 1.00. The problem is that plenty of CS2 skins are capped. An M249 | Spectrogram only goes from 0.00 to 0.50. An SCAR-20 | Wild Berry tops out at 0.65. Once those float caps enter the contract, a plain average of the listing floats stops telling the full story.

This guide walks through how CS2 actually treats float in a trade-up: how weighted float is built from each input's own range, how that single contract average gets mapped into every possible outcome, and why one craft can print several different outcome floats even though you never changed the inputs. We will use Graphic Design Collection numbers throughout, then finish with a live Spectrogram trade-up you can open in the Trade-Up Calculator. For finished recipes in the same collection family, see our Graphic Design Collection trade-ups and Gallery Collection trade-ups.

Wear labels are shared. Float ranges are not.

Factory New, Minimal Wear, Field-Tested, Well-Worn, and Battle-Scarred are shared exterior labels. Those bands are the same across the game:

  • Factory New: under 0.07
  • Minimal Wear: 0.07 to 0.15
  • Field-Tested: 0.15 to 0.38
  • Well-Worn: 0.38 to 0.45
  • Battle-Scarred: 0.45 and above

What is not shared is each skin's own min and max float. Two Field-Tested skins at 0.15 can sit in completely different places inside their own ranges. On Graphic Design, for example:

  • M249 | Spectrogram: 0.00 to 0.50
  • SCAR-20 | Wild Berry: 0.00 to 0.65
  • SG 553 | Berry Gel Coat: 0.00 to 0.80
  • MP7 | Astrolabe: 0.00 to 1.00

A Spectrogram at 0.15 is already 30% of the way through its possible float. An Astrolabe at 0.15 is only 15% of the way through. Same wear label. Different position. That difference is exactly why weighted float exists.

What people usually call average float

Average float (sometimes called normal average float) is the simple mean. Add the floats on your ten inputs (or five for a knife or glove craft) and divide by the number of skins. If you put ten Spectrogram Field-Tested skins into a contract and every listing sits at 0.15, the average float is 0.15.

That number is still useful when you are scanning marketplaces by exterior or comparing two nearly identical fills. It is also the number older trade-up explainers usually talk about. It just is not the complete rule once float caps differ across the contract.

What CS2 actually uses: weighted float

For each input, CS2 asks a more specific question: how far through this skin's own float range am I? The per-skin score is:

(float - min) / (max - min)

Those scores sit on a 0 to 1 scale. Average them across the contract and you get weighted float, the single average the game carries into outcome placement.

Take the same ten Spectrograms at 0.15. Spectrogram's range is 0.00 to 0.50, so each input becomes:

(0.15 - 0.00) / (0.50 - 0.00) = 0.30

Ten copies of that score leave the contract with a weighted float of 0.30. The normal average was still 0.15. Same listings, different meaning: 0.15 is already deep into a 0.00 to 0.50 range, so CS2 treats the contract as higher-float than a plain average suggests.

Swap those inputs for MP7 | Astrolabe skins with a full 0.00 to 1.00 range and the math collapses back together:

(0.15 - 0.00) / (1.00 - 0.00) = 0.15

In that special case, normal average and weighted float match. On Graphic Design and many other collections, capped skins are common, so the two numbers routinely diverge.

How input floats push the contract

Lower input floats pull weighted float down. Higher input floats push it up. The size of that push depends on the float cap, not just the raw listing number. A 0.01 move on a 0.00 to 0.50 skin is a bigger share of its range than a 0.01 move on a 0.00 to 1.00 skin.

That is why mixing fillers with different caps can quietly change outcome wear even when the raw average barely moves. If you only watch the normal average, you can miss that one capped filler is doing more work than the rest of the contract.

How outcome floats are decided

The contract produces one weighted float. Call it W. Each possible outcome still has its own min and max, and CS2 maps W into that range:

outcome float = outcome min + W × (outcome max - outcome min)

Same W. Different ranges. Different floats.

Keep the Spectrogram example at weighted float 0.30. The Graphic Design Industrial into Mil-Spec pool is exactly these four outcomes:

OutcomeFloat rangeOutcome float at W = 0.30
AK-47 | Crossfade0.00 to 0.500.15
XM1014 | Halftone Shift0.00 to 0.600.18
SCAR-20 | Wild Berry0.00 to 0.650.195
SG 553 | Berry Gel Coat0.00 to 0.800.24

You still only roll one outcome. Probability decides which skin you get. The float on that skin is already locked by the formula above. That is how one trade-up can print several different floats without changing a single input.

Why this matters for profit

Outcome wear changes price. If weighted float climbs, more outcomes can slip into a worse exterior. If it drops, more outcomes can land cleaner. Expected value moves with that, which is why float targeting is not just about looks. It is part of whether a craft stays green after fees.

On CSDelta, the optimal float range is the average-float window where live expected value looks best under current prices. The calculator still places every outcome with weighted float, so when you nudge floats on a card you are watching wear and EV move together. That is also why using the wrong min/max for an input is dangerous: if a tool pretends Spectrogram can go to 1.00 when it actually stops at 0.50, both the weighted float and the outcome wears will be wrong.

Live example: M249 | Spectrogram

Below is a float demo, not a profitable pick. It is a live Graphic Design Industrial into Mil-Spec card built around M249 | Spectrogram (Field-Tested) so you can see weighted float and outcome floats update together. Spectrogram's float range is 0.00 to 0.50, so weighted float will not match a plain average of the listing floats. Open the card, check the floats on each outcome, then use Open in Calculator if you want to move the inputs and watch the numbers update.

Cost, expected value, and profit stay live on the card and can look red or green as prices move. This article does not freeze dollar prices in the prose, because those change faster than the formula. For green Graphic Design crafts, use the Graphic Design Collection trade-ups post instead.

Before you buy a matching fill, run through a short checklist: confirm each input's float range rather than trusting the wear label alone, read the weighted float instead of only the raw average, look at every outcome float range in the pool, make sure the exteriors you care about are actually reachable, and recheck expected value after fees in the Trade-Up Calculator or Trade-Up Database.

FAQ

What is normal average float?

It is the simple mean of the floats you put into the contract. Add the input floats and divide by ten (or five for knife and glove crafts). People still use it when comparing listings, but it does not fully describe how CS2 places outcomes when skins have different float caps.

What is weighted float?

Weighted float scales each input into its own min-to-max range, then averages those 0 to 1 scores. That contract average is what CS2 carries into the outcome float formula.

Why can outcomes from the same trade-up have different floats?

Because one weighted float gets mapped into each outcome's own float range. A wider or taller outcome range produces a higher raw float for the same average, even though the inputs never changed.

When do weighted float and normal average match?

They match when every input has a full 0.00 to 1.00 float range. If any input is capped, like Spectrogram at 0.00 to 0.50, the two numbers diverge. Sharing the same non-0–1 range across every input is not enough; that still makes weighted float differ from the raw average.

Does CSDelta use weighted float?

Yes. Outcome floats and optimal float ranges follow the weighted float rule CS2 uses. If you want more practical examples after this math primer, start with the profitable CS2 trade-up guide, 7 common trade-up mistakes, Graphic Design Collection trade-ups, and Gallery Collection trade-ups.

Keep checking live prices

The float formulas stay the same. Listing prices and the best float band do not. Re-open the live card before you buy, set your sell fee, and tweak the craft in the Trade-Up Calculator.

CS2 Weighted Float vs Normal Average Explained | CSDelta