Choosing the correct coilover spring rate is fundamental to setting up a drag car for optimal traction and weight transfer. Unlike road racing or autocross, where stiffness and minimal body roll are key, drag racing suspension focuses on energy storage, pitch rotation, and planting the rear tires effectively.
Why Static Compression Matters
This calculator uses the Static Compression (or "Sag") method to determine spring rates. In drag racing, having the correct amount of stored energy (compressed spring height at ride height) is crucial.
Front Suspension: Typically, racers aim for more stored energy in the front (often 30-40% of travel, or 3+ inches). This helps the front end rise (pitch) during launch, transferring weight to the rear tires.
Rear Suspension: The rear needs to support the weight transfer without bottoming out or being too stiff to absorb track imperfections. Rear sag settings depend heavily on the type of suspension (4-link vs. ladder bar vs. leaf spring) and tire type.
The Impact of Shock Angle
The angle at which your coilover is mounted significantly affects the effective spring rate. A shock mounted perfectly vertical (0 degrees) works at 100% efficiency (1:1 motion ratio, assuming mounting points align). As the angle increases, the spring loses mechanical advantage against the lever arm of the suspension.
Our calculator applies an angle correction factor. A 10-20 degree angle might seem minor, but it requires a stiffer spring to support the same weight compared to a vertical mounting position. This is calculated using the square of the cosine of the angle to determine the necessary increase in spring stiffness.
Defining Unsprung Weight
To get an accurate spring rate, you must subtract the unsprung weight from the total vehicle weight. The springs only support the chassis (sprung weight). Unsprung components include:
Wheels and Tires
Brake Rotors and Calipers
Rear Axle Housing (for solid axle cars)
Hubs and Knuckles
Approximately 50% of the suspension arms and shock weight
Failing to account for heavy rear axles or drag wheel setups can lead to selecting springs that are too stiff for the actual load they carry.
function calculateSpringRate() {
// Get Inputs
var totalWeight = parseFloat(document.getElementById('totalWeight').value);
var frontDist = parseFloat(document.getElementById('frontWeightDist').value);
var unsprungFront = parseFloat(document.getElementById('unsprungFront').value);
var angleFront = parseFloat(document.getElementById('angleFront').value);
var compFront = parseFloat(document.getElementById('compressionFront').value);
var unsprungRear = parseFloat(document.getElementById('unsprungRear').value);
var angleRear = parseFloat(document.getElementById('angleRear').value);
var compRear = parseFloat(document.getElementById('compressionRear').value);
// Validation
if (isNaN(totalWeight) || isNaN(frontDist) || isNaN(unsprungFront) || isNaN(compFront) ||
isNaN(unsprungRear) || isNaN(compRear)) {
alert("Please enter valid numbers in all required fields.");
return;
}
// Handle Angle Defaults if empty (assume 0)
if (isNaN(angleFront)) angleFront = 0;
if (isNaN(angleRear)) angleRear = 0;
// Weight Calculations
var frontAxleTotal = totalWeight * (frontDist / 100);
var rearAxleTotal = totalWeight – frontAxleTotal;
var frontCornerTotal = frontAxleTotal / 2;
var rearCornerTotal = rearAxleTotal / 2;
var frontSprungCorner = frontCornerTotal – unsprungFront;
var rearSprungCorner = rearCornerTotal – unsprungRear;
// Ensure sprung weight isn't negative
if (frontSprungCorner < 0) frontSprungCorner = 0;
if (rearSprungCorner < 0) rearSprungCorner = 0;
// Angle Correction (Motion Ratio approximation based on angle)
// Formula: Spring Rate = (Sprung Weight / Compression) / (cos(angle)^2)
// Convert degrees to radians
var radFront = angleFront * (Math.PI / 180);
var radRear = angleRear * (Math.PI / 180);
var cosFront = Math.cos(radFront);
var cosRear = Math.cos(radRear);
// Avoid division by zero
if (compFront === 0) compFront = 0.1;
if (compRear === 0) compRear = 0.1;
// Calculate Wheel Rate (lbs/in needed at the wheel)
var wheelRateFront = frontSprungCorner / compFront;
var wheelRateRear = rearSprungCorner / compRear;
// Calculate Spring Rate (lbs/in needed at the coilover)
// Adjusting for the geometric loss of efficiency due to angle
var springRateFront = wheelRateFront / (cosFront * cosFront);
var springRateRear = wheelRateRear / (cosRear * cosRear);
// Display Results
document.getElementById('results').style.display = 'block';
document.getElementById('resFrontSprung').textContent = Math.round(frontSprungCorner) + " lbs";
document.getElementById('resFrontRate').textContent = Math.round(springRateFront) + " lbs/in";
document.getElementById('resRearSprung').textContent = Math.round(rearSprungCorner) + " lbs";
document.getElementById('resRearRate').textContent = Math.round(springRateRear) + " lbs/in";
}