Planning a new driveway, patio, or shed foundation? Accurate calculations are critical to avoid ordering too little concrete (resulting in cold joints) or too much (wasting money). This specific Concrete Slab Calculator helps you determine exactly how many cubic yards or pre-mix bags you need based on your slab's dimensions.
Concrete Slab Estimator
Please enter valid positive numbers for dimensions.
Calculation Results
Volume (Cubic Yards):0
Volume (Cubic Feet):0
80lb Bags of Premix:0
60lb Bags of Premix:0
Estimated Material Cost:$0.00
*Results include your specified waste margin.
How to Calculate Concrete Volume
Calculating the amount of concrete needed for a slab involves determining the volume in cubic feet and then converting it to cubic yards, which is the standard unit for ordering ready-mix trucks.
To convert cubic feet to cubic yards, divide the total cubic feet by 27 (since there are 27 cubic feet in one cubic yard).
Why Include a Waste Factor?
Professional contractors always include a safety margin, typically between 5% and 10%. This accounts for:
Spillage during the pour.
Uneven subgrade (ground) depth.
Form spreading (forms bowing out slightly under pressure).
Concrete remaining in the truck or pump.
Bagged Concrete vs. Ready-Mix Truck
When should you use bags versus ordering a truck?
Bagged Concrete: Best for small projects under 1 cubic yard (approx. 45-50 bags of 80lb mix). Examples include small walkways, post holes, or equipment pads.
Ready-Mix Truck: Best for projects requiring 1 cubic yard or more. While there is usually a "short load" fee for small orders, it saves immense physical labor compared to mixing bags by hand.
Standard Slab Thicknesses
Ensuring you input the correct thickness is vital for the structural integrity of your project:
4 Inches: Standard for residential sidewalks, patios, and garage floors (for passenger cars).
5-6 Inches: Recommended for heavier vehicle driveways (RV/Trucks) or hot tub pads.
6+ Inches: Heavy-duty commercial aprons or structural foundations.
function calculateConcrete() {
// Get Input Values
var length = document.getElementById('slabLength').value;
var width = document.getElementById('slabWidth').value;
var thickness = document.getElementById('slabThickness').value;
var waste = document.getElementById('wasteFactor').value;
var price = document.getElementById('pricePerYard').value;
var errorDiv = document.getElementById('errorMsg');
var resultDiv = document.getElementById('concreteResult');
var costRow = document.getElementById('costRow');
// Reset Error
errorDiv.style.display = 'none';
resultDiv.style.display = 'none';
// Validation
if (length === "" || width === "" || thickness === "" || isNaN(length) || isNaN(width) || isNaN(thickness)) {
errorDiv.innerHTML = "Please enter valid numbers for Length, Width, and Thickness.";
errorDiv.style.display = 'block';
return;
}
// Convert strings to floats
var l = parseFloat(length);
var w = parseFloat(width);
var t = parseFloat(thickness);
var wf = parseFloat(waste) || 0;
var p = parseFloat(price) || 0;
if (l <= 0 || w <= 0 || t 0) {
totalCost = totalCubicYards * p;
costRow.style.display = 'flex';
} else {
costRow.style.display = 'none';
}
// Display Results
document.getElementById('resYards').innerText = totalCubicYards.toFixed(2);
document.getElementById('resFeet').innerText = totalCubicFeet.toFixed(2);
document.getElementById('res80bags').innerText = bags80;
document.getElementById('res60bags').innerText = bags60;
if (p > 0) {
document.getElementById('resCost').innerText = "$" + totalCost.toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,');
}
resultDiv.style.display = 'block';
}