Determine the ideal suspension spring stiffness based on natural frequency.
Total weight including helmet, boots, and gear.
Curb weight with fuel.
Approx. 25-35lbs for rear, 15-25lbs for front.
Enter 50-55 for Rear Shock, 45-50 for Forks.
1.0 for most Forks. 2.0 – 3.0 for Rear Shocks (check manual).
1.1 Hz – Comfort / Cruiser
1.3 Hz – Sport Touring
1.5 Hz – Aggressive Street / Track Day
1.8 Hz – Pure Racing
2.0 Hz – Pro Slick Tire Racing
Stiffness target based on riding style.
Recommended Spring Rate
Metric Rate (Standard):0.0 kg/mm
Newton Rate:0 N/mm
Imperial Rate:0 lbs/in
Total Sprung Mass (Corner):0 lbs
Mastering Motorcycle Suspension: Understanding Spring Rates
Choosing the correct spring rate is the single most critical step in setting up a motorcycle's suspension. No amount of damping adjustment (clicker settings) can compensate for a spring that is incorrect for your weight. The calculator above uses the Natural Frequency method, which is the engineering standard for determining suspension stiffness independent of the specific bike model.
What is Spring Rate?
Spring rate refers to the amount of force required to compress a spring by a specific distance. It is typically measured in:
kg/mm (Kilograms per millimeter) – The global industry standard.
N/mm (Newtons per millimeter) – Often used in European technical manuals (e.g., Ohlins, WP).
lbs/in (Pounds per inch) – Common in American markets and cruiser applications.
For example, a 9.5 kg/mm spring requires 9.5 kilograms of force to compress it by 1 millimeter. To compress it 100mm, it would require 950kg of force (ignoring preload).
Input Guide: How to Get Accurate Numbers
Tip: Always measure your "Rider Weight" while wearing full riding gear. A helmet, leather suit, boots, and gloves can easily add 15-25 lbs (7-11 kg) to your base body weight.
1. Weight Distribution
This determines how much of the total weight rests on the front versus the rear wheel.
Rear Shock: Typically supports 50% to 55% of the total load on street bikes.
Front Forks: Typically support 45% to 50% of the load under static conditions.
2. Linkage / Motion Ratio
This is the mechanical advantage of the suspension system.
Forks: Almost always have a 1:1 ratio (1.0). The wheel moves 1mm for every 1mm the spring compresses.
Rear Shocks: Most modern sportbikes and dirt bikes use a linkage system. A ratio of 2:1 (2.0) means the wheel moves 2mm for every 1mm the shock compresses. Because the shock moves less than the wheel, the spring must be significantly stiffer to support the load.
Selecting Your Target Frequency
Suspension engineers use "Natural Frequency" (measured in Hz) to describe how fast the suspension oscillates. This normalizes stiffness across different vehicles.
1.0 – 1.2 Hz (Comfort): Best for cruisers and touring bikes where plushness over bumps is the priority.
1.3 – 1.5 Hz (Sport): The gold standard for modern sportbikes and aggressive street riding. It offers a balance of stability and compliance.
1.6 – 1.9 Hz (Track/Race): Required for high-speed braking and cornering loads. At this stiffness, the bike reacts very quickly to inputs but will feel harsh on rough public roads.
Static Sag vs. Spring Rate
Once you install the recommended spring, you must set your Sag.
Free Sag: How much the bike settles under its own weight.
Rider Sag: How much the bike settles with you on it.
If you cannot achieve the correct Rider Sag (usually 30-35mm for sportbikes) without topping out or loose Free Sag, your spring rate is incorrect. This calculator helps you bypass the guesswork and start with the correct rate mathematically.
function calculateSpringRate() {
// 1. Get Inputs
var riderLbs = parseFloat(document.getElementById('riderWeight').value);
var bikeLbs = parseFloat(document.getElementById('bikeWeight').value);
var unsprungLbs = parseFloat(document.getElementById('unsprungWeight').value);
var biasPercent = parseFloat(document.getElementById('weightBias').value);
var ratio = parseFloat(document.getElementById('linkageRatio').value);
var freqHz = parseFloat(document.getElementById('targetFreq').value);
// 2. Validation
if (isNaN(riderLbs) || isNaN(bikeLbs) || isNaN(unsprungLbs) || isNaN(biasPercent) || isNaN(ratio) || isNaN(freqHz)) {
alert("Please fill in all fields with valid numbers.");
return;
}
if (ratio <= 0) {
alert("Linkage Ratio must be greater than 0.");
return;
}
// 3. Logic & Physics Calculation
// Convert everything to Metric (SI Units) for calculation
// 1 lb = 0.453592 kg
var riderKg = riderLbs * 0.453592;
var bikeKg = bikeLbs * 0.453592;
var unsprungKg = unsprungLbs * 0.453592;
// Calculate Total Mass
var totalMassKg = riderKg + bikeKg;
// Calculate Mass on the specific corner (Front or Rear)
var cornerMassTotalKg = totalMassKg * (biasPercent / 100);
// Calculate Sprung Mass (The mass the spring actually supports)
// Sprung Mass = Total Corner Mass – Unsprung Mass
var sprungMassKg = cornerMassTotalKg – unsprungKg;
if (sprungMassKg <= 0) {
alert("Calculated Sprung Mass is negative. Please check your weight distribution and unsprung weight inputs.");
return;
}
// Formula for Spring Rate based on Natural Frequency
// K_wheel (N/m) = SprungMass (kg) * (2 * pi * Frequency)^2
var twoPiFreq = 2 * Math.PI * freqHz;
var wheelRateNm = sprungMassKg * Math.pow(twoPiFreq, 2); // Result in Newtons per meter
// Convert Wheel Rate to Spring Rate using Motion Ratio
// Spring Rate = Wheel Rate * (Motion Ratio)^2
// If ratio is 2 (wheel moves 2 for spring 1), spring must be 4x stiffer than wheel rate
var springRateNm = wheelRateNm * Math.pow(ratio, 2);
// 4. Unit Conversion
// Convert N/m to N/mm (divide by 1000)
var rateNmm = springRateNm / 1000;
// Convert N/mm to kg/mm (divide by gravity 9.80665)
var rateKgmm = rateNmm / 9.80665;
// Convert kg/mm to lbs/in
// 1 kg/mm = 55.997 lbs/in
var rateLbsIn = rateKgmm * 55.997;
// 5. Display Results
document.getElementById('results').style.display = 'block';
document.getElementById('resKg').innerHTML = rateKgmm.toFixed(2) + " kg/mm";
document.getElementById('resN').innerHTML = rateNmm.toFixed(1) + " N/mm";
document.getElementById('resLbs').innerHTML = Math.round(rateLbsIn) + " lbs/in";
// Convert sprung mass back to lbs for display context
var sprungMassLbs = sprungMassKg * 2.20462;
document.getElementById('resMass').innerHTML = Math.round(sprungMassLbs) + " lbs";
}