#cs2-tradeup-tool h2, #cs2-tradeup-tool h3 { color: #f39c12; margin-top: 0; }
.input-group { margin-bottom: 15px; }
.input-group label { display: block; margin-bottom: 5px; font-weight: 600; font-size: 14px; color: #bdc3c7; }
.input-group input { width: 100%; padding: 12px; border: 1px solid #2c3e50; background: #2c3e50; color: #fff; border-radius: 4px; box-sizing: border-box; font-size: 16px; }
.input-group input:focus { border-color: #f39c12; outline: none; }
.calc-btn { width: 100%; background-color: #f39c12; color: #fff; border: none; padding: 15px; font-size: 18px; font-weight: bold; border-radius: 4px; cursor: pointer; transition: background 0.3s; margin-top: 10px; text-transform: uppercase; }
.calc-btn:hover { background-color: #e67e22; }
.result-box { margin-top: 25px; padding: 20px; background: #252930; border-left: 5px solid #f39c12; border-radius: 4px; display: none; }
.result-item { margin-bottom: 10px; font-size: 16px; display: flex; justify-content: space-between; border-bottom: 1px solid #3a3f4b; padding-bottom: 5px; }
.result-val { font-weight: bold; color: #f39c12; }
.profit-pos { color: #2ecc71 !important; }
.profit-neg { color: #e74c3c !important; }
.wear-tag { padding: 2px 6px; border-radius: 3px; font-size: 12px; margin-left: 10px; background: #34495e; color: #fff; }
.cs2-info-content { margin-top: 40px; color: #bdc3c7; line-height: 1.6; }
.cs2-info-content h2 { border-bottom: 1px solid #3a3f4b; padding-bottom: 10px; }
.example-card { background: #252930; padding: 15px; border-radius: 4px; margin: 15px 0; border: 1px dashed #f39c12; }
Calculate predicted skin wear (float) and profitability for your next trade-up.
How the CS2 Tradeup Calculator Works
In Counter-Strike 2, a Trade Up Contract allows players to exchange 10 weapon skins of the same rarity for one weapon skin of the next highest rarity. The wear value (Float) of the resulting skin is not random; it is determined by a specific mathematical formula based on the skins you put in.
The CS2 Trade Up Float Formula
The formula used by the game engine to determine the outcome float is:
Outcome Float = (Average Float of 10 Skins × (Target Skin Max Float – Target Skin Min Float)) + Target Skin Min Float
Skin Wear Ranges
- Factory New (FN): 0.00 – 0.07
- Minimal Wear (MW): 0.07 – 0.15
- Field-Tested (FT): 0.15 – 0.38
- Well-Worn (WW): 0.38 – 0.45
- Battle-Scarred (BS): 0.45 – 1.00
Realistic Example:
Suppose you are trading up for a skin that has a float range of 0.06 to 0.80. If your 10 input skins have an average float of 0.012, your calculation would be:
(0.012 * (0.80 - 0.06)) + 0.06 = 0.06888
Since 0.06888 is less than 0.07, you would successfully receive a Factory New version of that skin!
Important Factors to Consider
1. Collections: Ensure the skins you use belong to collections that actually have a higher-tier outcome. If a collection has no "Classified" skins, you cannot trade up "Restricted" skins from that collection.
2. Odds: If you mix skins from different collections, your outcome is determined by the number of potential outcomes from each collection. This calculator assumes you are calculating for one specific target outcome.
3. Float Caps: Some skins are "capped." For example, the AK-47 | Asiimov is capped at 0.05 Min Float, meaning you can never get a 0.01 float version regardless of your inputs.
function calculateCS2Tradeup() {
var avgFloat = parseFloat(document.getElementById('avgFloat').value);
var minFloat = parseFloat(document.getElementById('minFloat').value);
var maxFloat = parseFloat(document.getElementById('maxFloat').value);
var totalCost = parseFloat(document.getElementById('totalCost').value);
var targetValue = parseFloat(document.getElementById('targetValue').value);
if (isNaN(avgFloat) || isNaN(minFloat) || isNaN(maxFloat)) {
alert("Please enter valid float values.");
return;
}
// Calculation Logic
var outcomeFloat = (avgFloat * (maxFloat – minFloat)) + minFloat;
var profit = targetValue – totalCost;
var roi = (totalCost > 0) ? ((profit / totalCost) * 100) : 0;
// Determine Wear Label
var wearLabel = "";
if (outcomeFloat < 0.07) {
wearLabel = "Factory New";
} else if (outcomeFloat < 0.15) {
wearLabel = "Minimal Wear";
} else if (outcomeFloat < 0.38) {
wearLabel = "Field-Tested";
} else if (outcomeFloat = 0) {
profitEl.className = "result-val profit-pos";
} else {
profitEl.className = "result-val profit-neg";
}
var roiEl = document.getElementById('resROI');
roiEl.innerText = roi.toFixed(2) + "%";
if (roi >= 0) {
roiEl.className = "result-val profit-pos";
} else {
roiEl.className = "result-val profit-neg";
}
}