This calculator helps you determine the appropriate spring rate for your mountain bike suspension based on your weight and riding style. Using the correct spring rate is crucial for optimal performance, comfort, and control on the trails. A spring that is too soft will bottom out easily, while a spring that is too stiff will feel harsh and prevent your suspension from working effectively.
Trail Bike
Enduro Bike
Downhill Bike
Conservative
Moderate
Aggressive
function calculateSpringRate() {
var riderWeight = parseFloat(document.getElementById("riderWeight").value);
var bikeType = document.getElementById("bikeType").value;
var ridingStyle = document.getElementById("ridingStyle").value;
var baseRate = 0;
var weightMultiplier = 0;
var styleMultiplier = 1;
// Basic weight to spring rate conversion factor (this is a simplification and varies by shock/fork)
// This is a very rough estimate and actual values depend on many factors including shock leverage ratio, personal preference, etc.
// For demonstration purposes, we'll use a simplified approach.
var baseKgPerMM = 0.3; // A very general starting point
if (isNaN(riderWeight) || riderWeight <= 0) {
document.getElementById("result").innerHTML = "Please enter a valid rider weight.";
return;
}
// Adjust base rate based on bike type (simplification)
if (bikeType === "trail") {
baseKgPerMM = 0.35;
} else if (bikeType === "enduro") {
baseKgPerMM = 0.4;
} else if (bikeType === "downhill") {
baseKgPerMM = 0.45;
}
// Adjust multiplier based on riding style
if (ridingStyle === "conservative") {
styleMultiplier = 0.95; // Slightly lighter spring for more plush feel
} else if (ridingStyle === "moderate") {
styleMultiplier = 1.0; // Standard
} else if (ridingStyle === "aggressive") {
styleMultiplier = 1.05; // Slightly heavier spring for more support
}
var calculatedSpringRate = (riderWeight * baseKgPerMM) * styleMultiplier;
// Common spring rate increments are often in 25 lbs/in or 50 lbs/in, or 2 Nm/mm or 4 Nm/mm.
// This simplified example will just provide the calculated value and a suggestion.
// For a real-world calculator, you would want to round to nearest available spring rate.
var resultHTML = "Based on your input:";
resultHTML += "Rider Weight: " + riderWeight + " kg";
resultHTML += "Bike Type: " + bikeType.charAt(0).toUpperCase() + bikeType.slice(1) + "";
resultHTML += "Riding Style: " + ridingStyle.charAt(0).toUpperCase() + ridingStyle.slice(1) + "";
resultHTML += "Recommended Spring Rate (approximate): " + calculatedSpringRate.toFixed(2) + " Nm/mm";
resultHTML += "Note: This is an estimated spring rate. Actual required spring rate can vary based on your specific suspension component, leverage ratio, and personal preference. Consult your suspension manufacturer's recommendations or a professional tuner for precise tuning.";
document.getElementById("result").innerHTML = resultHTML;
}
#tftuned-spring-rate-calculator {
font-family: sans-serif;
border: 1px solid #ddd;
padding: 20px;
border-radius: 8px;
max-width: 500px;
margin: 20px auto;
background-color: #f9f9f9;
}
#tftuned-spring-rate-calculator h2 {
text-align: center;
color: #333;
margin-bottom: 20px;
}
#tftuned-spring-rate-calculator p {
color: #555;
line-height: 1.6;
margin-bottom: 15px;
}
.calculator-inputs {
display: grid;
grid-template-columns: 1fr 2fr;
gap: 15px;
margin-bottom: 20px;
}
.calculator-inputs label {
font-weight: bold;
color: #444;
display: flex;
align-items: center;
}
.calculator-inputs input[type="number"],
.calculator-inputs select {
padding: 10px;
border: 1px solid #ccc;
border-radius: 4px;
width: 100%;
box-sizing: border-box;
}
.calculator-inputs button {
grid-column: 1 / -1;
padding: 12px 20px;
background-color: #007bff;
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
font-size: 16px;
transition: background-color 0.3s ease;
}
.calculator-inputs button:hover {
background-color: #0056b3;
}
.calculator-result {
margin-top: 20px;
padding: 15px;
border: 1px solid #e0e0e0;
background-color: #fff;
border-radius: 4px;
text-align: center;
}
.calculator-result p {
margin-bottom: 10px;
}
.calculator-result strong {
color: #333;
}