Calculate the ideal fork and shock spring rates for your weight and riding style.
Weight without gear
Helmet, boots, armor (approx 15-25 lbs)
DR-Z400 S (Dual Sport)
DR-Z400 E (Enduro)
DR-Z400 SM (Supermoto)
Stock Tank
Oversized (IMS/Safari/Clarke 3.9g+)
Casual Trail / Commuting
Aggressive Trail / Canyon Carving
Racing / Hard Enduro / Track
Recommended Suspension Setup
Total Rider Weight (w/ Gear):0 lbs
Recommended Fork Spring Rate:0.00 kg/mm
Recommended Shock Spring Rate:0.00 kg/mm
Static Sag Target (Rear):30mm – 40mm
Race Sag Target (Rear):95mm – 100mm
Optimizing Your Suzuki DR-Z400 Suspension
The Suzuki DR-Z400 (S, E, and SM models) is legendary for its reliability, but it is equally infamous for its undersprung stock suspension. For the average Western rider, the factory springs are often too soft, leading to excessive brake dive, wallowing in corners, and bottoming out on obstacles.
Why Spring Rate Matters
The spring rate determines how much force is required to compress the spring a specific distance (measured in kg/mm or N/mm). If your springs are too soft for your weight:
Geometry instability: The bike rides too low in the stroke (stinkbug or chopper stance).
Loss of travel: You use up 50% of your travel just sitting on the bike, leaving little for bumps.
Harshness: Ironically, soft springs can feel harsh because the suspension is operating in the stiffest part of the valving or hitting the bump stops.
Stock DR-Z400 Spring Rates
Before upgrading, it is helpful to know what you are starting with. These are the generally accepted stock rates for the DR-Z400:
Model
Fork Rate (kg/mm)
Shock Rate (kg/mm)
DR-Z400 S (Dual Sport)
0.44
5.5
DR-Z400 E (Enduro)
0.44
5.3 – 5.5
DR-Z400 SM (Supermoto)
~0.49 (Inverted Fork)
5.7
Note: The factory settings are generally designed for a rider weighing approximately 160-170 lbs (75kg) including gear.
How to Measure Sag
Once you have the correct springs installed, setting your sag is the final step to a balanced bike.
1. Static Sag (Free Sag)
This is how much the bike settles under its own weight without you on it.
Target: 30mm to 40mm.
If you have to dial in too much preload to get your race sag correct, your static sag will disappear (0-10mm), indicating your spring is too soft. If you have huge static sag (>45mm) with correct race sag, your spring is too stiff.
2. Race Sag (Rider Sag)
This is how much the bike settles with you on it, in full gear, standing in the attack position.
Target: 90mm to 105mm (approx 30-33% of travel).
Most DRZ riders aim for roughly 95mm-100mm for a balance of stability and turning ability.
Factors Affecting Spring Choice
Fuel Tanks: Installing a large IMS or Safari tank adds significant weight to the front of the bike when full. You generally need to increase the fork spring rate by 0.02-0.04 kg/mm to compensate for 4+ gallons of fuel.
Riding Style: An aggressive rider hitting jumps or whoops needs stiffer springs to prevent bottoming, while a slow trail rider might prefer slightly softer springs for plushness over roots and rocks.
function calculateSpringRate() {
// 1. Get Input Values
var riderWeight = parseFloat(document.getElementById('riderWeight').value);
var gearWeight = parseFloat(document.getElementById('gearWeight').value);
var bikeModel = document.getElementById('bikeModel').value;
var tankSize = document.getElementById('tankSize').value;
var ridingStyle = document.getElementById('ridingStyle').value;
// Validation
if (isNaN(riderWeight)) {
alert("Please enter a valid Rider Weight.");
return;
}
if (isNaN(gearWeight)) {
gearWeight = 20; // Default fallback
}
var totalWeight = riderWeight + gearWeight;
// 2. Define Baselines (based on ~170lbs total weight rider)
// S/E models use conventional forks, SM uses inverted.
var baseForkRate = 0.44;
var baseShockRate = 5.4;
var baseWeight = 170; // lbs
// Adjust baseline for SM model
if (bikeModel === 'SM') {
baseForkRate = 0.49; // SM forks are stiffer stock
baseShockRate = 5.7; // SM shock is slightly stiffer
}
// E model is similar to S usually for springs, sometimes slightly softer shock
if (bikeModel === 'E') {
baseForkRate = 0.44;
baseShockRate = 5.4;
}
// 3. Calculate Weight Delta
var weightDelta = totalWeight – baseWeight;
// 4. Calculate Rates
// General rule of thumb for DRZ:
// Fork: approx 0.0015 to 0.002 kg/mm per lb
// Shock: approx 0.012 to 0.015 kg/mm per lb
var forkMultiplier = 0.0016;
var shockMultiplier = 0.013;
// Adjust multipliers for aggression
if (ridingStyle === 'sport') {
forkMultiplier = 0.0018;
shockMultiplier = 0.014;
} else if (ridingStyle === 'race') {
forkMultiplier = 0.0020;
shockMultiplier = 0.015;
}
var recommendedFork = baseForkRate + (weightDelta * forkMultiplier);
var recommendedShock = baseShockRate + (weightDelta * shockMultiplier);
// 5. Apply Modifiers
// Tank Modifier (Front weight bias)
if (tankSize === 'large') {
recommendedFork += 0.025; // Significant weight on front
}
// Rounding logic to nearest common spring rates
// Forks usually come in .02 increments (0.44, 0.46, 0.48, 0.50…)
// Shocks usually come in .2 or .3 increments (5.4, 5.7, 6.0…)
// Let's just round to 2 decimals for the calculator, user can buy closest
var finalFork = Math.round(recommendedFork * 100) / 100;
var finalShock = Math.round(recommendedShock * 10) / 10;
// Sag recommendations based on model
var sagText = "95mm – 100mm"; // Standard S/E
if (bikeModel === 'SM') {
sagText = "75mm – 85mm (Stiffer Street Setup)";
}
// 6. Display Results
document.getElementById('displayTotalWeight').innerText = totalWeight + " lbs";
document.getElementById('resFork').innerText = finalFork + " kg/mm";
document.getElementById('resShock').innerText = finalShock + " kg/mm";
document.getElementById('resSag').innerText = sagText;
// Stock Comparison Logic
var stockFork = (bikeModel === 'SM') ? "0.49" : "0.44";
var stockShock = (bikeModel === 'SM') ? "5.7" : "5.5";
var note = "Comparison: Your recommended rates vs Stock (" + stockFork + " / " + stockShock + "). ";
if (finalFork > parseFloat(stockFork) + 0.02) {
note += "You significantly exceed the stock fork limits. Upgrade highly recommended.";
} else if (finalFork < parseFloat(stockFork) – 0.02) {
note += "You are lighter than the target stock rider.";
} else {
note += "You are close to the stock spring range.";
}
document.getElementById('stockComparison').innerHTML = note;
document.getElementById('resultsArea').style.display = 'block';
}