{"id":320,"date":"2026-09-22T15:29:50","date_gmt":"2026-09-22T15:29:50","guid":{"rendered":"https:\/\/millimeters.to\/?page_id=320"},"modified":"2026-09-22T15:29:51","modified_gmt":"2026-09-22T15:29:51","slug":"construction-calculators","status":"publish","type":"page","link":"https:\/\/millimeters.to\/es\/construction-calculators\/","title":{"rendered":"Construction Calculations"},"content":{"rendered":"    <div class=\"mmc-wrap mmc-cc-wrap\">\n\n        <nav class=\"mmc-breadcrumb\" aria-label=\"Breadcrumb\">\n            <a href=\"https:\/\/millimeters.to\/es\/\">Home<\/a>\n            <span>\/<\/span>\n            <span>Construction Calculators<\/span>\n        <\/nav>\n\n        <header class=\"mmc-cc-header\">\n            <h1>Construction Calculators<\/h1>\n            <p class=\"mmc-section-intro\">Bricks, paint, tiles and cement \u2014 four calculators in one place. Pick a tab, enter your measurements, get a straight answer with wastage built in.<\/p>\n        <\/header>\n\n        <div class=\"mmc-cc-tabs\" role=\"tablist\">\n            <button type=\"button\" class=\"mmc-cc-tab is-active\" data-tab=\"brick\" role=\"tab\" aria-selected=\"true\">Brick<\/button>\n            <button type=\"button\" class=\"mmc-cc-tab\" data-tab=\"paint\" role=\"tab\" aria-selected=\"false\">Paint<\/button>\n            <button type=\"button\" class=\"mmc-cc-tab\" data-tab=\"tile\" role=\"tab\" aria-selected=\"false\">Tile<\/button>\n            <button type=\"button\" class=\"mmc-cc-tab\" data-tab=\"cement\" role=\"tab\" aria-selected=\"false\">Cement<\/button>\n        <\/div>\n\n        <!-- ===================== BRICK ===================== -->\n        <div class=\"mmc-cc-panel is-active\" data-panel=\"brick\">\n            <div class=\"mmc-cc-card\">\n                <div class=\"mmc-cc-grid\">\n                    <div class=\"mmc-field\">\n                        <label for=\"b-length\">Wall length<\/label>\n                        <div class=\"mmc-input-row\">\n                            <input type=\"number\" id=\"b-length\" min=\"0\" step=\"0.01\" value=\"6\" inputmode=\"decimal\">\n                            <select id=\"b-length-unit\"><option value=\"m\" selected>m<\/option><option value=\"ft\">ft<\/option><\/select>\n                        <\/div>\n                    <\/div>\n                    <div class=\"mmc-field\">\n                        <label for=\"b-height\">Wall height<\/label>\n                        <div class=\"mmc-input-row\">\n                            <input type=\"number\" id=\"b-height\" min=\"0\" step=\"0.01\" value=\"2.4\" inputmode=\"decimal\">\n                            <select id=\"b-height-unit\"><option value=\"m\" selected>m<\/option><option value=\"ft\">ft<\/option><\/select>\n                        <\/div>\n                    <\/div>\n                    <div class=\"mmc-field\">\n                        <label for=\"b-openings\">Openings (doors\/windows)<\/label>\n                        <div class=\"mmc-input-row\">\n                            <input type=\"number\" id=\"b-openings\" min=\"0\" step=\"0.01\" value=\"0\" inputmode=\"decimal\">\n                            <select id=\"b-openings-unit\"><option value=\"m2\" selected>m\u00b2<\/option><option value=\"ft2\">ft\u00b2<\/option><\/select>\n                        <\/div>\n                    <\/div>\n                    <div class=\"mmc-field\">\n                        <label for=\"b-preset\">Brick type<\/label>\n                        <select id=\"b-preset\">\n                                                            <option value=\"sa_standard\"  selected='selected'>SA Standard (NBRI) brick<\/option>\n                                                            <option value=\"sa_maxi\" >SA Maxi brick<\/option>\n                                                            <option value=\"uk_metric\" >UK Standard (metric) brick<\/option>\n                                                            <option value=\"us_modular\" >US Modular brick<\/option>\n                                                            <option value=\"us_standard\" >US Standard brick<\/option>\n                                                            <option value=\"custom\" >Custom size<\/option>\n                                                    <\/select>\n                    <\/div>\n                    <div class=\"mmc-field mmc-custom-dims\" id=\"b-custom-dims\" style=\"display:none;\">\n                        <label>Custom brick size (mm)<\/label>\n                        <div class=\"mmc-input-row mmc-triple\">\n                            <input type=\"number\" id=\"b-custom-l\" min=\"1\" step=\"1\" value=\"222\" placeholder=\"L\">\n                            <input type=\"number\" id=\"b-custom-w\" min=\"1\" step=\"1\" value=\"106\" placeholder=\"W\">\n                            <input type=\"number\" id=\"b-custom-h\" min=\"1\" step=\"1\" value=\"73\" placeholder=\"H\">\n                        <\/div>\n                    <\/div>\n                    <div class=\"mmc-field\">\n                        <label for=\"b-skin\">Wall thickness<\/label>\n                        <select id=\"b-skin\">\n                            <option value=\"1\" selected>Single skin (half-brick)<\/option>\n                            <option value=\"2\">Double skin (one-brick \/ cavity)<\/option>\n                        <\/select>\n                    <\/div>\n                    <div class=\"mmc-field\">\n                        <label for=\"b-joint\">Mortar joint<\/label>\n                        <div class=\"mmc-input-row\"><input type=\"number\" id=\"b-joint\" min=\"0\" step=\"1\" value=\"10\"><span class=\"mmc-unit-suffix\">mm<\/span><\/div>\n                    <\/div>\n                    <div class=\"mmc-field\">\n                        <label for=\"b-waste\">Wastage allowance<\/label>\n                        <div class=\"mmc-input-row\"><input type=\"number\" id=\"b-waste\" min=\"0\" max=\"50\" step=\"1\" value=\"7.5\"><span class=\"mmc-unit-suffix\">%<\/span><\/div>\n                    <\/div>\n                <\/div>\n                <div class=\"mmc-cc-result\">\n                    <div class=\"mmc-cc-result-main\"><span class=\"mmc-cc-result-number\" id=\"b-total\">\u2014<\/span><span class=\"mmc-cc-result-label\">bricks needed<\/span><\/div>\n                    <div class=\"mmc-cc-result-sub\" id=\"b-breakdown\"><\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n\n        <!-- ===================== PAINT ===================== -->\n        <div class=\"mmc-cc-panel\" data-panel=\"paint\">\n            <div class=\"mmc-cc-card\">\n                <div class=\"mmc-cc-grid\">\n                    <div class=\"mmc-field\">\n                        <label for=\"p-length\">Wall length<\/label>\n                        <div class=\"mmc-input-row\">\n                            <input type=\"number\" id=\"p-length\" min=\"0\" step=\"0.01\" value=\"6\" inputmode=\"decimal\">\n                            <select id=\"p-length-unit\"><option value=\"m\" selected>m<\/option><option value=\"ft\">ft<\/option><\/select>\n                        <\/div>\n                    <\/div>\n                    <div class=\"mmc-field\">\n                        <label for=\"p-height\">Wall height<\/label>\n                        <div class=\"mmc-input-row\">\n                            <input type=\"number\" id=\"p-height\" min=\"0\" step=\"0.01\" value=\"2.4\" inputmode=\"decimal\">\n                            <select id=\"p-height-unit\"><option value=\"m\" selected>m<\/option><option value=\"ft\">ft<\/option><\/select>\n                        <\/div>\n                    <\/div>\n                    <div class=\"mmc-field\">\n                        <label for=\"p-openings\">Openings (doors\/windows)<\/label>\n                        <div class=\"mmc-input-row\">\n                            <input type=\"number\" id=\"p-openings\" min=\"0\" step=\"0.01\" value=\"0\" inputmode=\"decimal\">\n                            <select id=\"p-openings-unit\"><option value=\"m2\" selected>m\u00b2<\/option><option value=\"ft2\">ft\u00b2<\/option><\/select>\n                        <\/div>\n                    <\/div>\n                    <div class=\"mmc-field\">\n                        <label for=\"p-type\">Paint type<\/label>\n                        <select id=\"p-type\">\n                                                            <option value=\"interior\" data-coverage=\"10\"  selected='selected'>Interior wall paint<\/option>\n                                                            <option value=\"exterior\" data-coverage=\"9\" >Exterior wall paint<\/option>\n                                                            <option value=\"primer\" data-coverage=\"10\" >Primer \/ undercoat<\/option>\n                                                            <option value=\"ceiling\" data-coverage=\"11\" >Ceiling paint<\/option>\n                                                            <option value=\"custom\" data-coverage=\"10\" >Custom coverage<\/option>\n                                                    <\/select>\n                    <\/div>\n                    <div class=\"mmc-field\">\n                        <label for=\"p-coverage\">Coverage rate<\/label>\n                        <div class=\"mmc-input-row\"><input type=\"number\" id=\"p-coverage\" min=\"1\" step=\"0.1\" value=\"10\"><span class=\"mmc-unit-suffix\">m\u00b2\/L<\/span><\/div>\n                        <span class=\"mmc-field-hint\">Auto-fills from paint type \u2014 check your tin's label for the exact figure.<\/span>\n                    <\/div>\n                    <div class=\"mmc-field\">\n                        <label for=\"p-coats\">Number of coats<\/label>\n                        <div class=\"mmc-input-row\"><input type=\"number\" id=\"p-coats\" min=\"1\" step=\"1\" value=\"2\"><\/div>\n                    <\/div>\n                <\/div>\n                <div class=\"mmc-cc-result\">\n                    <div class=\"mmc-cc-result-main\"><span class=\"mmc-cc-result-number\" id=\"p-total\">\u2014<\/span><span class=\"mmc-cc-result-label\">litres of paint<\/span><\/div>\n                    <div class=\"mmc-cc-result-sub\" id=\"p-breakdown\"><\/div>\n                    <div class=\"mmc-cc-result-sub\" id=\"p-tins\"><\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n\n        <!-- ===================== TILE ===================== -->\n        <div class=\"mmc-cc-panel\" data-panel=\"tile\">\n            <div class=\"mmc-cc-card\">\n                <div class=\"mmc-cc-grid\">\n                    <div class=\"mmc-field\">\n                        <label for=\"t-length\">Room\/area length<\/label>\n                        <div class=\"mmc-input-row\">\n                            <input type=\"number\" id=\"t-length\" min=\"0\" step=\"0.01\" value=\"4\" inputmode=\"decimal\">\n                            <select id=\"t-length-unit\"><option value=\"m\" selected>m<\/option><option value=\"ft\">ft<\/option><\/select>\n                        <\/div>\n                    <\/div>\n                    <div class=\"mmc-field\">\n                        <label for=\"t-width\">Room\/area width<\/label>\n                        <div class=\"mmc-input-row\">\n                            <input type=\"number\" id=\"t-width\" min=\"0\" step=\"0.01\" value=\"3.5\" inputmode=\"decimal\">\n                            <select id=\"t-width-unit\"><option value=\"m\" selected>m<\/option><option value=\"ft\">ft<\/option><\/select>\n                        <\/div>\n                    <\/div>\n                    <div class=\"mmc-field\">\n                        <label for=\"t-preset\">Tile size<\/label>\n                        <select id=\"t-preset\">\n                                                            <option value=\"sq300\" >300 \u00d7 300 mm<\/option>\n                                                            <option value=\"sq450\" >450 \u00d7 450 mm<\/option>\n                                                            <option value=\"sq600\"  selected='selected'>600 \u00d7 600 mm<\/option>\n                                                            <option value=\"plank\" >200 \u00d7 1200 mm (plank)<\/option>\n                                                            <option value=\"subway\" >100 \u00d7 200 mm (subway\/brick)<\/option>\n                                                            <option value=\"mosaic\" >300 \u00d7 300 mm (mosaic sheet)<\/option>\n                                                            <option value=\"custom\" >Custom size<\/option>\n                                                    <\/select>\n                    <\/div>\n                    <div class=\"mmc-field mmc-custom-dims\" id=\"t-custom-dims\" style=\"display:none;\">\n                        <label>Custom tile size (mm)<\/label>\n                        <div class=\"mmc-input-row\">\n                            <input type=\"number\" id=\"t-custom-l\" min=\"1\" step=\"1\" value=\"600\" placeholder=\"L\">\n                            <input type=\"number\" id=\"t-custom-w\" min=\"1\" step=\"1\" value=\"600\" placeholder=\"W\">\n                        <\/div>\n                    <\/div>\n                    <div class=\"mmc-field\">\n                        <label for=\"t-per-box\">Tiles per box <span class=\"mmc-optional\">(optional)<\/span><\/label>\n                        <div class=\"mmc-input-row\"><input type=\"number\" id=\"t-per-box\" min=\"0\" step=\"1\" value=\"\" placeholder=\"e.g. 4\"><\/div>\n                    <\/div>\n                    <div class=\"mmc-field\">\n                        <label for=\"t-waste\">Wastage allowance<\/label>\n                        <div class=\"mmc-input-row\"><input type=\"number\" id=\"t-waste\" min=\"0\" max=\"50\" step=\"1\" value=\"10\"><span class=\"mmc-unit-suffix\">%<\/span><\/div>\n                    <\/div>\n                <\/div>\n                <div class=\"mmc-cc-result\">\n                    <div class=\"mmc-cc-result-main\"><span class=\"mmc-cc-result-number\" id=\"t-total\">\u2014<\/span><span class=\"mmc-cc-result-label\">tiles needed<\/span><\/div>\n                    <div class=\"mmc-cc-result-sub\" id=\"t-breakdown\"><\/div>\n                    <div class=\"mmc-cc-result-sub\" id=\"t-boxes\"><\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n\n        <!-- ===================== CEMENT ===================== -->\n        <div class=\"mmc-cc-panel\" data-panel=\"cement\">\n            <div class=\"mmc-cc-card\">\n                <div class=\"mmc-cc-grid\">\n                    <div class=\"mmc-field\">\n                        <label for=\"c-application\">Application<\/label>\n                        <select id=\"c-application\">\n                                                            <option value=\"concrete_general\"\n                                    data-cement=\"1\"\n                                    data-sand=\"2\"\n                                    data-stone=\"4\"\n                                    data-mode=\"volume\"\n                                     selected='selected'>Concrete \u2014 general purpose (1:2:4)<\/option>\n                                                            <option value=\"concrete_strong\"\n                                    data-cement=\"1\"\n                                    data-sand=\"1.5\"\n                                    data-stone=\"3\"\n                                    data-mode=\"volume\"\n                                    >Concrete \u2014 high strength (1:1.5:3)<\/option>\n                                                            <option value=\"mortar\"\n                                    data-cement=\"1\"\n                                    data-sand=\"4\"\n                                    data-stone=\"0\"\n                                    data-mode=\"area\"\n                                    >Mortar \u2014 bricklaying (1:4)<\/option>\n                                                            <option value=\"mortar_strong\"\n                                    data-cement=\"1\"\n                                    data-sand=\"3\"\n                                    data-stone=\"0\"\n                                    data-mode=\"area\"\n                                    >Mortar \u2014 below DPC \/ paving (1:3)<\/option>\n                                                            <option value=\"plaster\"\n                                    data-cement=\"1\"\n                                    data-sand=\"4\"\n                                    data-stone=\"0\"\n                                    data-mode=\"area\"\n                                    >Plaster \u2014 walls (1:4)<\/option>\n                                                            <option value=\"screed\"\n                                    data-cement=\"1\"\n                                    data-sand=\"3.5\"\n                                    data-stone=\"0\"\n                                    data-mode=\"area\"\n                                    >Screed \u2014 floors (1:3.5)<\/option>\n                                                    <\/select>\n                    <\/div>\n\n                    <div class=\"mmc-field mmc-c-volume-mode\">\n                        <label for=\"c-length\">Length<\/label>\n                        <div class=\"mmc-input-row\"><input type=\"number\" id=\"c-length\" min=\"0\" step=\"0.01\" value=\"3\"><span class=\"mmc-unit-suffix\">m<\/span><\/div>\n                    <\/div>\n                    <div class=\"mmc-field mmc-c-volume-mode\">\n                        <label for=\"c-width\">Width<\/label>\n                        <div class=\"mmc-input-row\"><input type=\"number\" id=\"c-width\" min=\"0\" step=\"0.01\" value=\"2\"><span class=\"mmc-unit-suffix\">m<\/span><\/div>\n                    <\/div>\n                    <div class=\"mmc-field mmc-c-volume-mode\">\n                        <label for=\"c-depth\">Thickness\/depth<\/label>\n                        <div class=\"mmc-input-row\"><input type=\"number\" id=\"c-depth\" min=\"0\" step=\"1\" value=\"100\"><span class=\"mmc-unit-suffix\">mm<\/span><\/div>\n                    <\/div>\n\n                    <div class=\"mmc-field mmc-c-area-mode\" style=\"display:none;\">\n                        <label for=\"c-area\">Area to cover<\/label>\n                        <div class=\"mmc-input-row\"><input type=\"number\" id=\"c-area\" min=\"0\" step=\"0.1\" value=\"10\"><span class=\"mmc-unit-suffix\">m\u00b2<\/span><\/div>\n                    <\/div>\n                    <div class=\"mmc-field mmc-c-area-mode\" style=\"display:none;\">\n                        <label for=\"c-thickness\">Layer thickness<\/label>\n                        <div class=\"mmc-input-row\"><input type=\"number\" id=\"c-thickness\" min=\"0\" step=\"1\" value=\"15\"><span class=\"mmc-unit-suffix\">mm<\/span><\/div>\n                    <\/div>\n\n                    <div class=\"mmc-field\">\n                        <label for=\"c-bagsize\">Cement bag size<\/label>\n                        <div class=\"mmc-input-row\"><input type=\"number\" id=\"c-bagsize\" min=\"1\" step=\"1\" value=\"50\"><span class=\"mmc-unit-suffix\">kg<\/span><\/div>\n                    <\/div>\n                <\/div>\n\n                <div class=\"mmc-cc-result\">\n                    <div class=\"mmc-cc-result-main\"><span class=\"mmc-cc-result-number\" id=\"c-bags\">\u2014<\/span><span class=\"mmc-cc-result-label\">bags of cement<\/span><\/div>\n                    <div class=\"mmc-cc-result-sub\" id=\"c-breakdown\"><\/div>\n                    <div class=\"mmc-cc-result-sub\" id=\"c-materials\"><\/div>\n                <\/div>\n\n                <div class=\"mmc-cc-disclaimer\">\n                    <strong>Note on cement type:<\/strong> this estimate uses a general density figure (roughly 1440 kg per cubic metre of cement). The actual yield of a cement bag varies by <strong>cement type and brand<\/strong> \u2014 for example, CEM I, CEM II\/blended and PPC-type cements can differ in density and strength class, which changes how many bags a given mix and volume actually needs. Treat this as a planning estimate, buy a little extra, and for structural or load-bearing work confirm quantities against your specific cement's technical data sheet or a proper mix design.\n                <\/div>\n            <\/div>\n        <\/div>\n\n        <section class=\"mmc-cc-info\">\n            <h2 class=\"mmc-faq-heading\">Frequently asked questions<\/h2>\n            <details class=\"mmc-faq-item\">\n                <summary>How many bricks are there per square metre?<\/summary>\n                <p>For a standard SA brick (222 \u00d7 106 \u00d7 73mm) laid single-skin with a 10mm mortar joint, you need roughly 54-55 bricks per square metre. Always add 5-10% for cuts and breakages.<\/p>\n            <\/details>\n            <details class=\"mmc-faq-item\">\n                <summary>How much paint do I need for a wall?<\/summary>\n                <p>Divide the wall area by the paint's coverage rate (typically 8-12 m\u00b2 per litre per coat) and multiply by the number of coats. Two coats is standard for most walls.<\/p>\n            <\/details>\n            <details class=\"mmc-faq-item\">\n                <summary>How many bags of cement do I need for concrete?<\/summary>\n                <p>It depends on your mix ratio and the volume of concrete. A 1:2:4 mix (cement:sand:stone) for 1 cubic metre of concrete needs roughly 6-7 bags of 50kg cement \u2014 but this varies by cement type and brand, so always check the bag's technical data sheet for critical work.<\/p>\n            <\/details>\n            <details class=\"mmc-faq-item\">\n                <summary>Does the amount of cement change with the type of cement?<\/summary>\n                <p>Yes. Different cement types and brands (such as CEM I, CEM II, or blended\/PPC cements) have different densities and strength classes, which affects how many bags you need for a given mix and volume. This calculator gives a general estimate \u2014 confirm against your specific cement's technical data sheet, especially for structural work.<\/p>\n            <\/details>\n        <\/section>\n\n    <\/div>\n\n    <style>\n    .mmc-cc-wrap { max-width: 780px; margin: 0 auto; padding: 32px 20px 64px; font-family: ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", Roboto, sans-serif; color: #14110f; }\n    .mmc-cc-wrap .mmc-breadcrumb { font-size: 13px; color: #6b6459; margin-bottom: 20px; font-family: ui-monospace, \"SF Mono\", Menlo, monospace; }\n    .mmc-cc-wrap .mmc-breadcrumb a { color: #6b6459; text-decoration: none; }\n    .mmc-cc-wrap .mmc-breadcrumb a:hover { color: #059669; }\n    .mmc-cc-wrap .mmc-breadcrumb span { margin: 0 6px; }\n    .mmc-cc-header h1 { font-size: 34px; line-height: 1.15; margin: 0 0 12px; letter-spacing: -0.02em; }\n    .mmc-cc-wrap .mmc-section-intro { font-size: 16px; color: #4a453d; line-height: 1.5; margin: 0 0 24px; }\n\n    .mmc-cc-tabs { display: flex; gap: 6px; margin-bottom: 20px; border-bottom: 1px solid #e8e3d8; }\n    .mmc-cc-tab { appearance: none; background: none; border: none; border-bottom: 2px solid transparent; padding: 10px 16px; font-size: 15px; font-weight: 600; color: #6b6459; cursor: pointer; font-family: inherit; margin-bottom: -1px; }\n    .mmc-cc-tab:hover { color: #14110f; }\n    .mmc-cc-tab.is-active { color: #059669; border-bottom-color: #059669; }\n\n    .mmc-cc-panel { display: none; }\n    .mmc-cc-panel.is-active { display: block; }\n\n    .mmc-cc-card { background: #fff; border: 1px solid #e8e3d8; border-radius: 14px; padding: 28px; box-shadow: 0 1px 3px rgba(20,17,15,0.04); }\n    .mmc-cc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }\n    .mmc-field { display: flex; flex-direction: column; gap: 6px; }\n    .mmc-field label { font-size: 13px; font-weight: 600; color: #14110f; font-family: ui-monospace, \"SF Mono\", Menlo, monospace; text-transform: uppercase; letter-spacing: 0.03em; }\n    .mmc-field label .mmc-optional { text-transform: none; font-weight: 400; color: #8a8375; letter-spacing: 0; }\n    .mmc-field-hint { font-size: 12px; color: #8a8375; }\n    .mmc-input-row { display: flex; gap: 8px; }\n    .mmc-input-row.mmc-triple input { min-width: 0; }\n    .mmc-input-row input, .mmc-field select { font-size: 16px; padding: 10px 12px; border: 1px solid #d8d2c4; border-radius: 8px; background: #fbf9f4; color: #14110f; width: 100%; }\n    .mmc-input-row select { flex: 0 0 auto; width: auto; }\n    .mmc-input-row input:focus, .mmc-field select:focus { outline: none; border-color: #059669; box-shadow: 0 0 0 3px rgba(5,150,105,0.12); }\n    .mmc-unit-suffix { display: flex; align-items: center; padding: 0 8px; color: #6b6459; font-size: 14px; }\n\n    .mmc-cc-result { margin-top: 28px; padding: 24px; background: #f2f7f4; border: 1px solid #d3e8db; border-radius: 12px; text-align: center; }\n    .mmc-cc-result-main { display: flex; align-items: baseline; justify-content: center; gap: 10px; flex-wrap: wrap; }\n    .mmc-cc-result-number { font-size: 44px; font-weight: 700; color: #059669; font-family: ui-monospace, \"SF Mono\", Menlo, monospace; letter-spacing: -0.02em; }\n    .mmc-cc-result-label { font-size: 16px; color: #4a453d; }\n    .mmc-cc-result-sub { margin-top: 8px; font-size: 14px; color: #6b6459; }\n\n    .mmc-cc-disclaimer { margin-top: 20px; padding: 14px 16px; background: #fdf6ea; border: 1px solid #eddcb0; border-radius: 10px; font-size: 13px; line-height: 1.55; color: #5c4a1f; }\n\n    .mmc-cc-info { margin-top: 40px; }\n    .mmc-faq-heading { margin-top: 8px; margin-bottom: 12px; font-size: 20px; }\n    .mmc-faq-item { border: 1px solid #e8e3d8; border-radius: 10px; padding: 14px 18px; margin-bottom: 10px; background: #fff; }\n    .mmc-faq-item summary { font-weight: 600; cursor: pointer; font-size: 15px; }\n    .mmc-faq-item p { margin: 10px 0 0; font-size: 14px; }\n\n    @media (max-width: 560px) {\n        .mmc-cc-grid { grid-template-columns: 1fr; }\n        .mmc-cc-result-number { font-size: 36px; }\n        .mmc-cc-tabs { flex-wrap: wrap; }\n        .mmc-cc-tab { padding: 8px 10px; font-size: 14px; }\n    }\n    <\/style>\n\n    <script>\n    (function () {\n        \/* ---------- TAB SWITCHING ---------- *\/\n        var tabs = document.querySelectorAll('.mmc-cc-tab');\n        var panels = document.querySelectorAll('.mmc-cc-panel');\n        tabs.forEach(function (tab) {\n            tab.addEventListener('click', function () {\n                tabs.forEach(function (t) { t.classList.remove('is-active'); t.setAttribute('aria-selected', 'false'); });\n                panels.forEach(function (p) { p.classList.remove('is-active'); });\n                tab.classList.add('is-active');\n                tab.setAttribute('aria-selected', 'true');\n                document.querySelector('.mmc-cc-panel[data-panel=\"' + tab.dataset.tab + '\"]').classList.add('is-active');\n            });\n        });\n\n        function ftToM(v) { return v * 0.3048; }\n        function ft2ToM2(v) { return v * 0.09290304; }\n\n        \/* ================= BRICK ================= *\/\n        var brickPresets = {\"sa_standard\":{\"label\":\"SA Standard (NBRI) brick\",\"region\":\"South Africa\",\"l\":222,\"w\":106,\"h\":73},\"sa_maxi\":{\"label\":\"SA Maxi brick\",\"region\":\"South Africa\",\"l\":290,\"w\":140,\"h\":90},\"uk_metric\":{\"label\":\"UK Standard (metric) brick\",\"region\":\"United Kingdom\",\"l\":215,\"w\":102.5,\"h\":65},\"us_modular\":{\"label\":\"US Modular brick\",\"region\":\"United States\",\"l\":194,\"w\":92,\"h\":57},\"us_standard\":{\"label\":\"US Standard brick\",\"region\":\"United States\",\"l\":203,\"w\":92,\"h\":57},\"custom\":{\"label\":\"Custom size\",\"region\":\"\",\"l\":222,\"w\":106,\"h\":73}};\n        var bLength = document.getElementById('b-length'), bLengthUnit = document.getElementById('b-length-unit');\n        var bHeight = document.getElementById('b-height'), bHeightUnit = document.getElementById('b-height-unit');\n        var bOpenings = document.getElementById('b-openings'), bOpeningsUnit = document.getElementById('b-openings-unit');\n        var bPreset = document.getElementById('b-preset'), bCustomWrap = document.getElementById('b-custom-dims');\n        var bCustomL = document.getElementById('b-custom-l'), bCustomW = document.getElementById('b-custom-w'), bCustomH = document.getElementById('b-custom-h');\n        var bSkin = document.getElementById('b-skin'), bJoint = document.getElementById('b-joint'), bWaste = document.getElementById('b-waste');\n        var bTotal = document.getElementById('b-total'), bBreakdown = document.getElementById('b-breakdown');\n\n        function bricksPerM2(lMm, hMm, jointMm) {\n            var faceArea = ((lMm + jointMm) \/ 1000) * ((hMm + jointMm) \/ 1000);\n            return faceArea > 0 ? 1 \/ faceArea : 0;\n        }\n        function brickCurrent() {\n            if (bPreset.value === 'custom') return { l: parseFloat(bCustomL.value) || 0, h: parseFloat(bCustomH.value) || 0 };\n            var p = brickPresets[bPreset.value];\n            return { l: p.l, h: p.h };\n        }\n        function calcBrick() {\n            var length = parseFloat(bLength.value) || 0, height = parseFloat(bHeight.value) || 0, openings = parseFloat(bOpenings.value) || 0;\n            var joint = parseFloat(bJoint.value) || 0, waste = parseFloat(bWaste.value) || 0, skins = parseInt(bSkin.value, 10) || 1;\n            if (bLengthUnit.value === 'ft') length = ftToM(length);\n            if (bHeightUnit.value === 'ft') height = ftToM(height);\n            if (bOpeningsUnit.value === 'ft2') openings = ft2ToM2(openings);\n            var netArea = Math.max(0, length * height - openings);\n            var brick = brickCurrent();\n            var perM2 = bricksPerM2(brick.l, brick.h, joint) * skins;\n            if (netArea <= 0 || perM2 <= 0) { bTotal.textContent = '\u2014'; bBreakdown.textContent = 'Enter a wall length and height to get started.'; return; }\n            var total = Math.ceil(netArea * perM2 * (1 + waste \/ 100));\n            bTotal.textContent = total.toLocaleString();\n            bBreakdown.textContent = netArea.toFixed(2) + ' m\u00b2 of wall \u00b7 ' + perM2.toFixed(1) + ' bricks\/m\u00b2 \u00b7 +' + waste + '% wastage';\n        }\n        bPreset.addEventListener('change', function () { bCustomWrap.style.display = bPreset.value === 'custom' ? 'flex' : 'none'; calcBrick(); });\n        [bLength, bLengthUnit, bHeight, bHeightUnit, bOpenings, bOpeningsUnit, bCustomL, bCustomW, bCustomH, bSkin, bJoint, bWaste].forEach(function (el) {\n            el.addEventListener('input', calcBrick); el.addEventListener('change', calcBrick);\n        });\n\n        \/* ================= PAINT ================= *\/\n        var pLength = document.getElementById('p-length'), pLengthUnit = document.getElementById('p-length-unit');\n        var pHeight = document.getElementById('p-height'), pHeightUnit = document.getElementById('p-height-unit');\n        var pOpenings = document.getElementById('p-openings'), pOpeningsUnit = document.getElementById('p-openings-unit');\n        var pType = document.getElementById('p-type'), pCoverage = document.getElementById('p-coverage'), pCoats = document.getElementById('p-coats');\n        var pTotal = document.getElementById('p-total'), pBreakdown = document.getElementById('p-breakdown'), pTins = document.getElementById('p-tins');\n\n        function calcPaint() {\n            var length = parseFloat(pLength.value) || 0, height = parseFloat(pHeight.value) || 0, openings = parseFloat(pOpenings.value) || 0;\n            var coverage = parseFloat(pCoverage.value) || 0, coats = parseFloat(pCoats.value) || 1;\n            if (pLengthUnit.value === 'ft') length = ftToM(length);\n            if (pHeightUnit.value === 'ft') height = ftToM(height);\n            if (pOpeningsUnit.value === 'ft2') openings = ft2ToM2(openings);\n            var netArea = Math.max(0, length * height - openings);\n            if (netArea <= 0 || coverage <= 0) { pTotal.textContent = '\u2014'; pBreakdown.textContent = 'Enter a wall length and height to get started.'; pTins.textContent = ''; return; }\n            var litres = (netArea * coats) \/ coverage;\n            pTotal.textContent = litres.toFixed(1);\n            pBreakdown.textContent = netArea.toFixed(2) + ' m\u00b2 \u00b7 ' + coats + ' coat(s) \u00b7 ' + coverage + ' m\u00b2\/L coverage';\n            var l20 = Math.floor(litres \/ 20), rem = litres - l20 * 20;\n            var l5 = Math.floor(rem \/ 5); rem -= l5 * 5;\n            var l1 = Math.ceil(rem);\n            var parts = [];\n            if (l20) parts.push(l20 + ' \u00d7 20L');\n            if (l5) parts.push(l5 + ' \u00d7 5L');\n            if (l1) parts.push(l1 + ' \u00d7 1L');\n            pTins.textContent = parts.length ? 'Roughly: ' + parts.join(' + ') + ' (round up to the tins your supplier stocks)' : '';\n        }\n        pType.addEventListener('change', function () {\n            var opt = pType.options[pType.selectedIndex];\n            pCoverage.value = opt.dataset.coverage;\n            calcPaint();\n        });\n        [pLength, pLengthUnit, pHeight, pHeightUnit, pOpenings, pOpeningsUnit, pCoverage, pCoats].forEach(function (el) {\n            el.addEventListener('input', calcPaint); el.addEventListener('change', calcPaint);\n        });\n\n        \/* ================= TILE ================= *\/\n        var tilePresets = {\"sq300\":{\"label\":\"300 \\u00d7 300 mm\",\"l\":300,\"w\":300},\"sq450\":{\"label\":\"450 \\u00d7 450 mm\",\"l\":450,\"w\":450},\"sq600\":{\"label\":\"600 \\u00d7 600 mm\",\"l\":600,\"w\":600},\"plank\":{\"label\":\"200 \\u00d7 1200 mm (plank)\",\"l\":1200,\"w\":200},\"subway\":{\"label\":\"100 \\u00d7 200 mm (subway\\\/brick)\",\"l\":200,\"w\":100},\"mosaic\":{\"label\":\"300 \\u00d7 300 mm (mosaic sheet)\",\"l\":300,\"w\":300},\"custom\":{\"label\":\"Custom size\",\"l\":600,\"w\":600}};\n        var tLength = document.getElementById('t-length'), tLengthUnit = document.getElementById('t-length-unit');\n        var tWidth = document.getElementById('t-width'), tWidthUnit = document.getElementById('t-width-unit');\n        var tPreset = document.getElementById('t-preset'), tCustomWrap = document.getElementById('t-custom-dims');\n        var tCustomL = document.getElementById('t-custom-l'), tCustomW = document.getElementById('t-custom-w');\n        var tPerBox = document.getElementById('t-per-box'), tWaste = document.getElementById('t-waste');\n        var tTotal = document.getElementById('t-total'), tBreakdown = document.getElementById('t-breakdown'), tBoxes = document.getElementById('t-boxes');\n\n        function tileCurrent() {\n            if (tPreset.value === 'custom') return { l: parseFloat(tCustomL.value) || 0, w: parseFloat(tCustomW.value) || 0 };\n            var t = tilePresets[tPreset.value];\n            return { l: t.l, w: t.w };\n        }\n        function calcTile() {\n            var length = parseFloat(tLength.value) || 0, width = parseFloat(tWidth.value) || 0, waste = parseFloat(tWaste.value) || 0;\n            if (tLengthUnit.value === 'ft') length = ftToM(length);\n            if (tWidthUnit.value === 'ft') width = ftToM(width);\n            var area = length * width;\n            var tile = tileCurrent();\n            var tileAreaM2 = (tile.l \/ 1000) * (tile.w \/ 1000);\n            if (area <= 0 || tileAreaM2 <= 0) { tTotal.textContent = '\u2014'; tBreakdown.textContent = 'Enter the room length and width to get started.'; tBoxes.textContent = ''; return; }\n            var total = Math.ceil((area \/ tileAreaM2) * (1 + waste \/ 100));\n            tTotal.textContent = total.toLocaleString();\n            tBreakdown.textContent = area.toFixed(2) + ' m\u00b2 \u00b7 ' + tile.l + '\u00d7' + tile.w + 'mm tile \u00b7 +' + waste + '% wastage';\n            var perBox = parseFloat(tPerBox.value) || 0;\n            tBoxes.textContent = perBox > 0 ? 'That\\'s ' + Math.ceil(total \/ perBox) + ' box(es) at ' + perBox + ' tiles\/box' : '';\n        }\n        tPreset.addEventListener('change', function () { tCustomWrap.style.display = tPreset.value === 'custom' ? 'flex' : 'none'; calcTile(); });\n        [tLength, tLengthUnit, tWidth, tWidthUnit, tCustomL, tCustomW, tPerBox, tWaste].forEach(function (el) {\n            el.addEventListener('input', calcTile); el.addEventListener('change', calcTile);\n        });\n\n        \/* ================= CEMENT ================= *\/\n        var cApplication = document.getElementById('c-application');\n        var cLength = document.getElementById('c-length'), cWidth = document.getElementById('c-width'), cDepth = document.getElementById('c-depth');\n        var cArea = document.getElementById('c-area'), cThickness = document.getElementById('c-thickness');\n        var cBagsize = document.getElementById('c-bagsize');\n        var cBags = document.getElementById('c-bags'), cBreakdown = document.getElementById('c-breakdown'), cMaterials = document.getElementById('c-materials');\n        var volumeFields = document.querySelectorAll('.mmc-c-volume-mode'), areaFields = document.querySelectorAll('.mmc-c-area-mode');\n\n        var CEMENT_DENSITY = 1440; \/\/ kg per m3\n        var SAND_DENSITY = 1600;   \/\/ kg per m3\n        var STONE_DENSITY = 1550;  \/\/ kg per m3\n        var DRY_FACTOR = 1.54;     \/\/ wet-to-dry volume allowance\n\n        function toggleCementMode() {\n            var opt = cApplication.options[cApplication.selectedIndex];\n            var mode = opt.dataset.mode;\n            volumeFields.forEach(function (el) { el.style.display = mode === 'volume' ? 'flex' : 'none'; });\n            areaFields.forEach(function (el) { el.style.display = mode === 'area' ? 'flex' : 'none'; });\n            calcCement();\n        }\n\n        function calcCement() {\n            var opt = cApplication.options[cApplication.selectedIndex];\n            var cementParts = parseFloat(opt.dataset.cement) || 1;\n            var sandParts = parseFloat(opt.dataset.sand) || 0;\n            var stoneParts = parseFloat(opt.dataset.stone) || 0;\n            var mode = opt.dataset.mode;\n            var bagKg = parseFloat(cBagsize.value) || 50;\n\n            var wetVolume;\n            if (mode === 'volume') {\n                var l = parseFloat(cLength.value) || 0, w = parseFloat(cWidth.value) || 0, d = (parseFloat(cDepth.value) || 0) \/ 1000;\n                wetVolume = l * w * d;\n            } else {\n                var a = parseFloat(cArea.value) || 0, t = (parseFloat(cThickness.value) || 0) \/ 1000;\n                wetVolume = a * t;\n            }\n\n            if (wetVolume <= 0) { cBags.textContent = '\u2014'; cBreakdown.textContent = 'Enter your measurements to get started.'; cMaterials.textContent = ''; return; }\n\n            var dryVolume = wetVolume * DRY_FACTOR;\n            var totalParts = cementParts + sandParts + stoneParts;\n            var cementVolume = dryVolume * (cementParts \/ totalParts);\n            var sandVolume = dryVolume * (sandParts \/ totalParts);\n            var stoneVolume = dryVolume * (stoneParts \/ totalParts);\n\n            var cementKg = cementVolume * CEMENT_DENSITY;\n            var bags = Math.ceil(cementKg \/ bagKg);\n            var sandKg = sandVolume * SAND_DENSITY;\n            var stoneKg = stoneVolume * STONE_DENSITY;\n\n            cBags.textContent = bags.toLocaleString();\n            cBreakdown.textContent = wetVolume.toFixed(3) + ' m\u00b3 volume \u00b7 ' + opt.textContent;\n            var materials = 'Sand: ~' + (sandKg \/ 1000).toFixed(2) + ' t';\n            if (stoneParts > 0) materials += ' \u00b7 Stone: ~' + (stoneKg \/ 1000).toFixed(2) + ' t';\n            cMaterials.textContent = materials;\n        }\n\n        cApplication.addEventListener('change', toggleCementMode);\n        [cLength, cWidth, cDepth, cArea, cThickness, cBagsize].forEach(function (el) {\n            el.addEventListener('input', calcCement); el.addEventListener('change', calcCement);\n        });\n\n        \/* ---------- INIT ---------- *\/\n        calcBrick();\n        calcPaint();\n        calcTile();\n        toggleCementMode();\n    })();\n    <\/script>\n    \n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-320","page","type-page","status-publish"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Construction Calculations - millimeters.to<\/title>\n<meta name=\"description\" content=\"Free construction calculators: how many bricks, how much paint, how many tiles, and how much cement, sand and stone you need for concrete, mortar, plaster or screed.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/millimeters.to\/es\/construction-calculators\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Construction Calculations - millimeters.to\" \/>\n<meta property=\"og:description\" content=\"Free construction calculators: how many bricks, how much paint, how many tiles, and how much cement, sand and stone you need for concrete, mortar, plaster or screed.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/millimeters.to\/es\/construction-calculators\/\" \/>\n<meta property=\"og:site_name\" content=\"millimeters.to\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-22T15:29:51+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/millimeters.to\\\/construction-calculators\\\/\",\"url\":\"https:\\\/\\\/millimeters.to\\\/construction-calculators\\\/\",\"name\":\"Construction Calculations - millimeters.to\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/millimeters.to\\\/#website\"},\"datePublished\":\"2026-09-22T15:29:50+00:00\",\"dateModified\":\"2026-09-22T15:29:51+00:00\",\"description\":\"Free construction calculators: how many bricks, how much paint, how many tiles, and how much cement, sand and stone you need for concrete, mortar, plaster or screed.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/millimeters.to\\\/construction-calculators\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/millimeters.to\\\/construction-calculators\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/millimeters.to\\\/construction-calculators\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/millimeters.to\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Construction Calculations\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/millimeters.to\\\/#website\",\"url\":\"https:\\\/\\\/millimeters.to\\\/\",\"name\":\"millimeters.to\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/millimeters.to\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Construction Calculations - millimeters.to","description":"Free construction calculators: how many bricks, how much paint, how many tiles, and how much cement, sand and stone you need for concrete, mortar, plaster or screed.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/millimeters.to\/es\/construction-calculators\/","og_locale":"es_ES","og_type":"article","og_title":"Construction Calculations - millimeters.to","og_description":"Free construction calculators: how many bricks, how much paint, how many tiles, and how much cement, sand and stone you need for concrete, mortar, plaster or screed.","og_url":"https:\/\/millimeters.to\/es\/construction-calculators\/","og_site_name":"millimeters.to","article_modified_time":"2026-09-22T15:29:51+00:00","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/millimeters.to\/construction-calculators\/","url":"https:\/\/millimeters.to\/construction-calculators\/","name":"Construction Calculations - millimeters.to","isPartOf":{"@id":"https:\/\/millimeters.to\/#website"},"datePublished":"2026-09-22T15:29:50+00:00","dateModified":"2026-09-22T15:29:51+00:00","description":"Free construction calculators: how many bricks, how much paint, how many tiles, and how much cement, sand and stone you need for concrete, mortar, plaster or screed.","breadcrumb":{"@id":"https:\/\/millimeters.to\/construction-calculators\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/millimeters.to\/construction-calculators\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/millimeters.to\/construction-calculators\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/millimeters.to\/"},{"@type":"ListItem","position":2,"name":"Construction Calculations"}]},{"@type":"WebSite","@id":"https:\/\/millimeters.to\/#website","url":"https:\/\/millimeters.to\/","name":"millimeters.to","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/millimeters.to\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"}]}},"_hostinger_reach_plugin_has_subscription_block":false,"_hostinger_reach_plugin_is_elementor":false,"_links":{"self":[{"href":"https:\/\/millimeters.to\/es\/wp-json\/wp\/v2\/pages\/320","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/millimeters.to\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/millimeters.to\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/millimeters.to\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/millimeters.to\/es\/wp-json\/wp\/v2\/comments?post=320"}],"version-history":[{"count":1,"href":"https:\/\/millimeters.to\/es\/wp-json\/wp\/v2\/pages\/320\/revisions"}],"predecessor-version":[{"id":321,"href":"https:\/\/millimeters.to\/es\/wp-json\/wp\/v2\/pages\/320\/revisions\/321"}],"wp:attachment":[{"href":"https:\/\/millimeters.to\/es\/wp-json\/wp\/v2\/media?parent=320"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}