When upgrading wheels or changing tire profiles, it is critical to understand how the new dimensions affect your vehicle's mechanics. Tire sizing uses a combination of metric (width in mm) and imperial (wheel diameter in inches) units.
The Tire Size Formula
To calculate the total diameter of a tire, you must account for the wheel and both the top and bottom sidewalls. The formula is:
Total Diameter = (Width × Aspect Ratio % × 2) + Wheel Diameter
How Speedometer Error Works
Your vehicle's speedometer is calibrated based on the number of revolutions your tires make per mile. If you install a larger tire, the circumference increases, meaning the tire covers more ground per revolution. Consequently, your speedometer will read slower than your actual speed. Conversely, a smaller tire will make your speedometer read faster than your actual speed.
Safety and Fitment Considerations
The 3% Rule: Most experts recommend keeping the total diameter change within +/- 3% of the original factory size to avoid transmission issues or brake system interference.
Clearance: Wider tires may rub against the fender or suspension components during sharp turns.
Load Rating: Ensure your new tires have a load index equal to or higher than the original equipment.
Calculation Example
Comparing a 215/65R15 to a 225/45R17:
215/65R15 Diameter: 26.00 inches
225/45R17 Diameter: 24.97 inches
Difference: -3.96% (Diameter decrease)
Speedo Error: When your speedometer reads 60 mph, you are actually traveling 57.6 mph.
function calculateTireDiff() {
// Current Values
var cW = parseFloat(document.getElementById('currWidth').value);
var cR = parseFloat(document.getElementById('currRatio').value);
var cD = parseFloat(document.getElementById('currWheel').value);
// New Values
var nW = parseFloat(document.getElementById('newWidth').value);
var nR = parseFloat(document.getElementById('newRatio').value);
var nD = parseFloat(document.getElementById('newWheel').value);
if (isNaN(cW) || isNaN(cR) || isNaN(cD) || isNaN(nW) || isNaN(nR) || isNaN(nD)) {
alert("Please enter valid numbers for all fields.");
return;
}
// Calculations (mm to inches: / 25.4)
var cSidewallMM = cW * (cR / 100);
var cSidewallIN = cSidewallMM / 25.4;
var cTotalDiam = (cSidewallIN * 2) + cD;
var cCircum = cTotalDiam * Math.PI;
var cRevs = 63360 / cCircum; // Inches in a mile
var nSidewallMM = nW * (nR / 100);
var nSidewallIN = nSidewallMM / 25.4;
var nTotalDiam = (nSidewallIN * 2) + nD;
var nCircum = nTotalDiam * Math.PI;
var nRevs = 63360 / nCircum;
var diamDiff = ((nTotalDiam – cTotalDiam) / cTotalDiam) * 100;
var speedAt60 = 60 * (nTotalDiam / cTotalDiam);
// Build Table
var html = ";
html += createRow('Sidewall Height', cSidewallIN.toFixed(2) + '"', nSidewallIN.toFixed(2) + '"', (nSidewallIN – cSidewallIN).toFixed(2) + '"');
html += createRow('Total Diameter', cTotalDiam.toFixed(2) + '"', nTotalDiam.toFixed(2) + '"', (nTotalDiam – cTotalDiam).toFixed(2) + '"');
html += createRow('Circumference', cCircum.toFixed(2) + '"', nCircum.toFixed(2) + '"', (nCircum – cCircum).toFixed(2) + '"');
html += createRow('Revs per Mile', cRevs.toFixed(0), nRevs.toFixed(0), (nRevs – cRevs).toFixed(0));
document.getElementById('resultBody').innerHTML = html;
// Speedo Notice
var notice = document.getElementById('speedoNotice');
var color = Math.abs(diamDiff) > 3 ? '#ffebee' : '#e8f5e9';
var textColor = Math.abs(diamDiff) > 3 ? '#c62828' : '#2e7d32';
var border = Math.abs(diamDiff) > 3 ? '1px solid #ef9a9a' : '1px solid #a5d6a7';
notice.style.backgroundColor = color;
notice.style.color = textColor;
notice.style.border = border;
var warningText = Math.abs(diamDiff) > 3 ? " Warning: Difference is greater than 3%." : " Fitment looks safe within 3% variance.";
notice.innerHTML = "Diameter Difference: " + diamDiff.toFixed(2) + "%Speedometer Reading 60mph: Actual Speed will be " + speedAt60.toFixed(1) + " mph." + warningText;
document.getElementById('tireResults').style.display = 'block';
}
function createRow(label, curr, newVal, diff) {
return '