Calculating the correct amount of concrete is crucial for any construction project, whether you are pouring a patio, a driveway, or a foundation footing. Ordering too little can result in a "cold joint" and structural weakness, while ordering too much wastes money and creates disposal issues.
The standard unit of measure for concrete volume is the Cubic Yard. For smaller DIY projects using pre-mix bags (like Quikrete or Sakrete), you will typically calculate based on the number of 60lb or 80lb bags required.
The Concrete Formula
To find the volume of a rectangular slab, use the following steps:
Convert dimensions to feet: Ensure your length and width are in feet. If your thickness is in inches, divide it by 12 to convert to feet.
If you are not ordering a ready-mix truck and are mixing by hand, you need to know how many bags to buy. The yield of pre-mix concrete varies slightly by brand, but standard yields are generally:
80lb Bag: Yields approximately 0.60 cubic feet.
60lb Bag: Yields approximately 0.45 cubic feet.
To calculate the bags needed, take your total required Cubic Feet and divide by the yield of the bag size you intend to use.
Why Include a Waste Margin?
Professional contractors always include a safety margin—typically 5% to 10%—when ordering materials. This accounts for:
Spillage during transport or mixing.
Uneven subgrade (the ground is rarely perfectly flat).
Slightly over-excavated areas.
Concrete remaining in the mixer or wheelbarrow.
Our calculator above includes an optional 10% waste margin to ensure you don't run out of material mid-pour.
Standard Slab Thicknesses
4 Inches: Standard for sidewalks, patios, and residential driveways (passenger cars).
5-6 Inches: Heavy-duty driveways, garage floors, or areas with heavy trucks.
8+ Inches: Commercial foundations and heavy load-bearing areas.
function calculateConcrete() {
// 1. Get input values using var
var length = document.getElementById("lengthFt").value;
var width = document.getElementById("widthFt").value;
var depth = document.getElementById("depthIn").value;
var quantity = document.getElementById("quantity").value;
var addWaste = document.getElementById("wasteFactor").checked;
// 2. Validate inputs
if (length === "" || width === "" || depth === "" || quantity === "") {
alert("Please fill in all fields (Length, Width, Thickness, and Quantity).");
return;
}
var lenVal = parseFloat(length);
var widVal = parseFloat(width);
var depVal = parseFloat(depth);
var qtyVal = parseFloat(quantity);
if (isNaN(lenVal) || isNaN(widVal) || isNaN(depVal) || isNaN(qtyVal) || lenVal <= 0 || widVal <= 0 || depVal <= 0 || qtyVal <= 0) {
alert("Please enter valid positive numbers.");
return;
}
// 3. Calculation Logic
// Convert depth from inches to feet
var depthFeet = depVal / 12;
// Calculate total cubic feet for one item
var cubicFeetPerItem = lenVal * widVal * depthFeet;
// Multiply by quantity
var totalCubicFeet = cubicFeetPerItem * qtyVal;
// Add waste margin if checked (10%)
if (addWaste) {
totalCubicFeet = totalCubicFeet * 1.10;
}
// Convert to Cubic Yards (1 Yard = 27 Cubic Feet)
var totalCubicYards = totalCubicFeet / 27;
// Calculate Bags
// Standard Yield: 80lb bag = 0.6 cu ft, 60lb bag = 0.45 cu ft
var yield80 = 0.60;
var yield60 = 0.45;
var bags80 = Math.ceil(totalCubicFeet / yield80);
var bags60 = Math.ceil(totalCubicFeet / yield60);
// 4. Update UI
document.getElementById("resYards").innerHTML = totalCubicYards.toFixed(2);
document.getElementById("resFeet").innerHTML = totalCubicFeet.toFixed(2);
document.getElementById("res80lb").innerHTML = bags80;
document.getElementById("res60lb").innerHTML = bags60;
// Show result container
document.getElementById("result-container").style.display = "block";
}