Mx Suspension Spring Rate Calculator

.mx-calc-container { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; max-width: 800px; margin: 20px auto; padding: 30px; background: #f9f9f9; border: 1px solid #e0e0e0; border-radius: 8px; color: #333; } .mx-calc-header { text-align: center; margin-bottom: 30px; } .mx-calc-header h2 { color: #d32f2f; margin: 0; font-size: 28px; } .mx-form-group { margin-bottom: 20px; } .mx-form-group label { display: block; font-weight: 600; margin-bottom: 8px; color: #444; } .mx-input-row { display: flex; gap: 15px; flex-wrap: wrap; } .mx-input-half { flex: 1; min-width: 200px; } .mx-form-control { width: 100%; padding: 12px; border: 1px solid #ccc; border-radius: 4px; font-size: 16px; box-sizing: border-box; } .mx-form-control:focus { border-color: #d32f2f; outline: none; } .mx-btn { width: 100%; padding: 15px; background-color: #d32f2f; color: white; border: none; border-radius: 4px; font-size: 18px; font-weight: bold; cursor: pointer; transition: background 0.3s; margin-top: 10px; } .mx-btn:hover { background-color: #b71c1c; } #mx-results { margin-top: 30px; background: #fff; padding: 25px; border-left: 5px solid #d32f2f; border-radius: 4px; display: none; box-shadow: 0 2px 10px rgba(0,0,0,0.05); } .mx-result-row { display: flex; justify-content: space-between; padding: 12px 0; border-bottom: 1px solid #eee; } .mx-result-row:last-child { border-bottom: none; } .mx-result-label { font-weight: 600; color: #555; } .mx-result-value { font-weight: 700; color: #d32f2f; font-size: 18px; } .mx-info-text { font-size: 13px; color: #666; margin-top: 10px; font-style: italic; } .mx-article { margin-top: 50px; line-height: 1.6; } .mx-article h3 { color: #222; margin-top: 25px; } .mx-article p { margin-bottom: 15px; } .mx-article ul { margin-bottom: 20px; padding-left: 20px; }

MX Suspension Spring Rate Calculator

Calculate the ideal fork and shock spring stiffness for your weight and riding style.

lbs kg
Important: Weigh yourself wearing full riding gear (helmet, boots, braces). This usually adds 15-20 lbs (7-9 kg).
450cc 4-Stroke 350cc 4-Stroke 250cc 4-Stroke 250cc 2-Stroke 125cc/150cc 2-Stroke 85cc
Motocross (Standard) Supercross (Stiffer) Enduro/Woods (Softer) Desert/GP (Mixed)
Beginner / Novice Amateur / Intermediate Expert / Pro Vet Rider (30+)

Recommended Suspension Setup

Fork Spring Rate:
Shock Spring Rate:
Recommended Race Sag:
Recommended Static Sag:

Note: Results show rates in kg/mm (common for Showa/KYB) and N/mm (common for WP/KTM). Always verify with your owner's manual or local suspension tuner.

Why Correct Spring Rate is Critical

The spring rate of your motocross bike determines how the suspension supports the combined weight of the bike and rider. If your springs are too soft, the bike will sit too low in the stroke (choppered out), causing poor turning and frequent bottoming out on jumps. If the springs are too stiff, the suspension won't compress enough over small bumps, resulting in a harsh ride, headshake, and lack of traction.

How to Interpret the Results

This calculator estimates the ideal spring rate based on physics and general manufacturer data. Here is what the numbers mean:

  • kg/mm (Kilograms per Millimeter): The standard unit for Japanese suspension components (Showa, KYB). A 0.50 kg/mm spring requires 0.5kg of force to compress it 1mm.
  • N/mm (Newtons per Millimeter): The standard unit for European bikes (KTM, Husqvarna, GasGas using WP suspension). To convert kg/mm to N/mm, multiply by roughly 9.8.
  • Race Sag: The amount the suspension compresses with the rider on the bike in full gear. This is the most critical tuning variable.
  • Static (Free) Sag: How much the bike sags under its own weight without a rider. This confirms if your spring rate is correct for your weight.

The Golden Rule of Sag

For full-size bikes (125cc and up), the industry standard for Race Sag is typically 100mm to 105mm. Once you set your race sag, you must check your Static Sag:

  • Static Sag between 30mm – 40mm: Correct Spring Rate.
  • Static Sag less than 30mm: Spring is too soft (you had to add too much preload to get race sag).
  • Static Sag more than 40mm: Spring is too stiff (you barely have any preload on the spring).

Riding Styles & Adjustments

Your discipline changes your needs. Supercross requires much stiffer springs to handle steep jump faces and massive landings. Enduro/Woods riders prefer softer springs to absorb rocks, roots, and maintain traction at lower speeds. This calculator automatically adjusts the recommended rate based on the discipline you select.

function calculateSpringRate() { // 1. Get Input Values var weightInput = document.getElementById('mx_weight').value; var unit = document.getElementById('mx_unit').value; var bikeSize = document.getElementById('mx_bike_size').value; var discipline = document.getElementById('mx_discipline').value; var skill = document.getElementById('mx_skill').value; var resultDiv = document.getElementById('mx-results'); // 2. Validation if (!weightInput || isNaN(weightInput) || weightInput <= 0) { alert("Please enter a valid rider weight."); return; } // 3. Convert Weight to KG for calculation logic var weightKg = parseFloat(weightInput); if (unit === 'lbs') { weightKg = weightKg * 0.453592; } // 4. Define Base Settings (Standard 75kg/165lb Rider) // Rates are in kg/mm var baseFork = 0.46; var baseShock = 5.4; var targetSag = "105mm"; var targetStatic = "30-40mm"; // Adjust base by bike size if (bikeSize === '450') { baseFork = 0.49; baseShock = 5.6; } else if (bikeSize === '350') { baseFork = 0.48; baseShock = 5.5; } else if (bikeSize === '250f') { baseFork = 0.47; baseShock = 5.4; } else if (bikeSize === '250t') { baseFork = 0.45; baseShock = 5.2; } else if (bikeSize === '125') { baseFork = 0.43; baseShock = 4.8; } else if (bikeSize === '85') { baseFork = 0.36; baseShock = 4.0; targetSag = "85-95mm"; // 85cc bikes have less travel targetStatic = "20-30mm"; } // 5. Calculate Weight Delta // Standard rider assumed 75kg (approx 165lbs) var standardWeight = 75; if (bikeSize === '85') standardWeight = 45; // Lower standard for minicycles var weightDiff = weightKg – standardWeight; // 6. Calculate Spring Rate Adjustment // Rule of thumb: // Fork: ~0.002 kg/mm change per 1kg of rider weight // Shock: ~0.035 kg/mm change per 1kg of rider weight var forkAdj = weightDiff * 0.0022; var shockAdj = weightDiff * 0.035; // 7. Apply Modifiers based on Discipline var disciplineModFork = 1.0; var disciplineModShock = 1.0; if (discipline === 'sx') { disciplineModFork = 1.08; // Significantly stiffer disciplineModShock = 1.08; } else if (discipline === 'enduro') { disciplineModFork = 0.94; // Softer disciplineModShock = 0.94; } else if (discipline === 'desert') { disciplineModFork = 1.02; // Slightly stiffer for high speed disciplineModShock = 1.02; } // 8. Apply Modifiers based on Skill var skillMod = 1.0; if (skill === 'expert') skillMod = 1.03; // Pros hit bumps harder if (skill === 'beginner') skillMod = 0.97; // Beginners assume slower speeds if (skill === 'vet') skillMod = 1.0; // Vets usually like comfort (std) or stiff for safety, keep neutral // 9. Final Calculation var finalFork = (baseFork + forkAdj) * disciplineModFork * skillMod; var finalShock = (baseShock + shockAdj) * disciplineModShock * skillMod; // Rounding to nearest useful step (usually 0.02 for forks, 0.2 for shocks) // Fork steps: 0.42, 0.44, 0.46… finalFork = Math.round(finalFork * 50) / 50; // Shock steps: 5.0, 5.2, 5.4… finalShock = Math.round(finalShock * 5) / 5; // Convert to Newtons for display (N/mm) var finalForkN = (finalFork * 9.807).toFixed(1); var finalShockN = (finalShock * 9.807).toFixed(1); // 10. Display Results var forkDisplay = finalFork.toFixed(2) + " kg/mm (" + finalForkN + " N/mm)"; var shockDisplay = finalShock.toFixed(1) + " kg/mm (" + finalShockN + " N/mm)"; document.getElementById('res_fork').innerHTML = forkDisplay; document.getElementById('res_shock').innerHTML = shockDisplay; document.getElementById('res_sag').innerHTML = targetSag; document.getElementById('res_static').innerHTML = targetStatic; // Show results container resultDiv.style.display = "block"; // Scroll to results resultDiv.scrollIntoView({behavior: "smooth"}); }

Leave a Comment