Choosing the correct fork spring rate is the single most critical step in setting up a dirt bike's suspension. The springs hold the bike up in the stroke and absorb the energy of impacts. If your springs are too soft, the bike will dive excessively under braking and bottom out on jumps. If they are too stiff, the bike will deflect off rocks, feel harsh, and won't settle into turns.
Pro Tip: Always weigh yourself with full riding gear. A helmet, boots, chest protector, and hydration pack can easily add 15 to 25 lbs (7-11 kg) to your base body weight, significantly altering the required spring rate.
How Spring Rate is Measured
Spring rates are typically measured in kg/mm (kilograms per millimeter) or N/mm (Newtons per millimeter).
kg/mm: Indicates how many kilograms of force are required to compress the spring 1 millimeter. A 0.44 kg/mm spring requires 0.44kg of force to compress 1mm.
Conversion: To convert kg/mm to N/mm, multiply by approximately 9.8.
Factors Affecting Your Calculation
Our calculator considers several variables to provide a recommended rate:
Bike Size (CC): A 450cc bike is naturally heavier than a 125cc bike, requiring a stiffer baseline spring regardless of rider weight.
Discipline:
Supercross: Requires the stiffest springs to handle massive jumps and whoops.
Motocross: A balance of stiffness for jumps and compliance for braking bumps.
Enduro/Woods: Softer springs are preferred to absorb roots, rocks, and provide traction in technical terrain.
Desert: Slightly stiffer than Enduro to handle high-speed G-outs.
Sag: The Critical Measurement
Once you install your springs, you must check your "Sag" to verify the rate is correct.
Race Sag: The amount the suspension compresses with the rider on the bike (typically 100mm-105mm).
Static (Free) Sag: The amount the suspension compresses under the bike's own weight without a rider.
If you set your Race Sag to 100mm, but your Static Sag is less than 30mm, your spring is likely too soft (because you had to add too much preload to hold your weight up). If Static Sag is more than 45mm, your spring is likely too stiff.
function calculateSpringRate() {
// Get input values
var weightInput = document.getElementById('riderWeight').value;
var bikeSize = document.getElementById('bikeSize').value;
var discipline = document.getElementById('ridingDiscipline').value;
var fuelTank = document.getElementById('fuelTank').value;
// Validate inputs
if (!weightInput || weightInput <= 0) {
alert("Please enter a valid rider weight.");
return;
}
if (bikeSize == "0") {
alert("Please select a bike size.");
return;
}
var weight = parseFloat(weightInput);
var baseRate = 0;
// Logic: Establish Baseline Spring Rate for a ~165lb (75kg) rider based on bike size
// Rates are in kg/mm
if (bikeSize === "50") {
baseRate = 0.28; // Mini bikes
// Mini bike adjustment: 0.01 per 15lbs variance from 70lbs
var diff = weight – 70;
baseRate += (diff / 15) * 0.01;
}
else if (bikeSize === "85") {
baseRate = 0.36; // 85cc/150r
// 85cc adjustment: 0.01 per 15lbs variance from 110lbs
var diff = weight – 110;
baseRate += (diff / 15) * 0.015;
}
else if (bikeSize === "125") {
baseRate = 0.42; // 125 2t / 250 4t
// Big bike adjustment: 0.02 per 20lbs variance from 165lbs
var diff = weight – 165;
baseRate += (diff / 20) * 0.02;
}
else if (bikeSize === "250") {
baseRate = 0.44; // 250 2t / 450 4t
// Big bike adjustment
var diff = weight – 175;
baseRate += (diff / 20) * 0.02;
}
else if (bikeSize === "500") {
baseRate = 0.48; // Heavy Adventure/Big Bore
var diff = weight – 185;
baseRate += (diff / 20) * 0.02;
}
// Discipline Adjustments
// Modifying the rate based on intended usage
var disciplineMod = 0;
var sagTarget = "100-105 mm";
var staticTarget = "30-40 mm";
switch(discipline) {
case 'supercross':
disciplineMod = 0.04; // Much stiffer
sagTarget = "95-100 mm";
break;
case 'motocross':
disciplineMod = 0.00; // Standard
break;
case 'desert':
disciplineMod = 0.01; // Slightly stiffer for high speed
sagTarget = "100-108 mm";
break;
case 'enduro':
disciplineMod = -0.02; // Softer for plushness
sagTarget = "105-115 mm";
staticTarget = "35-45 mm";
break;
case 'trail':
disciplineMod = -0.03; // Softest for comfort
sagTarget = "110-120 mm";
break;
}
// Fuel Tank Adjustment
// Oversize tanks add weight to the front, requiring slightly stiffer fork springs
var fuelMod = 0;
if (fuelTank === 'oversize') {
fuelMod = 0.01;
}
// Calculate Final Rate
var finalRate = baseRate + disciplineMod + fuelMod;
// Round to nearest even common spring rate step (usually sold in 0.02 increments, e.g., 0.42, 0.44, 0.46)
// We will round to 2 decimal places first
finalRate = Math.round(finalRate * 100) / 100;
// Convert to Newtons (1 kg/mm ≈ 9.80665 N/mm)
var newtonRate = (finalRate * 9.80665).toFixed(1);
// Display Results
document.getElementById('resultsArea').style.display = 'block';
document.getElementById('springRateResult').innerText = finalRate.toFixed(2) + " kg/mm";
document.getElementById('newtonResult').innerText = newtonRate + " N/mm";
document.getElementById('sagResult').innerText = sagTarget;
document.getElementById('staticSagResult').innerText = staticTarget;
}