{"id":322,"date":"2025-09-22T00:56:19","date_gmt":"2025-09-22T00:56:19","guid":{"rendered":"https:\/\/topsoiltippers.co.za\/?post_type=product&#038;p=322"},"modified":"2026-04-25T20:23:44","modified_gmt":"2026-04-25T20:23:44","slug":"plastersand","status":"publish","type":"product","link":"https:\/\/topsoiltippers.co.za\/af\/shop\/plastersand\/","title":{"rendered":"Pleistersand \u2013 Gesif vir Gladde Pleisterwerk"},"content":{"rendered":"<p><strong>The Secret to Perfectly Smooth Walls.<\/strong><\/p>\n<p>You can lay bricks with almost any sand, but you can only plaster with the right sand. Our <strong>Plaster Sand<\/strong> is a carefully sourced pit sand that strikes the perfect balance: it is fine enough to create a sleek, smooth finish, but has enough &#8220;body&#8221; (fines) to stick to the wall without sliding off.<\/p>\n<p><strong>Why Contractors Trust Our Plaster Sand:<\/strong><\/p>\n<p><strong>Consistent Texture:<\/strong> We ensure our sand is screened to remove stones and lumps. This means no &#8220;drag marks&#8221; in your plaster when you are floating the wall.<br \/>\n<strong>Workability: <\/strong>It creates a creamy, buttery mortar mix that spreads easily, reducing arm fatigue for the plasterer.<br \/>\n<strong>Better Paint Finish:<\/strong> A smoother plaster job means a better looking paint job later on.<\/p>\n<p><strong>Application Guide:<\/strong><\/p>\n<p><strong>Internal Walls:<\/strong> Ideal for the final &#8220;skim&#8221; or standard float plaster.<br \/>\n<strong>External Rendering:<\/strong> durable enough for outside walls.<br \/>\n<strong>Mixing:<\/strong> A common ratio for plaster is 6 parts sand to 1 part cement (always check your cement bag for specific strength requirements).<\/p>\n<p><strong>Delivery:<\/strong> We deliver bulk loads of Plaster Sand, ensuring renovations in Pretoria East.<\/p>\n<p><strong>Common Questions:<\/strong><\/p>\n<p><strong>Why is my plaster cracking?<\/strong> Cracking is often caused by using sand that is &#8220;too clean&#8221; (River Sand) which lacks cohesiveness, or by the plaster drying too fast in the sun. Our Plaster Sand has the right clay content to help bind the mix and reduce shrinkage cracks.<br \/>\n<strong>Can I use River Sand for plastering?<\/strong> Generally, no. River Sand is too coarse and &#8220;sharp.&#8221; It is difficult to get a smooth finish with it, and it tends to fall off the wall (it lacks stickiness). River Sand is for concrete; Plaster Sand is for walls.<br \/>\n<strong>How much sand do I need for a room? <\/strong>Plastering uses less sand than bricklaying. As a rough guide, 1 cubic meter of sand covers approximately 40-50 square meters of wall (at a standard 15mm thickness).<\/p>\n<p><strong>Disclaimer:<\/strong> At Topsoil Tippers, we strive to ensure that the products you receive match the images and descriptions provided. However, as our materials are sourced from various suppliers, there may be slight variations in color, texture, and composition. Rest assured, we exercise the utmost care to provide products that meet your expectations and are as close to the pictures as possible. Let us help you bring your projects to life with quality products and exceptional service!<\/p>","protected":false},"excerpt":{"rendered":"<p style=\"margin-bottom: 15px;\">\n    <strong style=\"color: #25D366; font-size: 22px;\">\ud83d\udc47 Scroll down to calculate required quantities or ADD TO BASKET<\/strong>\n<\/p>\n<p>The essential sand for the perfect finish. A fine-textured, screened pit sand designed for plastering internal and external walls. Easy to float and minimizes cracking.<br \/>\n<style>\r\n    .ts-vol-calc-wrapper * { box-sizing: border-box; }\r\n    .ts-vol-calc-wrapper input[type=\"number\"] { margin-bottom: 0 !important; box-shadow: none !important; border: 1px solid #ccc !important; background: #fff !important; height: 45px !important; }\r\n    .vis-stage-vol { height: 240px; display: flex; align-items: center; justify-content: center; background: #fafafa; border: 1px inset #eaeaea; border-radius: 8px; margin-bottom: 20px; overflow: hidden; perspective: 800px; }\r\n    .shape-m3 { position: relative; width: 0px; height: 0px; transform-style: preserve-3d; transform: rotateX(-20deg) rotateY(-40deg); transition: all 0.4s ease; opacity: 0; }\r\n    .cube-face { position: absolute; border: 2px solid #8b6b3d; top: 0; left: 0; transition: all 0.4s ease; transform-style: preserve-3d; }\r\n    .cube-top { background: rgba(225, 200, 150, 0.85); }\r\n    .cube-front { background: rgba(200, 170, 120, 0.95); }\r\n    .cube-right { background: rgba(180, 150, 100, 0.9); }\r\n    .dim-badge-vol { position: absolute; background: rgba(255, 255, 255, 0.95); padding: 5px 8px; border-radius: 4px; font-size: 14px; font-weight: 800; box-shadow: 0 2px 5px rgba(0,0,0,0.15); border: 1px solid rgba(0,0,0,0.1); white-space: nowrap; pointer-events: none; color: #8b6b3d;}\r\n<\/style>\r\n\r\n<div class=\"ts-vol-calc-wrapper\" style=\"background: #ffffff; padding: 25px; border-radius: 12px; border: 1px solid #e0e0e0; box-shadow: 0 4px 15px rgba(0,0,0,0.05); color: #333; margin-bottom: 20px;\">\r\n    <h3 style=\"color: #2d5a27; margin-top: 0; font-size: 18px; margin-bottom: 15px; font-weight: bold;\">Calculate How Much You Need<\/h3>\r\n\r\n    <div class=\"vis-stage-vol\">\r\n        <div class=\"shape-m3\">\r\n            <div class=\"cube-top cube-face\"><\/div>\r\n            <div class=\"cube-front cube-face\">\r\n                <div class=\"badge-3d-w dim-badge-vol\" style=\"bottom: -32px; left: 50%; transform: translateX(-50%);\"><\/div>\r\n                <div class=\"badge-3d-d dim-badge-vol\" style=\"left: -65px; top: 50%; transform: translateY(-50%);\"><\/div>\r\n            <\/div>\r\n            <div class=\"cube-right cube-face\">\r\n                <div class=\"badge-3d-l dim-badge-vol\" style=\"bottom: -32px; left: 50%; transform: translateX(-50%);\"><\/div>\r\n            <\/div>\r\n        <\/div>\r\n        <span class=\"placeholder-vol\" style=\"color: #aaa; font-size: 14px; font-style: italic;\">Enter dimensions to visualise...<\/span>\r\n    <\/div>\r\n\r\n    <div style=\"display: flex; gap: 15px; margin-bottom: 15px;\">\r\n        <div style=\"flex: 1;\">\r\n            <label style=\"font-size: 14px; font-weight: 600; color: #444; display: block; margin-bottom: 6px;\">Length (metre)<\/label>\r\n            <input type=\"number\" class=\"vol-length\" placeholder=\"0\" style=\"width: 100%; padding: 12px; border-radius: 6px;\">\r\n        <\/div>\r\n        <div style=\"flex: 1;\">\r\n            <label style=\"font-size: 14px; font-weight: 600; color: #444; display: block; margin-bottom: 6px;\">Width (metre)<\/label>\r\n            <input type=\"number\" class=\"vol-width\" placeholder=\"0\" style=\"width: 100%; padding: 12px; border-radius: 6px;\">\r\n        <\/div>\r\n    <\/div>\r\n    <div style=\"margin-bottom: 20px;\">\r\n        <label style=\"font-size: 14px; font-weight: 600; color: #444; display: block; margin-bottom: 6px;\">Desired Depth (millimetre)<\/label>\r\n        <input type=\"number\" class=\"vol-depth\" placeholder=\"e.g. 50\" style=\"width: 100%; padding: 12px; border-radius: 6px;\">\r\n        <p style=\"font-size: 12px; color: #666; margin: 6px 0 0 0; font-style: italic;\">Recommended: 30mm for dressing, 50mm-100mm for beds.<\/p>\r\n    <\/div>\r\n\r\n    <div style=\"background: #f4f8f4; border: 2px solid #2d5a27; padding: 20px; border-radius: 8px; text-align: center;\">\r\n        <span style=\"font-size: 14px; color: #2d5a27; font-weight: 600;\">Order Quantity Updated To:<\/span><br>\r\n        <strong style=\"font-size: 36px; color: #2d5a27; display: block; margin: 5px 0;\"><span class=\"vol-result\">0<\/span> m\u00b3<\/strong>\r\n        \r\n        <p style=\"font-size: 12px; margin: 5px 0 0 0; color: #555;\">(<strong style=\"color: #cc0000;\">Minimum order: 1m\u00b3<\/strong>) &bull; <em>Calculations are rounded up to the next full cubic metre.<\/em><\/p>\r\n    <\/div>\r\n<\/div>\r\n\r\n<script>\r\nsetInterval(function() {\r\n    const wrappers = document.querySelectorAll('.ts-vol-calc-wrapper');\r\n    wrappers.forEach(function(wrapper) {\r\n        const inputL = wrapper.querySelector('.vol-length');\r\n        const inputW = wrapper.querySelector('.vol-width');\r\n        const inputD = wrapper.querySelector('.vol-depth');\r\n        if (!inputL || !inputW || !inputD) return;\r\n\r\n        const currL = inputL.value;\r\n        const currW = inputW.value;\r\n        const currD = inputD.value;\r\n\r\n        if (wrapper.dataset.lastL !== currL || wrapper.dataset.lastW !== currW || wrapper.dataset.lastD !== currD) {\r\n            wrapper.dataset.lastL = currL;\r\n            wrapper.dataset.lastW = currW;\r\n            wrapper.dataset.lastD = currD;\r\n\r\n            const l = parseFloat(currL) || 0;\r\n            const w = parseFloat(currW) || 0;\r\n            const d = parseFloat(currD) || 0;\r\n            let total = 0;\r\n\r\n            const shape = wrapper.querySelector('.shape-m3');\r\n            const placeholder = wrapper.querySelector('.placeholder-vol');\r\n            const cTop = wrapper.querySelector('.cube-top');\r\n            const cFront = wrapper.querySelector('.cube-front');\r\n            const cRight = wrapper.querySelector('.cube-right');\r\n            const badgeW = wrapper.querySelector('.badge-3d-w');\r\n            const badgeL = wrapper.querySelector('.badge-3d-l');\r\n            const badgeD = wrapper.querySelector('.badge-3d-d');\r\n\r\n            if (l > 0 && w > 0 && d > 0) {\r\n                if(placeholder) placeholder.style.display = 'none';\r\n                if(shape) shape.style.opacity = '1';\r\n                \r\n                \/\/ Calculates the volume and forces it to round up to the next absolute whole number\r\n                let calculatedVol = Math.ceil(l * w * (d \/ 1000));\r\n                \r\n                \/\/ Forces minimum order constraint\r\n                total = Math.max(1, calculatedVol); \r\n                \r\n                const maxDim = Math.max(l, w);\r\n                const visW = Math.max((w \/ maxDim) * 90, 30); \r\n                const visL = Math.max((l \/ maxDim) * 90, 30); \r\n                const visD = Math.max((d \/ 1000) * 30, 20); \r\n\r\n                if(cTop) {\r\n                    cTop.style.width = visW + 'px';\r\n                    cTop.style.height = visL + 'px';\r\n                    cTop.style.transform = `translate(-50%, -50%) rotateX(90deg) translateZ(${visD \/ 2}px)`;\r\n                }\r\n                if(cFront) {\r\n                    cFront.style.width = visW + 'px';\r\n                    cFront.style.height = visD + 'px';\r\n                    cFront.style.transform = `translate(-50%, -50%) translateZ(${visL \/ 2}px)`;\r\n                }\r\n                if(cRight) {\r\n                    cRight.style.width = visL + 'px';\r\n                    cRight.style.height = visD + 'px';\r\n                    cRight.style.transform = `translate(-50%, -50%) rotateY(90deg) translateZ(${visW \/ 2}px)`;\r\n                }\r\n\r\n                if(badgeW) badgeW.innerText = w + \"m\";\r\n                if(badgeL) badgeL.innerText = l + \"m\";\r\n                if(badgeD) {\r\n                    if(d > 0) { badgeD.style.display = 'block'; badgeD.innerText = d + \"mm\"; }\r\n                    else { badgeD.style.display = 'none'; }\r\n                }\r\n\r\n                document.querySelectorAll('form.cart input.qty').forEach(function(qty) {\r\n                    if(qty.value != total) {\r\n                        qty.value = total;\r\n                        qty.dispatchEvent(new Event('input', {bubbles: true}));\r\n                        qty.dispatchEvent(new Event('change', {bubbles: true}));\r\n                    }\r\n                });\r\n            } else {\r\n                if(placeholder) placeholder.style.display = 'block';\r\n                if(shape) shape.style.opacity = '0';\r\n            }\r\n            \r\n            wrapper.querySelector('.vol-result').innerText = total;\r\n\r\n            document.querySelectorAll('.vol-length').forEach(function(inp) { if(inp.value !== currL) inp.value = currL; });\r\n            document.querySelectorAll('.vol-width').forEach(function(inp) { if(inp.value !== currW) inp.value = currW; });\r\n            document.querySelectorAll('.vol-depth').forEach(function(inp) { if(inp.value !== currD) inp.value = currD; });\r\n            document.querySelectorAll('.vol-result').forEach(function(res) { res.innerText = total; });\r\n        }\r\n    });\r\n}, 250);\r\n<\/script>\n","protected":false},"featured_media":325,"comment_status":"open","ping_status":"closed","template":"","meta":{"_joinchat":[]},"product_brand":[],"product_cat":[21],"product_tag":[],"class_list":{"0":"post-322","1":"product","2":"type-product","3":"status-publish","4":"has-post-thumbnail","6":"product_cat-building-materials","8":"first","9":"instock","10":"shipping-taxable","11":"purchasable","12":"product-type-simple"},"_links":{"self":[{"href":"https:\/\/topsoiltippers.co.za\/af\/wp-json\/wp\/v2\/product\/322","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/topsoiltippers.co.za\/af\/wp-json\/wp\/v2\/product"}],"about":[{"href":"https:\/\/topsoiltippers.co.za\/af\/wp-json\/wp\/v2\/types\/product"}],"replies":[{"embeddable":true,"href":"https:\/\/topsoiltippers.co.za\/af\/wp-json\/wp\/v2\/comments?post=322"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/topsoiltippers.co.za\/af\/wp-json\/wp\/v2\/media\/325"}],"wp:attachment":[{"href":"https:\/\/topsoiltippers.co.za\/af\/wp-json\/wp\/v2\/media?parent=322"}],"wp:term":[{"taxonomy":"product_brand","embeddable":true,"href":"https:\/\/topsoiltippers.co.za\/af\/wp-json\/wp\/v2\/product_brand?post=322"},{"taxonomy":"product_cat","embeddable":true,"href":"https:\/\/topsoiltippers.co.za\/af\/wp-json\/wp\/v2\/product_cat?post=322"},{"taxonomy":"product_tag","embeddable":true,"href":"https:\/\/topsoiltippers.co.za\/af\/wp-json\/wp\/v2\/product_tag?post=322"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}