Calculate your ideal fork or shock spring stiffness
lbs
kg
Front Forks (Single Spring)
Rear Shock
Trail / Enduro (Plush)
Motocross / Intermediate
Supercross / Hard Charging
Sport / Track Day (Street)
Cruising / Touring
250cc Dirt Bike / Light Sport
450cc Dirt Bike / Medium Sport
600cc-1000cc Street Bike
Heavy Adventure / Cruiser
Kilograms per Millimeter (kg/mm)
Understanding Race Tech Spring Rates
Achieving the perfect suspension setup begins with the correct spring rate. Unlike valving, which controls the speed of movement (damping), springs support the combined mass of the bike and rider. If your springs are too soft, the bike will ride low in the stroke, feeling harsh as it hits the firmer part of the damping curve. If they are too stiff, the suspension won't move enough to absorb small bumps, leading to a loss of traction.
Why Weight Matters
Spring rates are calculated based on "Ready-to-Ride" weight. This includes your helmet, boots, chest protector, and hydration packs. Typically, a 10lb (4.5kg) change in rider weight requires a corresponding change in spring rate to maintain proper chassis geometry and "Sag" measurements.
Calculating the "Ideal" Rate
This calculator utilizes Race Tech-inspired logic for modern high-performance motorcycles. The formula factors in:
Baseline Mass: Most modern 450cc bikes are sprung for a 175-180 lb rider.
The Leverage Ratio: Rear shocks use a linkage system, meaning the spring rate (e.g., 5.4 kg/mm) is much higher than the forks (e.g., 0.46 kg/mm) because of the mechanical advantage the swingarm has over the shock.
Discipline Variance: A Supercross rider requires a much stiffer initial platform to handle massive jump landings compared to an Enduro rider who needs the wheel to track over loose rocks and roots.
Pro Tip: After installing new springs, always check your Static Sag and Rider Sag. If you have to crank your preload adjuster all the way down to get the right Rider Sag, your springs are still too soft.
Example Calculation
For a 210 lb rider on a 450cc Motocross bike:
Recommended Fork Rate: ~0.49 kg/mm (Up from stock 0.46)
Recommended Shock Rate: ~5.8 kg/mm (Up from stock 5.4)
function calculateSpringRate() {
var rawWeight = document.getElementById('riderWeight').value;
var weight = parseFloat(rawWeight);
var unit = document.getElementById('weightUnit').value;
var component = document.getElementById('componentType').value;
var styleMultiplier = parseFloat(document.getElementById('ridingStyle').value);
var bikeCategory = document.getElementById('bikeType').value;
if (isNaN(weight) || weight <= 0) {
alert("Please enter a valid weight.");
return;
}
// Standardize weight to LBS for calculation logic
var weightInLbs = (unit === 'kg') ? weight * 2.20462 : weight;
var calculatedRate = 0;
var baseWeight = 175; // Industry standard baseline
if (component === 'fork') {
// Fork logic: Base is roughly 0.44-0.46 kg/mm for a 450cc at 175lbs
var forkBase = 0.44;
// Adjust base based on bike category
if (bikeCategory === '250') forkBase = 0.42;
if (bikeCategory === '600') forkBase = 0.85; // Street bikes use much higher fork rates
if (bikeCategory === '1200') forkBase = 1.05;
// Rate change per 10 lbs is approx 0.01 for dirt, 0.02 for street
var rateIncrement = (bikeCategory === '600' || bikeCategory === '1200') ? 0.02 : 0.012;
var weightDiff = (weightInLbs – baseWeight) / 10;
calculatedRate = (forkBase + (weightDiff * rateIncrement)) * styleMultiplier;
} else {
// Shock logic: Base is roughly 5.2-5.4 kg/mm for a 450cc at 175lbs
var shockBase = 5.2;
if (bikeCategory === '250') shockBase = 5.0;
if (bikeCategory === '600') shockBase = 9.0; // Street bike shocks are stiff
if (bikeCategory === '1200') shockBase = 12.5;
// Rate change per 10 lbs is approx 0.12 for dirt, 0.25 for street
var rateIncrement = (bikeCategory === '600' || bikeCategory === '1200') ? 0.25 : 0.14;
var weightDiff = (weightInLbs – baseWeight) / 10;
calculatedRate = (shockBase + (weightDiff * rateIncrement)) * styleMultiplier;
}
// Display Result
var resultDiv = document.getElementById('resultArea');
var valueDiv = document.getElementById('springRateValue');
valueDiv.innerHTML = calculatedRate.toFixed(2) + " kg/mm";
resultDiv.style.display = "block";
// Smooth scroll to result
resultDiv.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
}