CS2 Trade-Up Calculator
Compute the exact output skins, probabilities, and predicted floats for any Counter-Strike 2 trade-up contract. Supports knife/glove 5-input contracts, multi-collection mixing, StatTrak, and reverse search.
All inputs must be StatTrak™; the output will also be StatTrak™.
Or load an example contract:
CS2 trade-up calculator. Output odds, predicted floats, and the math behind every contract.
What is a CS2 trade-up contract?
How the calculator computes each output
The CS2 trade-up float and probability formulas
- = Predicted float of the output skin for the contract.
- = Minimum and maximum float of the output skin, per its bundled CS2 data entry (sourced from ByMykel/CSGO-API).
- = Average normalised input float across all n inputs.
- = Raw float of input skin i, the value displayed in your CS2 inventory.
- = Minimum and maximum float of input skin i — these can be the canonical 0.00–1.00 or a per-skin cap (Asiimov 0.05–0.70, Redline 0.10–0.70, M4A1-S Fade 0.00–0.08, AUG Amber Fade 0.00–0.40, etc.).
- = Number of inputs: 10 for standard trade-ups, 5 for the knife/glove contract added in October 2025.
- = Inputs from a given collection divided by the total inputs (10 or 5). This is the collection's share of total output probability.
- = Number of next-tier skins (or knife/glove contains_rare entries for the case the collection feeds) in that collection's output pool.
Trade-up examples
Standard 10-input Mil-Spec, single collection, deterministic Restricted output
Multi-collection 7+3 split, weighted Restricted output
Knife/Glove 5-Covert from one case-feeder collection
Reverse mode — work backwards from a target skin
Trade-up tips
- Concentrate inputs in the smallest-output collection that contains your target. The probability formula is (n_coll / n_total) × (1 / outputs_in_collection), so a collection with one next-tier skin concentrates its entire input share into that one output. The Militia Collection (1 Restricted: M4A4 | Modern Hunter) and several Operation collections are popular for this reason — fewer next-tier outputs amplifies probability per skin even when input cost is the same as a wider collection.
- Open the float optimisation panel before committing inputs. For your primary target output, the panel solves backwards from a chosen exterior band (FN/MW/FT/WW/BS) and returns the maximum average normalised input float that still keeps the predicted output inside that band. If the ceiling is 0.082, every input has to push the average normalised float to 0.082 or lower — a strict cap that is invisible if you only watch the raw input floats.
- Use the reverse mode when you have a target skin in mind. Pick the skin, pick the exterior, choose between 'lowest float in target exterior' (deepest in the band, best quality output) and 'just inside the tier' (looser ceiling, cheaper inputs). The calculator returns the input collection that can deposit the target plus the maximum average normalised float that keeps the result inside the band — so you know upfront whether the inputs you can afford can actually deliver the exterior you want.
- Treat StatTrak gloves as impossible. StatTrak gloves do not exist in CS2, which means a StatTrak 5-Covert contract has a knife-only output pool. The calculator filters the contains_rare pool accordingly when you toggle StatTrak on the knife/glove tab — you can confirm this by seeing the output pool size shrink relative to the non-StatTrak case (DMarket and the Steam Community trade-up guide both confirm StatTrak Covert inputs from the Recoil, Revolution, Snakebite, Clutch, Glove, Hydra, Broken Fang and Dead Hand Terminal cases are blocked entirely because their only Specials are gloves).
- Avoid float-capped inputs at the top of their range. After the October 2024 normalised-float rewrite, a 0.30 AUG | Amber Fade input (capped 0.00–0.40) normalises to 0.75 — about 2.5× higher than the same raw float on a 0.00–1.00 skin. Wide-range inputs with floats deep inside Factory New normalise to small numbers and pull the average down; capped inputs at the upper end of their range pull the average up. The old filler-skin meta where players padded with tight-range inputs is dead under the new formula.
- Sum probabilities and confirm the total is 1.0 (100%). The calculator surfaces a check line under the output table — if it ever reports 0.98 or 1.02 instead of 1.00, you have either an input from a collection with no next-tier outputs (the contract is invalid in-game and the calculator flags it) or a rounding leak from a malformed dataset entry. The check is the cleanest sanity test that every column of the formula was applied correctly.
Frequently asked questions about CS2 trade-up contracts
Does this calculator support knife and glove trade-ups?
Yes. Switch to the Knife / Glove (5) tab; the input rarity locks to Covert and the slot count drops to five. The output pool is the contains_rare entries of the case that each input's covert collection feeds, mapped via the bundled case-by-collection table (snapshot 2026-05-15 from ByMykel/CSGO-API).
What changed in the October 2024 trade-up update?
The Retakes Update rewrote the float formula. Before October 2024, CS2 averaged raw input floats directly. After the update, every input is first normalised against its own [minFloat, maxFloat], then the normalised values are averaged, and the result is mapped back into the output skin's range. The change killed the filler-skin meta where players padded contracts with tightly capped low-float skins to drag the average down.
What did Valve change in October 2025?
The 23 October 2025 Re-Retakes Update added the 5-Covert knife/glove contract. Five Covert inputs produce one Special drawn uniformly from the feeder case's contains_rare pool. StatTrak Coverts produce a StatTrak knife only. The standard 10-input contract is unchanged.
Can I mix StatTrak and non-StatTrak inputs?
No. The CS2 contract menu blocks mixed contracts. Toggle StatTrak in the controls bar above the slots; the picker then filters to skins that have a StatTrak variant, and the output preserves StatTrak through the trade-up.
Why are Souvenir skins not in the picker?
Souvenir inputs are explicitly excluded by Valve's trade-up rules. The calculator filters them out at the picker, and a URL state that tries to hydrate a Souvenir input is rejected at validation with a clear error instead of computing a wrong result.
What is a normalised float?
It is the input's raw float mapped to a 0–1 scale against that skin's own min/max float range. Post-October-2024 CS2 averages normalised values across inputs, then maps the average back into the output's range. The Show-the-Math accordion under the results panel walks through every substitution with your actual numbers.
How does the calculator determine probabilities for multi-collection inputs?
Each output's probability is (inputs from that output's collection / total inputs) × (1 / number of next-tier outputs in that collection). The first factor is the collection's share of total probability; the second factor is how that share splits among the collection's eligible outputs. A 7+3 split between a 1-output collection and a 3-output collection produces 70%, 10%, 10%, 10% on the four rows — sum 100%.
Does the calculator price the inputs and outputs?
Not in this version. The focus is on float math and probability distribution against an audited dataset, not on live marketplace prices. Pricing overlays from Steam Market, Skinport, Buff163 and similar sources are planned for a later release once we have a stable price-feed contract.
Why does the predicted output float not match my in-game contract preview exactly?
Three reasons. First, ByMykel/CSGO-API is refreshed on a weekly cadence and can lag Valve by a few days on freshly released cases — the dataset footer at the bottom of the page shows the bundled snapshot date so you can verify how fresh the ranges are. Second, some skins have hidden float floors or pattern caps that the public dataset cannot model perfectly. Third, the calculator displays a clamped float when a candidate's predicted float exceeds its max; the in-game preview applies the same clamp but shows the underlying raw value in some menus.
Can I share a permalink to a specific contract?
Yes. Every input change updates a versioned querystring, and the Share button copies it to your clipboard. Recipients open the link and see the exact same contract pre-loaded — slots, StatTrak toggle, mode, and reverse settings.
Is this trade-up calculator free?
Yes. The calculator runs entirely in the browser, requires no account, never asks for your Steam login, and shows no marketplace upsells. The bundled dataset is open-source under MIT (ByMykel/CSGO-API), so you can verify every input range, collection mapping and case pool against the upstream JSON.
How accurate are the predicted output floats?
Accurate to four decimal places against the bundled dataset, and accurate to within roughly 0.001 against an in-game contract when the dataset is up to date. The four-step formula is deterministic — there is no randomness in the float prediction, only in which collection the output happens to come from. If your real contract result drifts by more than that, refresh the page to pick up any dataset update or report the deviation so we can patch the data.
CS2 trade-up glossary
Float
The wear value of a CS2 skin, a real number in [0, 1]. Lower floats sit in cleaner exteriors (Factory New, Minimal Wear) and generally command higher market prices.
Exterior
The display band of a float: FN (0.00–0.07), MW (0.07–0.15), FT (0.15–0.38), WW (0.38–0.45), BS (0.45–1.00). Upper bounds are exclusive except BS, which is inclusive to 1.00.
Normalised float
An input float mapped to 0–1 against its own min/max range: (float − min) / (max − min). CS2's post-October-2024 trade-up formula averages normalised inputs and maps the result back into the output skin's range.
Collection
A named group of CS2 skins released together (e.g. The Mirage 2021 Collection, The Cobblestone Collection). Trade-ups draw outputs from the contributing collections' next-tier pools, weighted by input share.
Float cap
A per-skin minimum or maximum that restricts the float range below the canonical 0–1. The AWP Asiimov caps at 0.18 minimum (no Factory New version exists), the AK-47 Redline caps at 0.10–0.70, the AK-47 Asiimov at 0.05–0.70. Float caps matter under the normalised formula because they change the relative position of a given raw float on the 0–1 axis.
Covert
The rarest standard rarity tier (red), one below Special. Covert is the input rarity locked when you switch the calculator to knife/glove mode.
Special
Knives and gloves. Not part of the standard rarity ladder. Reachable only via the 5-Covert knife/glove trade-up added by Valve in the Re-Retakes Update on 23 October 2025.
StatTrak
A weapon variant that tracks confirmed kills. Trade-up contracts cannot mix StatTrak and non-StatTrak inputs, and the StatTrak status of the output mirrors the inputs. StatTrak gloves do not exist in CS2 — the StatTrak 5-Covert contract is therefore knife-only.
contains_rare
The pool of Special items (knives and gloves) a CS2 case can drop as its yellow-tier (Special) reward. The 5-Covert knife/glove contract draws uniformly from this pool for the case that the input collection feeds.
Expected Value (EV)
The probability-weighted average market value of every possible output. Common metric in the wider CS2 trade-up community for ranking contract profitability. This calculator focuses on float and probability math; pricing-aware EV is planned for a later release.
Content verified by the Smart Calculators Team