{"id":2471,"date":"2026-10-03T10:40:09","date_gmt":"2026-10-03T10:40:09","guid":{"rendered":"https:\/\/patsecuritysolutions.co.ke\/shop\/?page_id=2471"},"modified":"2026-10-03T10:54:20","modified_gmt":"2026-10-03T10:54:20","slug":"electric-fence-cost-calculator","status":"publish","type":"page","link":"https:\/\/patsecuritysolutions.co.ke\/shop\/electric-fence-cost-calculator\/","title":{"rendered":"Electric Fence Cost Calculator"},"content":{"rendered":"\n<style>\n.efc{--efc-ink:#1f2a30;--efc-steel:#5e6a72;--efc-line:#d5dadd;--efc-panel:#f1f3f4;--efc-paper:#ffffff;--efc-hazard:#f2c200;--efc-hazard-ink:#3a2f00;\n  color:var(--efc-ink);background:var(--efc-paper);border:1px solid var(--efc-line);border-radius:6px;max-width:1040px;margin:0 auto;font-size:16px;line-height:1.45;overflow:hidden}\n.efc *{box-sizing:border-box}\n.efc-head{padding:22px 24px 0}\n.efc-head h2{margin:0 0 4px;font-size:1.6em;line-height:1.2;color:var(--efc-ink)}\n.efc-head p{margin:0;color:var(--efc-steel);max-width:60ch}\n.efc-diagram{display:block;width:100%;height:auto;margin-top:14px;background:var(--efc-panel);border-top:1px solid var(--efc-line);border-bottom:4px solid var(--efc-hazard)}\n.efc-body{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr)}\n.efc-inputs{padding:22px 24px;border-right:1px solid var(--efc-line)}\n.efc-result{padding:22px 24px;background:var(--efc-paper)}\n.efc-field{margin-bottom:14px}\n.efc-field label,.efc-check{display:block;font-weight:600;font-size:.92em;margin-bottom:5px}\n.efc-field small{display:block;color:var(--efc-steel);font-size:.82em;margin-top:3px}\n.efc-field input[type=number],.efc-field select{width:100%;padding:10px 11px;font:inherit;color:var(--efc-ink);background:#fff;border:1px solid #aab2b7;border-radius:4px;min-height:44px}\n.efc-field input:focus-visible,.efc-field select:focus-visible,.efc-btn:focus-visible,.efc-check input:focus-visible{outline:3px solid var(--efc-hazard);outline-offset:1px;border-color:var(--efc-ink)}\n.efc-pair{display:grid;grid-template-columns:1fr 1fr;gap:12px}\n.efc-check{font-weight:500;display:flex;gap:9px;align-items:flex-start;margin-bottom:9px;cursor:pointer}\n.efc-check input{width:18px;height:18px;margin-top:2px;accent-color:var(--efc-ink);flex:none}\n.efc-result h3{margin:0 0 10px;font-size:1.1em;color:var(--efc-ink)}\n.efc-scroll{overflow-x:auto}\n.efc-table{width:100%;border-collapse:collapse;font-size:.92em;font-variant-numeric:tabular-nums}\n.efc-table th{text-align:left;font-weight:600;color:var(--efc-steel);padding:6px 8px;border-bottom:2px solid var(--efc-ink);white-space:nowrap}\n.efc-table td{padding:8px;border-bottom:1px solid var(--efc-line);vertical-align:top}\n.efc-table .efc-num{text-align:right;white-space:nowrap}\n.efc-total{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-top:14px;padding:14px 16px;background:var(--efc-hazard);color:var(--efc-hazard-ink);border-radius:4px;font-weight:700}\n.efc-total strong{font-size:1.55em;font-variant-numeric:tabular-nums;white-space:nowrap}\n.efc-note{color:var(--efc-steel);font-size:.84em;margin:10px 0 14px}\n.efc-actions{display:flex;flex-wrap:wrap;gap:10px}\n.efc-btn{display:inline-block;padding:11px 16px;font:inherit;font-weight:600;border-radius:4px;border:2px solid var(--efc-ink);background:var(--efc-ink);color:#fff;cursor:pointer;text-decoration:none;min-height:44px}\n.efc-btn.efc-ghost{background:transparent;color:var(--efc-ink)}\n.efc-btn:hover{opacity:.88}\n.efc-empty{padding:18px;background:var(--efc-panel);border-radius:4px;color:var(--efc-steel)}\n@media (max-width:760px){.efc-body{grid-template-columns:1fr}.efc-inputs{border-right:0;border-bottom:1px solid var(--efc-line)}.efc-head,.efc-inputs,.efc-result{padding-left:16px;padding-right:16px}}\n<\/style>\n\n<div class=\"efc\" id=\"efc\">\n  <div class=\"efc-head\">\n    <h2>Electric fence materials calculator<\/h2>\n    <p>Enter the length of your fence and how many wire strands you want. The list and total update as you type.<\/p>\n  <\/div>\n  <svg class=\"efc-diagram\" id=\"efc-svg\" viewBox=\"0 0 600 170\" aria-hidden=\"true\"><\/svg>\n\n  <div class=\"efc-body\">\n    <div class=\"efc-inputs\">\n      <div class=\"efc-field\">\n        <label for=\"efc-length\">Fence length (metres)<\/label>\n        <input type=\"number\" id=\"efc-length\" min=\"1\" step=\"1\" value=\"100\" inputmode=\"decimal\">\n        <small>Measure all the way round the area you want to fence.<\/small>\n      <\/div>\n      <div class=\"efc-pair\">\n        <div class=\"efc-field\">\n          <label for=\"efc-strands\">Wire strands<\/label>\n          <input type=\"number\" id=\"efc-strands\" min=\"1\" max=\"30\" step=\"1\" value=\"8\" inputmode=\"numeric\">\n        <\/div>\n        <div class=\"efc-field\">\n          <label for=\"efc-corners\">Corners<\/label>\n          <input type=\"number\" id=\"efc-corners\" min=\"0\" step=\"1\" value=\"4\" inputmode=\"numeric\">\n        <\/div>\n      <\/div>\n      <div class=\"efc-pair\">\n        <div class=\"efc-field\">\n          <label for=\"efc-gates\">Gates<\/label>\n          <input type=\"number\" id=\"efc-gates\" min=\"0\" step=\"1\" value=\"1\" inputmode=\"numeric\">\n        <\/div>\n        <div class=\"efc-field\">\n          <label for=\"efc-gatetype\">Type of gate<\/label>\n          <select id=\"efc-gatetype\">\n            <option value=\"swing\">Swing gate<\/option>\n            <option value=\"sliding\">Sliding gate<\/option>\n          <\/select>\n        <\/div>\n      <\/div>\n      <div class=\"efc-field\">\n        <label for=\"efc-wire\">Wire<\/label>\n        <select id=\"efc-wire\"><\/select>\n      <\/div>\n      <div class=\"efc-field\">\n        <label for=\"efc-razor\">Razor wire<\/label>\n        <select id=\"efc-razor\"><\/select>\n      <\/div>\n      <div class=\"efc-field\">\n        <label for=\"efc-energizer\">Energizer<\/label>\n        <select id=\"efc-energizer\"><\/select>\n      <\/div>\n      <label class=\"efc-check\"><input type=\"checkbox\" id=\"efc-siren\" checked> Siren kit<\/label>\n      <label class=\"efc-check\"><input type=\"checkbox\" id=\"efc-arrestor\" checked> Lightning arrestor<\/label>\n    <\/div>\n\n    <div class=\"efc-result\" aria-live=\"polite\">\n      <h3>Your materials list<\/h3>\n      <div id=\"efc-out\"><\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<script>\n(function () {\n  \/* ====== EDIT PRICES AND RULES HERE ====== *\/\n  var CFG = {\n    currency: \"KSh\",\n    whatsapp: \"254714847183\",            \/\/ e.g. \"254712345678\" (no + sign). Leave empty to hide the WhatsApp button.\n    shopUrl: \"https:\/\/patsecuritysolutions.co.ke\/shop\/razor-wire-and-electric-fence\/\",\n    waste: 1.05,             \/\/ 5% extra wire for joins and tensioning\n    rollLength: 1200,        \/\/ metres of wire per roll\n    postSpacing: 3,          \/\/ metres between W posts\n    supportsPerCorner: 2,    \/\/ support posts per corner post\n    strainersPerCorner: 2,   \/\/ strainer insulators per strand at each corner\n    razorStretch: 9,         \/\/ metres covered by one roll of razor wire\n    signEvery: 5,            \/\/ one warning sign every X metres\n    earthRods: 3,            \/\/ copper earth rods per installation\n    wires: [\n      { name: \"1.6mm galvanized HT wire, 1,200 m roll\", price: 6200 },\n      { name: \"2.5mm galvanized HT wire, 1,200 m roll\", price: 13000 }\n    ],\n    razors: [\n      { name: \"None\", price: 0 },\n      { name: \"Silver razor wire\", price: 1400 },\n      { name: \"Green razor wire\", price: 2000 }\n    ],\n    energizers: [\n      { name: \"Hammer EZ 630\", price: 13800 },\n      { name: \"Hammer EZ 640\", price: 15500 },\n      { name: \"Hammer EZ 680\", price: 30000 },\n      { name: \"Nemtek Wizord 2\", price: 21000 },\n      { name: \"Nemtek Wizord 4i\", price: 24000 },\n      { name: \"Nemtek Merlin 4i\", price: 29000 },\n      { name: \"Nemtek Druid 13\", price: 21000 },\n      { name: \"Nemtek Druid 15\", price: 23500 },\n      { name: \"Nemtek Druid 18\", price: 40000 },\n      { name: \"Nemtek Druid 114\", price: 55000 },\n      { name: \"JVA QT13\", price: 18000 },\n      { name: \"JVA Z13\", price: 30000 },\n      { name: \"JVA Z14\", price: 38000 },\n      { name: \"JVA Z18\", price: 48000 },\n      { name: \"JVA Z28 2 zone\", price: 53000 },\n      { name: \"I already have an energizer\", price: 0 }\n    ],\n    defaultEnergizer: 6,\n    price: {\n      wPost: 250,        \/\/ W posts (W insulators included), each\n      cornerPost: 150,   \/\/ corner posts, each\n      supportPost: 140,  \/\/ corner support posts, each\n      strainer: 8,       \/\/ strainer insulators, each\n      sign: 100,         \/\/ warning signs, each\n      earthRod: 150,     \/\/ copper earth rods, each\n      gateContact: 6000, \/\/ gate contact for a sliding gate, each\n      cable: 1200,       \/\/ undergate \/ lead-out cable, 50 m roll\n      alarmCable: 1200,  \/\/ 4 core alarm cable\n      siren: 2500,       \/\/ siren kit\n      arrestor: 2500     \/\/ lightning arrestor\n    }\n  };\n  \/* ====== END OF SETTINGS ====== *\/\n\n  var $ = function (id) { return document.getElementById(id); };\n  var fmt = function (n) { return CFG.currency + \" \" + Math.round(n).toLocaleString(\"en-KE\"); };\n  var num = function (id, min) { var v = parseFloat($(id).value); return isNaN(v) ? NaN : Math.max(min, v); };\n\n  function fill(id, list, selected) {\n    var el = $(id);\n    list.forEach(function (o, i) {\n      var opt = document.createElement(\"option\");\n      opt.value = i;\n      opt.textContent = o.price ? o.name + \" (\" + fmt(o.price) + \")\" : o.name;\n      if (i === selected) opt.selected = true;\n      el.appendChild(opt);\n    });\n  }\n  fill(\"efc-wire\", CFG.wires, 0);\n  fill(\"efc-razor\", CFG.razors, 0);\n  fill(\"efc-energizer\", CFG.energizers, CFG.defaultEnergizer);\n\n  function draw(strands) {\n    var n = Math.min(Math.max(strands || 1, 1), 30), top = 26, bottom = 122, xs = [44, 215, 386, 557], s = \"\";\n    s += '<line x1=\"0\" y1=\"140\" x2=\"600\" y2=\"140\" stroke=\"#5e6a72\" stroke-width=\"2\"\/>';\n    for (var i = 0; i < n; i++) {\n      var y = n === 1 ? (top + bottom) \/ 2 : top + (bottom - top) * i \/ (n - 1);\n      s += '<line x1=\"0\" y1=\"' + y.toFixed(1) + '\" x2=\"600\" y2=\"' + y.toFixed(1) + '\" stroke=\"#5e6a72\" stroke-width=\"1.2\"\/>';\n    }\n    xs.forEach(function (x) { s += '<rect x=\"' + (x - 3) + '\" y=\"14\" width=\"6\" height=\"126\" fill=\"#1f2a30\"\/>'; });\n    s += '<rect x=\"278\" y=\"56\" width=\"46\" height=\"34\" rx=\"2\" fill=\"#f2c200\" stroke=\"#1f2a30\" stroke-width=\"1.5\"\/>';\n    s += '<path d=\"M303 61l-9 14h7l-3 10 10-15h-7z\" fill=\"#1f2a30\"\/>';\n    s += '<path d=\"M44 152H215M44 147v10M215 147v10\" stroke=\"#1f2a30\" stroke-width=\"1.2\" fill=\"none\"\/>';\n    s += '<text x=\"129.5\" y=\"166\" text-anchor=\"middle\" font-size=\"12\" fill=\"#1f2a30\">' + CFG.postSpacing + ' m between posts<\/text>';\n    s += '<text x=\"592\" y=\"166\" text-anchor=\"end\" font-size=\"12\" fill=\"#1f2a30\">' + (strands || 0) + (strands === 1 ? ' strand' : ' strands') + '<\/text>';\n    $(\"efc-svg\").innerHTML = s;\n  }\n\n  var lastText = \"\";\n\n  function calc() {\n    var L = num(\"efc-length\", 0), strands = Math.round(num(\"efc-strands\", 1)),\n        corners = Math.round(num(\"efc-corners\", 0)) || 0, gates = Math.round(num(\"efc-gates\", 0)) || 0,\n        sliding = $(\"efc-gatetype\").value === \"sliding\", out = $(\"efc-out\");\n    draw(isNaN(strands) ? 0 : strands);\n\n    if (!(L > 0) || isNaN(strands)) {\n      out.innerHTML = '<div class=\"efc-empty\">Enter your fence length and number of wire strands to see the materials list.<\/div>';\n      return;\n    }\n\n    var P = CFG.price, wire = CFG.wires[$(\"efc-wire\").value], razor = CFG.razors[$(\"efc-razor\").value], en = CFG.energizers[$(\"efc-energizer\").value];\n    var wPosts = Math.max(Math.ceil(L \/ CFG.postSpacing) + 1 - corners, 0);   \/\/ corners use corner posts instead\n    var wireMetres = L * strands * CFG.waste;\n\n    var rows = [\n      [wire.name, Math.ceil(wireMetres \/ CFG.rollLength), wire.price],\n      [\"W posts\", wPosts, P.wPost],\n      [\"Corner posts\", corners, P.cornerPost],\n      [\"Corner support posts\", corners * CFG.supportsPerCorner, P.supportPost],\n      [\"Strainer insulators\", strands * corners * CFG.strainersPerCorner, P.strainer],\n      [razor.name + \", \" + CFG.razorStretch + \" m roll\", razor.price ? Math.ceil(L \/ CFG.razorStretch) : 0, razor.price],\n      [\"Warning signs\", Math.ceil(L \/ CFG.signEvery), P.sign],\n      [\"Copper earth rods\", CFG.earthRods, P.earthRod],\n      [\"Undergate and lead-out cable, 50 m roll\", Math.ceil((15 + 20 * gates) \/ 50), P.cable],\n      [\"Gate contact for sliding gate\", sliding ? gates : 0, P.gateContact],\n      [en.name + (en.price ? \" energizer\" : \"\"), en.price ? 1 : 0, en.price],\n      [\"Siren kit\", $(\"efc-siren\").checked ? 1 : 0, P.siren],\n      [\"4 core alarm cable\", 1, P.alarmCable],\n      [\"Lightning arrestor\", $(\"efc-arrestor\").checked ? 1 : 0, P.arrestor]\n    ].filter(function (r) { return r[1] > 0; });\n\n    var total = 0, html = '<div class=\"efc-scroll\"><table class=\"efc-table\"><thead><tr><th>Item<\/th><th class=\"efc-num\">Qty<\/th><th class=\"efc-num\">Each<\/th><th class=\"efc-num\">Total<\/th><\/tr><\/thead><tbody>';\n    var text = \"Electric fence estimate: \" + L + \" m, \" + strands + \" strands, \" + corners + \" corners, \" + gates + (gates ? (sliding ? \" sliding\" : \" swing\") : \"\") + (gates === 1 ? \" gate\" : \" gates\") + \", razor wire: \" + razor.name + \"\\n\";\n    rows.forEach(function (r) {\n      var line = r[1] * r[2]; total += line;\n      html += \"<tr><td>\" + r[0] + '<\/td><td class=\"efc-num\">' + r[1].toLocaleString(\"en-KE\") + '<\/td><td class=\"efc-num\">' + fmt(r[2]) + '<\/td><td class=\"efc-num\">' + fmt(line) + \"<\/td><\/tr>\";\n      text += \"- \" + r[0] + \" x \" + r[1] + \": \" + fmt(line) + \"\\n\";\n    });\n    text += \"Estimated materials total: \" + fmt(total);\n    lastText = text;\n\n    html += '<\/tbody><\/table><\/div>';\n    html += '<div class=\"efc-total\"><span>Estimated materials cost<\/span><strong>' + fmt(total) + '<\/strong><\/div>';\n    html += '<p class=\"efc-note\">About ' + Math.round(wireMetres).toLocaleString(\"en-KE\") + ' m of wire, including 5% extra for joins. This is an estimate for materials only. Installation, delivery and site-specific extras are not included.<\/p>';\n    html += '<div class=\"efc-actions\">';\n    if (CFG.whatsapp) html += '<a class=\"efc-btn\" target=\"_blank\" rel=\"noopener\" href=\"https:\/\/wa.me\/' + CFG.whatsapp + '?text=' + encodeURIComponent(\"Hello, I would like a quote for this fence.\\n\\n\" + text) + '\">Send estimate on WhatsApp<\/a>';\n    html += '<button type=\"button\" class=\"efc-btn' + (CFG.whatsapp ? ' efc-ghost' : '') + '\" id=\"efc-copy\">Copy estimate<\/button>';\n    html += '<a class=\"efc-btn efc-ghost\" target=\"_blank\" rel=\"noopener\" href=\"' + CFG.shopUrl + '\">Shop fence materials<\/a><\/div>';\n    out.innerHTML = html;\n\n    $(\"efc-copy\").addEventListener(\"click\", function () {\n      var b = this, done = function () { b.textContent = \"Estimate copied\"; setTimeout(function () { b.textContent = \"Copy estimate\"; }, 2000); };\n      if (navigator.clipboard && navigator.clipboard.writeText) { navigator.clipboard.writeText(lastText).then(done, function () {}); }\n      else { var t = document.createElement(\"textarea\"); t.value = lastText; document.body.appendChild(t); t.select(); try { document.execCommand(\"copy\"); done(); } catch (e) {} document.body.removeChild(t); }\n    });\n  }\n\n  $(\"efc\").addEventListener(\"input\", calc);\n  $(\"efc\").addEventListener(\"change\", calc);\n  calc();\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Electric fence materials calculator Enter the length of your fence and how many wire strands you want. The list and total update as you type. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_exactmetrics_skip_tracking":false,"footnotes":"","rank_math_title":"","rank_math_description":"","rank_math_canonical_url":"","rank_math_focus_keyword":""},"class_list":["post-2471","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/patsecuritysolutions.co.ke\/shop\/wp-json\/wp\/v2\/pages\/2471","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/patsecuritysolutions.co.ke\/shop\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/patsecuritysolutions.co.ke\/shop\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/patsecuritysolutions.co.ke\/shop\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/patsecuritysolutions.co.ke\/shop\/wp-json\/wp\/v2\/comments?post=2471"}],"version-history":[{"count":4,"href":"https:\/\/patsecuritysolutions.co.ke\/shop\/wp-json\/wp\/v2\/pages\/2471\/revisions"}],"predecessor-version":[{"id":2476,"href":"https:\/\/patsecuritysolutions.co.ke\/shop\/wp-json\/wp\/v2\/pages\/2471\/revisions\/2476"}],"wp:attachment":[{"href":"https:\/\/patsecuritysolutions.co.ke\/shop\/wp-json\/wp\/v2\/media?parent=2471"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}