============================================================ */ (function(){ 'use strict'; function init(){ var root = document.getElementById('zssb'); if(!root) return; /* ── State ──────────────────────────────────────── */ var s1Type = 'sleeper'; // 'sleeper' or 'offduty' var s2Type = 'sleeper'; /* ── Toggle button setup ────────────────────────── */ function setupToggle(slpId, offId, callback){ var slpBtn = document.getElementById(slpId); var offBtn = document.getElementById(offId); if(!slpBtn || !offBtn) return; slpBtn.addEventListener('click', function(){ slpBtn.classList.add('active'); offBtn.classList.remove('active'); callback('sleeper'); }); offBtn.addEventListener('click', function(){ offBtn.classList.add('active'); slpBtn.classList.remove('active'); callback('offduty'); }); } setupToggle('zssb-s1-sleeper', 'zssb-s1-offduty', function(t){ s1Type = t; }); setupToggle('zssb-s2-sleeper', 'zssb-s2-offduty', function(t){ s2Type = t; }); /* ── Format decimal hours → "Xh Ym" ─────────────── */ function fmtHrs(h){ if(isNaN(h) || h < 0) return '0h 0m'; var hh = Math.floor(h); var mm = Math.round((h - hh) * 60); if(mm === 60){ hh++; mm = 0; } if(hh === 0 && mm === 0) return '0h 0m'; if(hh === 0) return mm + 'm'; if(mm === 0) return hh + 'h'; return hh + 'h ' + mm + 'm'; } /* ── Add decimal hours to a time string ─────────── */ function addHrs(timeStr, hrs){ if(!timeStr || timeStr === '') return null; var parts = timeStr.split(':'); if(parts.length < 2) return null; var totalMins = parseInt(parts[0], 10) * 60 + parseInt(parts[1], 10) + Math.round(hrs * 60); totalMins = ((totalMins % 1440) + 1440) % 1440; var h = Math.floor(totalMins / 60); var m = totalMins % 60; return (h < 10 ? '0' : '') + h + ':' + (m < 10 ? '0' : '') + m; } /* ── Convert 24hr "HH:MM" → 12hr "H:MM AM/PM" ─── */ function to12hr(t24){ if(!t24) return null; var p = t24.split(':'); var h = parseInt(p[0], 10); var m = p[1]; var ampm = h >= 12 ? 'PM' : 'AM'; h = h % 12; if(h === 0) h = 12; return h + ':' + m + ' ' + ampm; } /* ── Warning helpers ─────────────────────────────── */ function showWarn(msg){ var w = document.getElementById('zssb-warn'); var wm = document.getElementById('zssb-wmsg'); if(w && wm){ wm.textContent = msg; w.classList.add('show'); } } function hideWarn(){ var w = document.getElementById('zssb-warn'); if(w) w.classList.remove('show'); } /* ── Status bar progress ─────────────────────────── */ function setStatus(step){ var pills = ['zssb-pill-1', 'zssb-pill-2', 'zssb-pill-3']; for(var i = 0; i < pills.length; i++){ var el = document.getElementById(pills[i]); if(el){ el.classList[i < step ? 'add' : 'remove']('active'); } } } /* ════════════════════════════════════════════════ MAIN CALCULATION — FMCSA 49 CFR §395.1(g) ════════════════════════════════════════════════ */ function calc(){ hideWarn(); setStatus(2); /* Read inputs */ var drivenBefore = parseFloat(document.getElementById('zssb-driven').value) || 0; var drivenBetween = parseFloat(document.getElementById('zssb-driven-between').value) || 0; var s1h = parseFloat(document.getElementById('zssb-s1-hrs').value) || 0; var s1m = parseFloat(document.getElementById('zssb-s1-min').value) || 0; var s2h = parseFloat(document.getElementById('zssb-s2-hrs').value) || 0; var s2m = parseFloat(document.getElementById('zssb-s2-min').value) || 0; var s1Start = document.getElementById('zssb-s1-start').value; var s2Start = document.getElementById('zssb-s2-start').value; /* Convert to decimal hours */ var split1 = s1h + (s1m / 60); var split2 = s2h + (s2m / 60); /* ── Validation ────────────────────────────────── */ if(split1 <= 0 && split2 <= 0){ showWarn('Please enter the duration for at least one split rest period.'); return; } if(split1 < 0 || split2 < 0){ showWarn('Rest period durations cannot be negative.'); return; } if(drivenBefore < 0 || drivenBetween < 0){ showWarn('Driving hours cannot be negative.'); return; } var totalDriven = drivenBefore + drivenBetween; if(totalDriven > 11){ showWarn('Total hours driven (' + totalDriven.toFixed(2) + ' hrs) exceeds the 11-hour driving limit.'); return; } /* ── FMCSA Split Sleeper Berth Logic ───────────── RULE 1: Combined rest >= 10 hours RULE 2: The longer period must be >= 7 hrs AND in sleeper berth RULE 3: The shorter period must be >= 2 hrs (sleeper or off-duty) ─────────────────────────────────────────────────── */ var totalRest = split1 + split2; var combinedOk = totalRest >= 10; var longSplit = Math.max(split1, split2); var shortSplit = Math.min(split1, split2); var longIsS1 = split1 >= split2; var longType = longIsS1 ? s1Type : s2Type; /* Long split: must be >= 7 hrs AND sleeper berth */ var longOk = (longSplit >= 7) && (longType === 'sleeper'); /* Short split: must be >= 2 hrs (any type) */ var shortOk = (shortSplit >= 2); /* Single-split detection (only one period entered) */ var oneSplit = (split1 > 0 && split2 === 0) || (split1 === 0 && split2 > 0); var isCompliant = false; var reason = ''; if(oneSplit){ isCompliant = false; reason = 'Only one split period entered. Please enter both Split 1 and Split 2 durations to check full FMCSA compliance.'; } else { var failReasons = []; if(!longOk){ if(longSplit < 7){ failReasons.push('Longer split (' + fmtHrs(longSplit) + ') is under the required 7-hour minimum.'); } else { failReasons.push('Longer split (' + fmtHrs(longSplit) + ') must be in the sleeper berth, not off-duty.'); } } if(!shortOk){ failReasons.push('Shorter split (' + fmtHrs(shortSplit) + ') is under the required 2-hour minimum.'); } if(!combinedOk){ failReasons.push('Combined rest (' + fmtHrs(totalRest) + ') is under the 10-hour minimum required.'); } isCompliant = longOk && shortOk && combinedOk; if(isCompliant){ reason = 'Both splits meet FMCSA requirements. Your 14-hour clock is paused during both rest periods and restarts at the end of Split 2.'; } else { reason = failReasons.join(' '); } } /* ── Remaining drive time ───────────────────────── */ var driveRemaining = Math.max(0, 11 - totalDriven); /* ── Timeline data (if start times provided) ──── */ var timelineData = null; if(s1Start && s1Start !== ''){ var s1End = addHrs(s1Start, split1); var midDrive = s2Start && s2Start !== '' ? s2Start : (s1End ? addHrs(s1End, drivenBetween) : null); var s2End = midDrive ? addHrs(midDrive, split2) : null; timelineData = { s1Start: to12hr(s1Start), s1End: to12hr(s1End), s2Start: s2Start && s2Start !== '' ? to12hr(s2Start) : (midDrive ? to12hr(midDrive) : null), s2End: to12hr(s2End), resumeTime: s2End ? to12hr(s2End) : null }; } /* ── Render results ──────────────────────────────── */ renderResults(isCompliant, reason, { split1: split1, split2: split2, totalRest: totalRest, longSplit: longSplit, shortSplit: shortSplit, longOk: longOk, shortOk: shortOk, combinedOk: combinedOk, longType: longType, drivenBefore: drivenBefore, drivenBetween: drivenBetween, totalDriven: totalDriven, driveRemaining:driveRemaining, s1Type: s1Type, s2Type: s2Type, oneSplit: oneSplit }, timelineData); setStatus(3); } /* ════════════════════════════════════════════════ RENDER RESULTS ════════════════════════════════════════════════ */ function renderResults(isCompliant, reason, d, tl){ /* Element refs */ var resEl = document.getElementById('zssb-res'); var banner = document.getElementById('zssb-banner'); var bannerStatus= document.getElementById('zssb-banner-status'); var bannerReason= document.getElementById('zssb-banner-reason'); var bannerSvg = document.getElementById('zssb-banner-svg'); var cardsEl = document.getElementById('zssb-cards'); var breakdownEl = document.getElementById('zssb-breakdown'); var timelineEl = document.getElementById('zssb-timeline'); var tlWrap = document.getElementById('zssb-timeline-wrap'); /* ── Compliance Banner ──────────────────────────── */ if(d.oneSplit){ banner.className = 'compliance-banner non-compliant'; bannerStatus.textContent = 'Incomplete — Enter Both Splits'; bannerSvg.innerHTML = ''; } else if(isCompliant){ banner.className = 'compliance-banner compliant'; bannerStatus.textContent = '✅ FMCSA Compliant — Valid Split'; bannerSvg.innerHTML = ''; } else { banner.className = 'compliance-banner non-compliant'; bannerStatus.textContent = '❌ Non-Compliant — Invalid Split'; bannerSvg.innerHTML = ''; } bannerReason.textContent = reason; /* ── Summary Cards ──────────────────────────────── */ var cards = []; if(!d.oneSplit){ cards.push({ v: fmtHrs(d.split1), u: d.s1Type === 'sleeper' ? 'SLEEPER' : 'OFF-DUTY', n: 'Split 1 Duration', cls: d.s1Type === 'sleeper' ? 'blue' : 'orange' }); cards.push({ v: fmtHrs(d.split2), u: d.s2Type === 'sleeper' ? 'SLEEPER' : 'OFF-DUTY', n: 'Split 2 Duration', cls: d.s2Type === 'sleeper' ? 'blue' : 'orange' }); cards.push({ v: fmtHrs(d.totalRest), u: 'TOTAL REST', n: 'Combined Off-Duty', cls: d.combinedOk ? 'green' : 'red' }); cards.push({ v: fmtHrs(d.driveRemaining), u: 'REMAINING', n: 'Drive Time Left', cls: d.driveRemaining > 4 ? 'green' : (d.driveRemaining > 2 ? 'orange' : 'red') }); } cardsEl.innerHTML = cards.map(function(c){ return '
' + '
' + c.v + '
' + '
' + c.u + '
' + '
' + c.n + '
' + '
'; }).join(''); /* ── Breakdown Table ────────────────────────────── */ var rows = []; if(!d.oneSplit){ rows.push({lbl: 'Split 1 (' + (d.s1Type === 'sleeper' ? 'Sleeper Berth' : 'Off-Duty') + ')', val: fmtHrs(d.split1), cls: ''}); rows.push({lbl: 'Split 2 (' + (d.s2Type === 'sleeper' ? 'Sleeper Berth' : 'Off-Duty') + ')', val: fmtHrs(d.split2), cls: ''}); rows.push({lbl: 'Combined Rest Total', val: fmtHrs(d.totalRest) + (d.totalRest >= 10 ? ' ✓' : ' ✗ (Need ≥10h)'), cls: d.combinedOk ? 'ok' : 'fail'}); rows.push({lbl: 'Longer Split ≥7 hrs in Sleeper Berth', val: d.longOk ? '✓ Pass' : '✗ Fail', cls: d.longOk ? 'ok' : 'fail'}); rows.push({lbl: 'Shorter Split ≥2 hrs (any type)', val: d.shortOk ? '✓ Pass' : '✗ Fail', cls: d.shortOk ? 'ok' : 'fail'}); rows.push({lbl: 'Hours Driven Before Split 1', val: fmtHrs(d.drivenBefore), cls: 'info'}); rows.push({lbl: 'Hours Driven Between Splits', val: fmtHrs(d.drivenBetween), cls: 'info'}); rows.push({lbl: 'Total Hours Driven', val: fmtHrs(d.totalDriven) + ' / 11 hrs max', cls: d.totalDriven < 11 ? 'ok' : 'fail'}); rows.push({lbl: 'Drive Time Remaining After Splits', val: fmtHrs(d.driveRemaining), cls: d.driveRemaining > 0 ? 'ok' : 'fail'}); rows.push({lbl: '14-Hour Clock Paused During Splits', val: isCompliant ? 'Yes — Both periods excluded' : 'Not applicable (fix issues above)', cls: isCompliant ? 'ok' : 'fail'}); } breakdownEl.innerHTML = rows.map(function(r){ return '
' + '' + r.lbl + '' + '' + r.val + '' + '
'; }).join(''); /* ── Timeline ───────────────────────────────────── */ if(!d.oneSplit){ tlWrap.style.display = 'block'; var items = []; items.push({ dot: 'drive', label: 'Started Driving', desc: 'Drove ' + fmtHrs(d.drivenBefore) + ' before first rest period.' }); items.push({ dot: 'sleep', label: 'Split 1 Begins' + (tl && tl.s1Start ? ' at ' + tl.s1Start : ''), desc: fmtHrs(d.split1) + ' ' + (d.s1Type === 'sleeper' ? 'in Sleeper Berth' : 'Off-Duty') + (tl && tl.s1End ? ' → Ends: ' + tl.s1End : '') }); if(d.drivenBetween > 0){ items.push({ dot: 'drive', label: 'Resumed Driving Between Splits', desc: 'Drove ' + fmtHrs(d.drivenBetween) + ' between the two rest periods.' }); } items.push({ dot: 'sleep', label: 'Split 2 Begins' + (tl && tl.s2Start ? ' at ' + tl.s2Start : ''), desc: fmtHrs(d.split2) + ' ' + (d.s2Type === 'sleeper' ? 'in Sleeper Berth' : 'Off-Duty') + (tl && tl.s2End ? ' → Ends: ' + tl.s2End : '') }); if(isCompliant){ items.push({ dot: 'done', label: '14-Hour Clock Restarts' + (tl && tl.resumeTime ? ' at ' + tl.resumeTime : ''), desc: 'Both splits complete. ' + fmtHrs(d.driveRemaining) + ' drive time remaining.' }); } else { items.push({ dot: 'off', label: 'Non-Compliant — Cannot Resume', desc: 'Fix the split issues above before resuming driving.' }); } timelineEl.innerHTML = items.map(function(it){ return '
' + '
' + '
' + '
' + it.label + '
' + '
' + it.desc + '
' + '
'; }).join(''); } else { tlWrap.style.display = 'none'; } /* ── Show results panel ─────────────────────────── */ resEl.classList.add('show'); setTimeout(function(){ resEl.scrollIntoView({ behavior: 'smooth', block: 'nearest' }); }, 100); } /* ════════════════════════════════════════════════ RESET ════════════════════════════════════════════════ */ function resetAll(){ /* Clear number inputs */ var numIds = ['zssb-driven', 'zssb-driven-between', 'zssb-s1-hrs', 'zssb-s1-min', 'zssb-s2-hrs', 'zssb-s2-min']; numIds.forEach(function(id){ var el = document.getElementById(id); if(el) el.value = ''; }); /* Clear time inputs */ ['zssb-s1-start', 'zssb-s2-start'].forEach(function(id){ var el = document.getElementById(id); if(el) el.value = ''; }); /* Reset toggle states */ s1Type = 'sleeper'; s2Type = 'sleeper'; ['zssb-s1-sleeper', 'zssb-s2-sleeper'].forEach(function(id){ var el = document.getElementById(id); if(el) el.classList.add('active'); }); ['zssb-s1-offduty', 'zssb-s2-offduty'].forEach(function(id){ var el = document.getElementById(id); if(el) el.classList.remove('active'); }); /* Hide warning and results */ hideWarn(); var resEl = document.getElementById('zssb-res'); if(resEl) resEl.classList.remove('show'); setStatus(1); } /* ── Event Listeners ──────────────────────────────── */ var calcBtn = document.getElementById('zssb-btn'); if(calcBtn) calcBtn.addEventListener('click', calc); var rstBtn = document.getElementById('zssb-reset'); if(rstBtn) rstBtn.addEventListener('click', resetAll); /* Enter key triggers calculation */ var numFields = ['zssb-driven', 'zssb-driven-between', 'zssb-s1-hrs', 'zssb-s1-min', 'zssb-s2-hrs', 'zssb-s2-min']; numFields.forEach(function(id){ var el = document.getElementById(id); if(el) el.addEventListener('keydown', function(e){ if(e.key === 'Enter') calc(); }); }); } /* end init() */ /* ── Safe DOM-ready execution ───────────────────────── */ if(document.readyState === 'loading'){ document.addEventListener('DOMContentLoaded', init); } else { init(); } })();
Cement & Sand Calculator
Mortar · Concrete · Floor Screed · Plastering — All mix types, all units.
Mortar / Masonry: Calculate cement and sand quantities for brickwork, blockwork, and pointing. Uses dry volume method (factor 1.33). Common mixes: 1:3, 1:4, 1:5, 1:6.
Project Dimensions
Length
Width / Breadth
Thickness / Depth
Mix Ratio Preset
Output Unit System
Cement
:
Sand
+10%
!
Please enter valid positive values for all dimension fields.
Calculation Results
Mortar | 1:4 Mix | 1.00 m³ wet volume
📋 Order Summary
Formulas, Assumptions & References
  • Dry Volume Factor: Dry Volume = Wet Volume × 1.33 (accounts for voids & compaction)
  • Mortar: Cement = (C ÷ Total Parts) × Dry Vol  |  Sand = (S ÷ Total Parts) × Dry Vol
  • Concrete: Aggregate = (A ÷ Total Parts) × Dry Vol
  • Cement Bag: 1 bag = 50 kg  |  Density = 1440 kg/m³  |  1 bag = 0.0347 m³
  • Sand Density: ~1600 kg/m³ (dry)  |  ~1750 kg/m³ (wet)
  • Aggregate Density: ~1550 kg/m³ (20mm crushed)
  • Unit Conversions: 1 m³ = 35.315 ft³  |  1 m = 3.28084 ft
  • Mix ratios by volume. Results are estimates — add 5–10% wastage for real projects.
  • References: IS 456:2000 (India), BS EN 206 (UK/EU), ACI 318 (USA)

Cement Sand Calculation Calculator: Find Your Perfect Mix Instantly

Getting your cement sand calculation wrong is one of the most expensive mistakes in any construction project. This free tool from Zo Calculator takes your project dimensions and mix type, then instantly tells you exactly how much cement, sand, gravel, and aggregate you need — no guesswork, no waste.


What This Calculator Tells You

Whether you're mixing mortar for a brick wall or pouring a concrete slab, our sand and cement calculator gives you precise quantities for every component:

  • Cement quantity required (in bags or kg) for your chosen mix ratio
  • Sand volume needed (in cubic feet, cubic meters, or tonnes)
  • Aggregate/gravel quantity for concrete mixes (fine and coarse)
  • Total mix volume including dry and wet swell factors
  • Mortar volume for blockwork, brick laying, and plastering
  • Screed thickness calculations for floor screeds
  • Results for common ratios like 1:3, 1:4, 1:5, and 1:2:4 mixes

How the Calculator Works (The Formula & Logic)

The cement sand calculation is based on the dry volume method, which accounts for the fact that dry materials compact when water is added. The standard correction factor is 1.33 (i.e., dry volume = wet volume × 1.33).

Core Formula for Mortar (e.g., 1:4 mix — 1 part cement : 4 parts sand):

Dry Volume = Wet Volume × 1.33 Cement Volume = (Ratio of Cement ÷ Total Parts) × Dry Volume Sand Volume = (Ratio of Sand ÷ Total Parts) × Dry Volume

For Concrete (e.g., 1:1.5:3 mix — Cement : Sand : Aggregate):

Total Parts = 1 + 1.5 + 3 = 5.5 Cement = (1 ÷ 5.5) × Dry Volume Sand = (1.5 ÷ 5.5) × Dry Volume Aggregate = (3 ÷ 5.5) × Dry Volume

For plastering, the plastering ratio of cement and sand calculation follows the same logic, but uses thinner layers (typically 12mm–20mm) and richer mixes like 1:3 or 1:4.


Standard Ratings & Classifications (Mix Ratio Chart)

Mix TypeCement : Sand : AggregateCommon Use
Mortar M1 (Weak)1 : 6 (cement:sand)Interior plastering, pointing
Mortar M2 (Standard)1 : 4 (cement:sand)Brickwork, blockwork, masonry
Mortar M3 (Strong)1 : 3 (cement:sand)External plastering, rendering
Concrete M101 : 3 : 6Lean concrete, blinding layers
Concrete M151 : 2 : 4General construction, footings
Concrete M201 : 1.5 : 3RCC slabs, columns, beams
Floor Screed1 : 3 – 1 : 4.5Sand cement screed, floor levelling
Lime Mortar1 : 1 : 6 (cement:lime:sand)Heritage work, flexible joints

Step-by-Step Practical Example

Scenario: You need to calculate materials for a brick wall using a 1:4 mortar mix (1 part cement, 4 parts sand). The total mortar volume required is 1 cubic metre (wet volume).

Step 1 — Find the Dry Volume: Dry Volume = 1 m³ × 1.33 = 1.33 m³

Step 2 — Calculate Cement: Total parts = 1 + 4 = 5 Cement = (1 ÷ 5) × 1.33 = 0.266 m³ Convert to bags: 0.266 m³ ÷ 0.0347 m³/bag = ~7.67 bags (50 kg each)

Step 3 — Calculate Sand: Sand = (4 ÷ 5) × 1.33 = 1.064 m³ Convert to tonnes: 1.064 × 1.6 t/m³ = ~1.70 tonnes of sand

Result: For 1 m³ of 1:4 mortar in your brick wall, you need approximately 8 bags of cement and 1.7 tonnes of sand. Our sand and cement calculator for brick wall gives you this answer in seconds.


How to Use Zo Calculator's Cement Sand Calculation Tool

Using ZoCalculator.com's tool is simple — no engineering degree required:

  1. Select your calculation type — choose from mortar (for brickwork/plastering), concrete (for slabs/columns), or floor screed.
  2. Enter your project dimensions — input length, width, and depth/thickness in your preferred units (metres, feet, or inches).
  3. Choose your mix ratio — select a standard ratio from the dropdown (e.g., 1:4, 1:3, 1:2:4) or enter a custom ratio.
  4. Select your material unit — choose whether you want results in bags, kg, cubic metres, or tonnes.
  5. Hit "Calculate" — the tool instantly displays cement, sand, and aggregate quantities.
  6. Read your results — review each material separately, then use the totals to purchase materials or prepare your site order.

Whether you need a patio sand cement calculator, a sand and cement calculator for screed, or a full concrete mix calculator for sand gravel and cement, all options are available within the same tool.


Practical Applications and Real-World Uses

  • Bricklayers & Masons: Quickly calculate the sand and cement for brick wall projects, ensuring no mid-job shortages using the sand and cement calculator for block work.
  • DIY Homeowners: Use the sand and cement calculator for patio laying, garden walls, or driveway edging to buy exactly the right amount of material.
  • Plasterers: Apply the plastering ratio of cement and sand calculation to price jobs accurately and avoid over-ordering on large rendering contracts.
  • Flooring Contractors: The sand cement screed calculator helps floor layers determine precise volumes for any screed depth, whether a 50mm or 75mm bed.
  • Structural Engineers & Estimators: Use cement sand aggregate calculation for M15 and M20 grade concrete in beams, columns, and slabs, alongside the cement sand gravel ratio calculator for mix design verification.
  • Landscapers: Combine the sand and cement calculator for patio and the cement gravel and sand calculator to cost out entire landscaping schemes quickly and accurately.

Important Notes & Technical Limitations

  1. Dry volume factor assumption: This calculator applies a standard 1.33 dry-to-wet volume multiplier. Real-world swell can vary slightly (1.30–1.35) depending on aggregate grading and moisture content.
  2. For reference and estimation only: Results from this cement and sand calculation tool are for planning and purchasing guidance. Always consult a structural engineer for load-bearing or critical concrete pours.
  3. Wastage not included by default: The calculator gives net quantities. Add a 5–10% wastage buffer manually for real orders to account for spillage, over-mixing, and surface absorption.
  4. Cement stabilized sand not covered: The cement stabilized sand calculator function is simplified; soil-cement stabilization for roads and sub-bases requires soil testing data beyond this tool's scope.

Helpful References & Sources

  • The Concrete Centretheconcretencentre.com — UK authority on concrete mix design standards and guidance.
  • Portland Cement Associationcement.org — North American resource for cement specifications, mix ratios, and construction guidance.
  • Wikipedia: Mortar (Masonry)wikipedia.org/wiki/Mortar_(masonry) — Comprehensive reference on mortar types, mix ratios, and applications worldwide.

🙋 Frequently Asked Questions (FAQs)

What is the standard ratio for a cement sand calculation in bricklaying mortar?

The standard mix for bricklaying mortar is 1 part cement to 4 parts sand (1:4), though a 1:5 ratio is used for interior, non-load-bearing walls. For exposed or below-DPC brickwork, a stronger 1:3 mix is recommended. Our sand and cement calculator for brick wall lets you switch between these ratios and instantly see the quantity change.

How much sand and cement do I need for 1 square metre of plastering?

For a standard 12mm thick plaster coat using a 1:4 cement-to-sand ratio, you need approximately 0.432 kg of cement and 1.728 kg of sand per square metre. For a 20mm thick coat, multiply those figures by 1.67. Use the sand and cement calculator square feet option on ZoCalculator.com if you're working in imperial units.

What is the correct cement sand aggregate ratio for M20 concrete?

M20 grade concrete uses a 1:1.5:3 ratio — 1 part cement, 1.5 parts sand, and 3 parts coarse aggregate (gravel or crushed stone). This is the most widely used mix for reinforced concrete slabs, beams, and columns in residential construction. Our cement sand and aggregate calculator handles M10, M15, and M20 grades automatically.

How do I calculate materials for a sand and cement floor screed?

For a standard floor screed, divide the screed volume (length × width × thickness) by the total mix parts to find each material's share. A 1:3 screed mix over 1 m² at 50mm depth needs roughly 6.3 kg cement and 0.019 m³ sand. The sand and cement screed calculator on our site does this instantly once you enter your floor area and screed depth.

What is the difference between a mortar mix and a concrete mix in these calculations?

Mortar is a two-component mix of cement and sand only, used for bonding bricks, blocks, and surface plastering. Concrete is a three-component mix of cement, sand, and coarse aggregate (gravel or stone), used for structural elements like slabs and foundations. Our cement sand gravel calculator handles concrete mixes, while the cement sand mix calculator handles mortar-only jobs.

Can I use this calculator for a patio?

Yes — the sand and cement calculator for patio use covers both the mortar bed (for laying slabs) and the jointing mortar between paving. A typical patio slab bed is 30–50mm deep using a 1:4 or 1:5 mix. Simply enter your patio area and bed depth into the patio sand cement calculator fields, select your mix ratio, and get instant material totals.

What is cement lime sand mortar and how is it calculated?

Cement lime mortar combines cement, hydrated lime, and sand — a typical ratio is 1:1:6 (cement:lime:sand). Lime improves workability and flexibility, making it ideal for heritage stonework and older brick buildings. The cement lime sand mortar mix ratio calculator on ZoCalculator.com lets you enter all three components for an accurate material breakdown.

How is the sand to cement ratio different for screed vs. brickwork?

Brickwork mortar typically uses a 1:4 or 1:5 sand-to-cement ratio, while floor screeds use a 1:3 or 1:3.5 ratio for better compressive strength underfoot. The sand cement screed calculator and the masonry mortar calculator are kept as separate input modes on our tool to avoid cross-calculation errors.

What does a concrete mix calculator for sand, gravel, and cement include?

A full concrete sand gravel cement calculator breaks down all three components — cement bags, fine aggregate (sand), and coarse aggregate (gravel or crushed stone) — for a given volume of concrete. It accounts for the dry volume factor and your chosen grade (M10–M25). The concrete mix calculator sand gravel cement tool on ZoCalculator.com also lets you compare grades side by side.

Is there a calculator that handles both metric and imperial units for cement and sand?

Yes. Our sand cement calculator supports inputs and outputs in both metric (metres, cubic metres, kg, tonnes) and imperial (feet, cubic feet, pounds, bags) units. Simply toggle the unit system at the top of the tool before entering your dimensions. The sand and cement calculator square feet mode is particularly useful for US and UK users working from architectural drawings in imperial format.


Explore Related Calculators on Zo Calculator