Tech Tip: This recommendation aims to achieve approximately 100-105mm of race sag while maintaining 30-40mm of static sag. If you install this spring and your static sag is less than 30mm, the spring is likely too soft (too much preload required). If static sag is over 45mm, the spring is too stiff.
Understanding Dirt Bike Spring Rates
Selecting the correct rear shock spring rate is the single most critical adjustment for handling and safety on a dirt bike. The spring holds the bike and rider up in the stroke, allowing the valving to do its work. If your spring is wrong, no amount of clicker adjustment will fix the bike's handling.
Why Weight Matters
Stock dirt bikes (especially Japanese and Austrian 250/450 models) are typically sprung for a "target rider" weighing between 165 lbs (75 kg) and 180 lbs (81 kg). If you are lighter or heavier than this range, the bike will either ride too high (harsh, poor turning) or too low (wallowing, bottoming out) in the stroke.
Static Sag vs. Race Sag
This calculator determines the spring rate required to achieve the correct balance between Race Sag and Static Sag.
Race Sag (Rider Sag): The amount the bike compresses with the rider in full gear on board. The standard target is usually 100mm to 105mm for full-size bikes.
Static Sag (Free Sag): The amount the bike compresses under its own weight without a rider. The target is typically 30mm to 40mm.
If you set your Race Sag to 105mm, but your Static Sag drops to 10mm, your spring is too soft (you have added too much preload to hold your weight up). Conversely, if your Static Sag is 50mm, your spring is too stiff.
Calculating the Rate
Our calculator uses a baseline spring rate associated with your selected bike class (e.g., a 450F usually requires a stiffer spring than a 125 2-stroke) and applies a physics-based adjustment factor based on your total weight (body + gear). We also account for riding discipline; Enduro riders generally prefer a slightly softer spring for traction over roots and rocks, while Supercross or Sand riders need stiffer rates to prevent bottoming on G-outs.
Units of Measurement
Suspension springs are sold in three primary units depending on the manufacturer:
kg/mm: Common for Showa and KYB shocks (Honda, Kawasaki, Suzuki, Yamaha).
N/mm: Common for WP shocks (KTM, Husqvarna, GasGas). (Roughly 1 kg/mm = 9.8 N/mm).
lbs/in: Occasionally used in older American aftermarket applications.
function updatePlaceholders() {
var unit = document.getElementById('weightUnit').value;
var weightInput = document.getElementById('riderWeight');
var gearInput = document.getElementById('gearWeight');
if(unit === 'kg') {
weightInput.placeholder = "e.g. 80";
if(gearInput.value == "20") gearInput.value = "9"; // default conversion
} else {
weightInput.placeholder = "e.g. 175";
if(gearInput.value == "9") gearInput.value = "20"; // default conversion
}
}
function calculateSpringRate() {
// 1. Get Inputs
var unit = document.getElementById('weightUnit').value;
var baseRate = parseFloat(document.getElementById('bikeClass').value);
var riderWeight = parseFloat(document.getElementById('riderWeight').value);
var gearWeight = parseFloat(document.getElementById('gearWeight').value);
var styleModifier = parseFloat(document.getElementById('ridingStyle').value);
// 2. Validation
if (isNaN(riderWeight) || isNaN(gearWeight)) {
alert("Please enter valid numbers for rider weight and gear weight.");
return;
}
// 3. Logic Configuration
// Standard rider reference weight is usually around 175 lbs (79 kg) for full size bikes
var standardWeightLbs = 175;
// Convert input to Lbs for internal calculation logic
var totalWeightLbs;
var displayTotalWeight; // string with unit
if (unit === 'kg') {
totalWeightLbs = (riderWeight + gearWeight) * 2.20462;
displayTotalWeight = (riderWeight + gearWeight).toFixed(1) + " kg";
} else {
totalWeightLbs = riderWeight + gearWeight;
displayTotalWeight = totalWeightLbs.toFixed(1) + " lbs";
}
// 4. Calculate Rate Change
// General rule of thumb: ~0.2 kg/mm change for every 15-20 lbs variance from standard
// We use 18lbs as the divisor for the 'step'
var weightDifference = totalWeightLbs – standardWeightLbs;
var springSteps = weightDifference / 18;
var rateAdjustment = springSteps * 0.2;
// 5. Final Calculation
// Result = Base Rate (Bike specific) + Weight Adjustment + Style Adjustment
var calculatedKg = baseRate + rateAdjustment + styleModifier;
// Rounding to nearest usually available spring rates (usually 0.2 steps, e.g. 5.2, 5.4)
// But we will provide exact first, then display standard steps
// Hard limit to prevent negative or unrealistic numbers
if (calculatedKg 7.5) calculatedKg = 7.5;
// 6. Conversions
// N/mm = kg/mm * 9.80665
var calculatedN = calculatedKg * 9.80665;
// lbs/in = kg/mm * 55.997
var calculatedLbsIn = calculatedKg * 55.997;
// 7. Output to DOM
document.getElementById('resKg').innerHTML = calculatedKg.toFixed(2) + " kg/mm";
document.getElementById('resN').innerHTML = calculatedN.toFixed(1) + " N/mm";
document.getElementById('resLbs').innerHTML = Math.round(calculatedLbsIn) + " lbs/in";
document.getElementById('resTotalWeight').innerText = displayTotalWeight;
// Show results container
document.getElementById('results').style.display = "block";
}