Concrete Volume Calculator
Calculate the exact amount of concrete needed for a slab, column or footing. Results are given in cubic yards (for ready-mix ordering), cubic metres and number of 60 lb pre-mix bags. A 10% waste allowance is automatically included.
How it works
Concrete is ordered by volume. For slabs, multiply length x width x thickness (converting inches to feet). For columns, use the cylinder formula π r² h. A 10% waste factor is added to account for spills, irregular forms and settling.
Slab: L x W x (thickness/12) | Column: π x r² x h | Add 10% for wasteExample. A 20 ft x 10 ft slab at 4 inches thick needs about 2.47 cubic yards or approximately 66 bags of 60 lb concrete.
Frequently asked questions
When should I use ready-mix vs bags?
For large pours (over 1 cubic yard), ready-mix concrete delivered by truck is faster, cheaper and gives more consistent quality. For small projects, pre-mix bags are convenient. Roughly 1 cubic yard = 54 bags of 60 lb mix.
Why is 10% waste added?
Irregular formwork, spillage, mixing losses and the concrete settling mean you typically need 5-15% more than the exact calculated volume. 10% is the standard buffer contractors use.
Related calculators
Embed this calculator
Free to use on any site. Please keep the credit link.
<iframe
id="letmecalc-concrete-calculator"
src="https://letmecalc.com/embed/construction/concrete-calculator"
title="Concrete Calculator"
width="100%"
height="620"
style="border:0;max-width:100%"
loading="lazy"
></iframe>
<p><a href="https://letmecalc.com/construction/concrete-calculator" target="_blank" rel="noopener">Concrete Calculator</a> by letmecalc</p>
<script>
(function () {
var f = document.getElementById("letmecalc-concrete-calculator");
window.addEventListener("message", function (e) {
if (e.origin !== "https://letmecalc.com") return;
if (!f || e.source !== f.contentWindow) return;
var d = e.data;
if (!d || d.source !== "letmecalc-embed" || d.type !== "resize") return;
if (typeof d.height === "number" && d.height > 0) {
f.style.height = d.height + "px";
}
});
})();
</script>