Planning a driveway, patio, or shed foundation requires precise calculations to ensure you order enough concrete without overspending. Concrete is typically measured in cubic yards (for truck deliveries) or cubic feet (for bagged mix). This calculator helps you determine exactly how much material you need based on the dimensions of your project.
The Concrete Formula
To calculate the volume of concrete required for a rectangular slab, use the following formula:
Since thickness is usually measured in inches, you must divide the inches by 12 to convert it to feet before multiplying. To convert Cubic Feet to Cubic Yards (the standard unit for ordering ready-mix trucks), divide the result by 27.
4-Inch vs. 6-Inch Slabs
4-Inch Slab: The standard for residential sidewalks, patios, and garage floors for passenger cars.
6-Inch Slab: Recommended for driveways that handle heavy trucks, RVs, or industrial machinery.
Bags vs. Ready-Mix Truck
When should you buy bags, and when should you call a truck?
Bagged Concrete: Best for small projects requiring less than 1 cubic yard (approx. 45 bags of 80lbs). Great for setting posts, small repairs, or tiny pads.
Ready-Mix Truck: Best for projects over 1 cubic yard. It is more cost-effective and ensures a consistent mix for large pours like driveways or foundations.
Why Include a Waste Margin?
Professional contractors always add a safety margin (typically 5% to 10%) to their order. This accounts for:
Spillage during the pour.
Uneven subgrade depth (holes or dips in the ground).
Concrete staying stuck in the mixer or wheelbarrow.
Running out of concrete in the middle of a pour is a disaster that can ruin the slab's integrity, so always round up.
function calculateConcrete() {
// 1. Get Input Values
var len = parseFloat(document.getElementById('concLength').value);
var wid = parseFloat(document.getElementById('concWidth').value);
var thickInches = parseFloat(document.getElementById('concThickness').value);
var wastePercent = parseFloat(document.getElementById('concWaste').value);
var pricePerYard = parseFloat(document.getElementById('concPrice').value);
// 2. Validation
if (isNaN(len) || isNaN(wid) || isNaN(thickInches)) {
alert("Please enter valid numbers for Length, Width, and Thickness.");
return;
}
if (len <= 0 || wid <= 0 || thickInches 0) {
totalCost = totalCubicYards * pricePerYard;
showCost = true;
}
// 4. Update UI
document.getElementById('resYards').innerText = totalCubicYards.toFixed(2);
document.getElementById('resFeet').innerText = totalCubicFeet.toFixed(2);
document.getElementById('resBags80').innerText = bags80Needed;
document.getElementById('resBags60').innerText = bags60Needed;
var costRow = document.getElementById('costRow');
if (showCost) {
document.getElementById('resCost').innerText = "$" + totalCost.toFixed(2);
costRow.style.display = 'flex';
} else {
costRow.style.display = 'none';
}
// Show results container
document.getElementById('resultsArea').style.display = 'block';
}