{"id":16705,"date":"2026-02-26T10:21:39","date_gmt":"2026-02-26T10:21:39","guid":{"rendered":"https:\/\/www.hashmicro.com\/my\/blog\/?p=16705"},"modified":"2026-02-27T04:31:07","modified_gmt":"2026-02-27T04:31:07","slug":"safety-stock","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/my\/blog\/safety-stock\/","title":{"rendered":"Safety Stock: What It Is, How to Calculate, and How to Get It Right"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">In supply chain work, <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/reorder-point\/\">the gap between profit and loss<\/a> often comes down to one thing that looks simple on paper: inventory availability. If you keep too little stock, you face stockouts, lost sales, and customers who move on faster than you expect.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">But if you keep too much, your cash gets stuck in the warehouse, storage costs climb, and you carry a bigger risk of items becoming obsolete. So yes, you are balancing on a thin line: you need enough inventory to serve demand, but not so much that it drains your working capital.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">That is exactly where safety stock matters. This is not random extra inventory just in case. It is a data based buffer that helps you absorb the two problems that most often break inventory plans: demand that swings unexpectedly and supplier lead times that do not always behave.<\/span><\/p>\n<table style=\"border-collapse: collapse; background-color: #fffacd; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); border-radius: 25px 25px 25px 25px;\" width=\"100%\">\n<tbody>\n<tr>\n<td style=\"padding: 15px; border: none;\">\n<h3 style=\"margin-bottom: 10px;\"><span style=\"background-color: #8a0e19; color: #ffffff; padding: 5px;\"><b>Key Takeaways<\/b><\/span><\/h3>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"#Whay-hrms\">Safety stock<\/a> covers demand and lead time uncertainty.<\/li>\n<li aria-level=\"1\">Accurate safety <a href=\"#You-hrms\">stock needs<\/a> clean demand and lead time data plus a service level target.<\/li>\n<li aria-level=\"1\">Pick the formula based on how stable <a href=\"#Pick-hrms\">demand and supply<\/a> are.<\/li>\n<li aria-level=\"1\"><a href=\"#Will-hrms\">Use it with reorder<\/a> point and recalculate when conditions change.<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- <div id=\"toc_group_article\" style=''>\r\n\t<p style='font-size:25px;font-weight:bold; margin-bottom:0px'>\r\n\t\tTable of Content\r\n\t<\/p>\r\n\t<ul id=\"list_toc\" class='list_toc'><\/ul>\r\n<\/div>\r\n\r\n<div class=\"dropdown-fixed-top\" id=\"dropdown-fixed-top\">\r\n\t<div class=\"row\">\r\n\t\t<p id=\"pilihDaftarIsi\">Content Lists<\/p>\r\n\t\t<p><i class=\"td-icon-menu-down\"><\/i><\/p>\r\n\t<\/div>\r\n\t\r\n\t<div>\r\n\t\t<ul id=\"list_toc_top\" class='list_toc'><\/ul>\r\n\t<\/div>\r\n<\/div> -->\r\n\r\n<!-- TOC mobile -->\r\n<div id=\"placeholder-toc\"><\/div>\r\n<div id=\"toc\">\r\n    <div class=\"header\">\r\n\t<span class=\"toc-title\" id=\"toc-title\">Table of Content<\/span>\t\r\n\t <i class=\"toc-icon\">\r\n        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"30\" height=\"30\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#000\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"header-icon\">\r\n          <path d=\"m6 9 6 6 6-6\" \/>\r\n        <\/svg>\r\n      <\/i>\r\n\t<\/div>\r\n    <div class=\"list\">\r\n      <ul id=\"toc-list\"><\/ul>\r\n    <\/div>\r\n <\/div>\r\n<!-- TOC mobile -->\r\n\r\n<style>\r\n\t@media (max-width: 992px) {\r\n\t\t#toc_group_article {\r\n\t\t\tpadding-top: 24px;\r\n\t\t}\r\n\t}\r\n\t\r\n\t#list_toc_float {\r\n\t\tmax-height: calc(100vh - 250px);\r\n\t\toverflow-y: auto;\r\n\t}\r\n\t\r\n\t#list_toc_top {\r\n\t\tdisplay: none;\r\n\t\tbackground: #fff;\r\n\t\tmargin-bottom: 4px;\r\n\t}\r\n\t\r\n\t#list_toc_top li {\r\n\t\tdisplay: block;\r\n\t\tmargin-left: 0;\r\n\t\tlist-style: none;\r\n\t}\r\n\t\r\n\t#list_toc_top a {\r\n\t\tpadding: 5px;\r\n\t\tdisplay: block;\r\n\t}\r\n\t\r\n\t#list_toc_top.show {\r\n\t\tdisplay: block;\r\n\t}\r\n\r\n\t#list_toc_top a {\r\n\t\tcolor: #434343;\r\n\t\tborder-bottom: 1px solid #bbb;\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top {\r\n\t\tposition: fixed;\r\n\t\ttop: 59px;\r\n\t\twidth: 100%;\r\n\t\tz-index: 99;\r\n\t\tborder-bottom: 2px solid #9c171e;\r\n\t\tpadding: 12px;\r\n\t\tbackground: #fff;\r\n\t\twidth: 100%;\r\n\t\tcursor: pointer;\r\n\t\tdisplay: none;\r\n\t\tleft: 0;\r\n\t\tbox-shadow: 0 -2px 7px 6px rgba(0, 0, 0, 0.17);\r\n\t}\r\n\t\r\n\t#dropdown-fixed-top.show {\r\n\t\tanimation: showAnim 0.5s ease;\r\n\t\tdisplay: block;\r\n\t\topacity: 1;\r\n\t}\r\n\t\r\n\t@keyframes showAnim {\r\n\t\tfrom {\r\n\t\t\tdisplay: none;\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t\tto {\r\n\t\t\tdisplay: block;\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top #list_toc_top {\r\n\t\tmax-height: calc(50vh - 110px);\r\n\t\toverflow-y: scroll;\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top .row {\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: space-between\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top .row p {\r\n\t\tmargin-bottom: 0;\r\n\t}\r\n\t\r\n\t#pilihDaftarIsi {\r\n\t\tmax-width: 100%;\r\n\t\toverflow: hidden;\r\n\t\twhite-space: nowrap;\r\n\t}\r\n\t\r\n\t@media (min-width: 1018px) {\r\n\t\t.dropdown-fixed-top {\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\t}\r\n\t\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc > li > ul {padding-left: 20px;margin-bottom: 0;}\r\n\t#list_toc{height:max-content;transition:ease-in-out}\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc_float li.active > a {color:#b1252d;background: #ffe1e3;}\r\n\t#list_toc_top li.active > a {color:#b1252d;background: #ffe1e3;}\r\n\t#list_toc_float li a {padding:3px 7px}\r\n\t#list_toc_float li a {\r\n\t\tdisplay: block;\r\n\t\tcolor: #000;\r\n\t\tmargin-bottom: 6px;\r\n\t\tpadding-top: 2px;\r\n\t\tpadding-bottom: 2px;\r\n\t\ttransition: all 0.2s ease-in-out;\r\n\t\tfont-size: 15px;\r\n\t\tline-height: 18px;\r\n\t}\r\n\t#list_toc_float li{list-style:none;list-style-position:inside; margin-left:0;}\r\n\t#list_toc_float a:hover{color:#b1252d;}\r\n\t\r\n\t#toc_group_float{\r\n\t\tline-height: 24px;\r\n\t\tmax-height: calc(100vh - 100px);\r\n\t\toverflow: auto;\r\n\t\tz-index: 99;\r\n\t\tdisplay:none!important;\r\n\t\tbackground:#fff;\r\n\t\ttransition:all 0.5s linear\r\n\t}\r\n\t\r\n\t@media (min-width:1019px){\r\n\t\t#toc_group_float {\r\n\t\t\tdisplay:block!important;\r\n\t\t}\r\n\t\t#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\t\t\t\t\r\n\t}\r\n\r\n<\/style>\r\n\r\n<style>\r\n\t@media (max-width: 992px) {\r\n\t\t#toc_group_article {\r\n\t\t\tpadding-top: 24px;\r\n\t\t}\r\n\t}\r\n\t\r\n\t#list_toc_float {\r\n\t\tmax-height: calc(100vh - 250px);\r\n\t\toverflow-y: auto;\r\n\t}\r\n\t\r\n\t#list_toc_top {\r\n\t\tdisplay: none;\r\n\t\tbackground: #fff;\r\n\t\tmargin-bottom: 4px;\r\n\t}\r\n\t\r\n\t#list_toc_top li {\r\n\t\tdisplay: block;\r\n\t\tmargin-left: 0;\r\n\t\tlist-style: none;\r\n\t}\r\n\t\r\n\t#list_toc_top a {\r\n\t\tpadding: 5px;\r\n\t\tdisplay: block;\r\n\t}\r\n\t\r\n\t#list_toc_top.show {\r\n\t\tdisplay: block;\r\n\t}\r\n\r\n\t#list_toc_top a {\r\n\t\tcolor: #434343;\r\n\t\tborder-bottom: 1px solid #bbb;\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top {\r\n\t\tposition: fixed;\r\n\t\ttop: 59px;\r\n\t\twidth: 100%;\r\n\t\tz-index: 99;\r\n\t\tborder-bottom: 2px solid #9c171e;\r\n\t\tpadding: 12px;\r\n\t\tbackground: #fff;\r\n\t\twidth: 100%;\r\n\t\tcursor: pointer;\r\n\t\tdisplay: none;\r\n\t\tleft: 0;\r\n\t\tbox-shadow: 0 -2px 7px 6px rgba(0, 0, 0, 0.17);\r\n\t}\r\n\t\r\n\t#dropdown-fixed-top.show {\r\n\t\tanimation: showAnim 0.5s ease;\r\n\t\tdisplay: block;\r\n\t\topacity: 1;\r\n\t}\r\n\t\r\n\t@keyframes showAnim {\r\n\t\tfrom {\r\n\t\t\tdisplay: none;\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t\tto {\r\n\t\t\tdisplay: block;\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top #list_toc_top {\r\n\t\tmax-height: calc(50vh - 110px);\r\n\t\toverflow-y: scroll;\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top .row {\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: space-between\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top .row p {\r\n\t\tmargin-bottom: 0;\r\n\t}\r\n\t\r\n\t#pilihDaftarIsi {\r\n\t\tmax-width: 100%;\r\n\t\toverflow: hidden;\r\n\t\twhite-space: nowrap;\r\n\t}\r\n\t\r\n\t@media (min-width: 1018px) {\r\n\t\t.dropdown-fixed-top {\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\t}\r\n\t\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc > li > ul {padding-left: 20px;margin-bottom: 0;}\r\n\t#list_toc{height:max-content;transition:ease-in-out}\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc_float li.active > a {color:#b1252d;background: #ffe1e3;}\r\n\t#list_toc_top li.active > a {color:#b1252d;background: #ffe1e3;}\r\n\t#list_toc_float li a {padding:3px 7px}\r\n\t#list_toc_float li a {\r\n\t\tdisplay: block;\r\n\t\tcolor: #000;\r\n\t\tmargin-bottom: 6px;\r\n\t\tpadding-top: 2px;\r\n\t\tpadding-bottom: 2px;\r\n\t\ttransition: all 0.2s ease-in-out;\r\n\t\tfont-size: 15px;\r\n\t\tline-height: 18px;\r\n\t}\r\n\t#list_toc_float li{list-style:none;list-style-position:inside; margin-left:0;}\r\n\t#list_toc_float a:hover{color:#b1252d;}\r\n\t\r\n\t#toc_group_float{\r\n\t\tline-height: 24px;\r\n\t\tmax-height: calc(100vh - 100px);\r\n\t\toverflow: auto;\r\n\t\tz-index: 99;\r\n\t\tdisplay:none!important;\r\n\t\tbackground:#fff;\r\n\t\ttransition:all 0.5s linear\r\n\t}\r\n\t\r\n\t@media (min-width:1019px){\r\n\t\t#toc_group_float {\r\n\t\t\tdisplay:block!important;\r\n\t\t\t}\r\n\t\t\t\t#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\t}\r\n\r\n<\/style>\r\n\r\n<!-- START ToC styling  -->\r\n<style>\r\n\t\/* Simple styling for the TOC *\/\r\n\t\r\n\t#toc ul li:last-child {\r\n    padding-bottom: 16px; \/* Adjust the value as needed *\/\r\n}\r\n\r\n.td-fix-index {\r\n\t transform: unset !important;\r\n     -webkit-transform: unset !important; \r\n}\r\n.footer-contact .td-fix-index {\r\n\t transform: translateZ(0) !important;\r\n     -webkit-transform: translateZ(0) !important; \r\n}\r\n\t.tdb_single_content .tdb-block-inner.td-fix-index{\r\n\t\tposition: static;\r\n\t}\r\n\t\r\n\r\n\t\r\n#toc {\r\n  background-color: #FFF;\r\n\tpadding: 17px 24px 0px 24px !important;\r\n  margin-bottom: 20px;\r\n\/*   border: 1px solid #9C171E; *\/\r\n  border-radius: 6px;\r\n\tdisplay: none;\r\n  max-width: 100%;\r\n  transition: .4s ease height;\r\n\tmargin-left: 0;\r\n\toverflow: hidden;\r\n}\r\n\r\n#toc .header{\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: space-between;\r\n\tbackground-color: transparent;\r\n}\r\n\t\r\n\t#toc.sticky .header{\r\n\t\tpadding: 4px 0;\r\n\t}\r\n\t\r\n.header p{\r\n  font-size: 18px !important;\r\n  font-weight: 600 !important;\r\n  color: #393939;\r\n   margin-bottom: 0;\r\n  \/* margin-top: 20px; *\/\r\n}\r\n\r\n.toc-icon{\r\n  float: right;\r\n\/*   visibility: hidden; *\/\r\n}\r\n\r\n\t.toc-title{\r\n\t\tmargin-right: auto;\r\n\/* \t\tpadding-left: 20px; *\/\r\n\t\tfont-weight: 600;\r\n\t\talign-self: center;\t}\t\r\n\r\n#toc ul {\r\n  list-style-type: none;\r\n  padding-left: 0;\r\n}\r\n\t\r\n#toc.sticky ul{\r\n\toverflow-y: auto;\r\n\tmax-height: 250px;\r\n\tmargin-top: 0px;\r\n\tpadding-top: 20px;\r\n\/* \tborder-top: 1px solid #d3d3d3; *\/\r\n}\r\n\t\r\n#toc ul li {\r\n\/*   margin-bottom: 10px; *\/\r\n  margin-bottom: 10px;\r\n\tmargin-left: 0;\r\n\ttransition: .2s ease;\r\n\tcursor: pointer;\r\n}\r\n\t\r\n\t#toc.sticky ul li {\r\n\t  margin-right: 10px;\r\n\t}\r\n\t\r\n.td-post-content #toc-list li a:hover, .td-post-content #toc-list a.active{\r\n\tbackground-color: #FFF;\r\n\/* \tpadding: 8px 16px 8px 16px; *\/\r\n\tpadding: 4px 16px 4px 16px;\r\n\tborder-radius: 6px;\r\n\tcolor: #9c171e !important;\r\n\tfont-weight: 600 !important;\r\n}\r\n\t\r\n\t.td-post-content #toc-list li:hover a, .td-post-content #toc-list a.active{\r\n\t\tcolor: #9C171E !important;\r\n\t\tfont-weight: 600 !important;\r\n\t}\r\n\t\r\n.td-post-content #toc-list a.active{\r\n\tfont-weight: bold !important;\r\n\tcolor: #9C171E !important;\r\n}\r\n\t\r\n#toc a, .td-post-content #toc-list a {\r\n  text-decoration: none;\r\n  color: #ea1717 !important;\r\n  transition: .2s ease;\r\n\tfont-weight: 400 !important;\r\n\tdisplay: block;\r\n\t\r\n\tpadding: 4px 16px 4px 0;\r\n}\r\n\r\n#toc.sticky {\r\n  position: fixed;\r\n\/*   top: 73px; *\/\r\n\tbottom: 0;\r\n  z-index: 100; \r\n  box-shadow: 0 2px 5px rgba(0,0,0,0.1); \r\n\twidth: 100%; \r\n\tbackground-color: #FFF;\r\n\/* \tbackground-color: #FFF1F1; *\/\r\n\tborder-bottom: 1px solid #ea1717;\r\n\/*   border: 1px solid #393939; *\/\r\n  box-shadow: 0px 0px 14px 0px #00000040;\r\n  cursor: pointer;\r\n\tanimation: fadein .3s ease;\r\n\tpadding: 12px 16px !important;\r\n}\r\n\t\r\n\t.fadein{\r\n\t\tanimation: fadein .3s ease;\r\n\t}\r\n\t\r\n\t.fadeout{\r\n\t\tanimation: fadeout .3s ease;\r\n\t}\r\n\t\r\n\t\r\n\t@keyframes fadein{\r\n\t\t0% {\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t\t100%{\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@keyframes fadeout{\r\n\t\t0% {\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t\t100%{\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t}\r\n\r\n\t\r\n#toc.sticky .header p{\r\n\tmargin-bottom: 10px;\r\n\tmargin-top: 10px;\r\n}\r\n\r\n#toc.sticky .toc-icon{\r\n  visibility: visible;\r\n\/* \ttransition: 0.4s ease; *\/\r\n}\r\n\t\r\n\t.toc-icon{\r\n\t\talign-items: center;\r\n    \tdisplay: flex;\r\n\t}\r\n\t\r\n\tsvg.header-icon{\r\n\/* \t\tbackground-color: #9c171e; *\/\r\n\t\tbackground-color: #FFF;\r\n\t\tborder-radius: 30px;\r\n\t\tpadding: 5px;\r\n\t}\r\n\r\n#toc.sticky .list{\r\n\/*   max-height: 0; *\/\r\n  transition: height 0.4s ease;\r\n}\r\n\t\r\n\t#toc .list{\r\n\/*   max-height: 0; *\/\r\n  transition: height 0.4s ease;\r\n}\r\n\r\n#toc .header.active .toc-icon{\r\n\ttransform: rotate(0deg); \r\n\topacity: 1;\r\n}\r\n\r\n\t#toc .header.active + .list {\r\n\t  max-height: 200px; \/* Adjust this value as needed *\/\r\n\t  opacity: 1;\r\n\t}\r\n\t\r\n\t#placeholder-toc{\r\n\/* \t\tdisplay: none; *\/\r\n\t}\r\n\t\r\n\t@media (min-width: 768px) and (max-width: 991px){\r\n\t\t#toc.sticky{\r\n\/* \t\t\ttop: 104px; *\/\r\n\t\t\tbottom: 0px;\r\n\t\t}\r\n\t\t\r\n\t\t#toc{\r\n\t\t\twidth: unset !important;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@media (max-width: 767px){\r\n\t\t#toc{\r\n\t\t\twidth: 100% !important;\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\t\t\r\n\t\t#toc.sticky{\r\n\t\t\twidth: 90% !important;\r\n\/* \t\t\ttop: 81px; *\/\r\n\t\t\tbottom: 60px;\r\n\t\t\tmargin-left: auto;\r\n\t\t\tmargin-right: auto;\r\n\t\t\tpadding: 0 16px;\r\n\t\t\tright: 5%;\r\n\t\t}\r\n\t}\r\n\t\r\n\t<\/style>\r\n<!-- END ToC styling  -->\r\n\r\n<!-- ToC List for mobile -->\r\n<script>\r\n \/\/ Generate TOC based on headings\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  \/\/ Get the element that will contain the TOC\r\n  const tocList = document.getElementById('toc-list');\r\n\r\n  \/\/ Get the element with the ID 'article-left'\r\n  const article = document.querySelector('.td-post-content');\r\n\r\n  \/\/ Find all h2 elements within 'myarticle'\r\n  const headers = article.getElementsByTagName('h2');\r\n\r\n  \/\/ Loop through the h2 elements and create a list item for each one\r\n  for (let i = 0; i < headers.length; i++) {\r\n    const header = headers[i];\r\n    const headerText = header.textContent;\r\n\/\/     const headerId = 'header-' + i;\r\n    const headerId = headerText\r\n    .toLowerCase()\r\n    .trim()\r\n    .replace(\/[^\\w\\s-]\/g, '')  \/\/ hapus tanda baca\r\n    .replace(\/\\s+\/g, '-'); \/\/ ganti spasi jadi \"-\"\r\n\r\n    \/\/ Set an ID for the header if it doesn't have one\r\n    header.setAttribute('id', headerId);\r\n\r\n    \/\/ Create a list item for the TOC\r\n    const listItem = document.createElement('li');\r\n\r\n    \/\/ Create a link for the list item\r\n    const link = document.createElement('a');\r\n    link.setAttribute('href', '#' + headerId);\r\n    link.textContent = headerText;\r\n\r\n    \/\/ Append the link to the list item\r\n    listItem.appendChild(link);\r\n\r\n    \/\/ Append the list item to the TOC list\r\n    tocList.appendChild(listItem);\r\n  }\r\n});\r\n\r\n\/\/ Keep height and placement of content using placeholder in place of TOC\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  const toc = document.querySelector('#toc');\r\n  const placeholderToc = document.querySelector('#placeholder-toc');\r\n\r\n  function setPlaceholderHeight() {\r\n    placeholderToc.style.height = `${toc.offsetHeight}px`;\r\n  }\r\n\r\n  \/\/ Set the initial height of the placeholder\r\n  setPlaceholderHeight();\r\n\r\n  \/\/ Update the height on window resize\r\n  window.addEventListener('resize', setPlaceholderHeight);\r\n});\r\n  const tocTitle = document.querySelector('#toc-title'); \/\/ Assuming header-faq is the element for TOC title\r\n\r\n\/\/ Sticky TOC and update heading\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  const toc = document.querySelector('#toc');\r\n  const footer = document.querySelector('.td-footer-template-wrap');\r\n  const tocParent = toc.parentElement;\r\n  const divTop = tocParent.getBoundingClientRect().top + window.pageYOffset;\r\n  const tocHeight = toc.offsetHeight;\r\n  const triggerPoint = divTop + tocHeight + 700;\r\n  const footerHeight = footer.offsetHeight;\r\n  const triggerFooterPoint = footer.getBoundingClientRect().top + window.pageYOffset - footerHeight - footerHeight - footerHeight;\r\n  const phtoc = document.querySelector('#placeholder-toc');\r\n  const headers = document.querySelectorAll('.td-post-content h2');\r\n  const navLinks = document.querySelectorAll('#toc-list a');\r\n\t\r\n\tconst panel2 = document.querySelector(\"#toc .list\");\r\n\tvar icon = document.querySelector(\".toc-icon\");\r\n\r\n  let activeLink = null; \/\/ Declare activeLink outside the loop\r\n\t\r\n  \/\/ Function to handle scroll and add\/remove .sticky class\r\n  function handleScroll() {\r\n    const windowTop = window.pageYOffset || document.documentElement.scrollTop;\r\n    let currentHeader = '';\r\n\r\n    \/\/ Highlight user progress as the heading comes\r\n    headers.forEach(header => {\r\n\t\tconst headerTop = header.offsetTop;\r\n\t\tconst headerHeight = header.clientHeight;\r\n\t\tif (window.scrollY >= (headerTop - headerHeight + 700)) {\r\n\t\t\tconst currentHeaderId = header.getAttribute('id');\r\n\t\t\tconst currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n\/\/ \t\t\tconsole.log(\"current header text:\", currentHeaderText);\r\n\t\t\ttocTitle.textContent = currentHeaderText;\r\n\t\t\tcurrentHeader = currentHeaderId;\r\n\t\t\t\r\n\t\t\tif(window.innerWidth < 767){\r\n\t\t\t\ttocTitle.textContent = 'Table of Content';\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n    navLinks.forEach(link => {\r\n      link.classList.remove('active');\r\n      if(currentHeader != '') {\r\n\t\t  if (link.getAttribute('href').includes(currentHeader)) {\r\n\t\t\t  link.classList.add('active');\r\n\t\t  }\r\n\t  }\r\n    });\r\n\/\/     if (windowTop < triggerFooterPoint) {\r\n\/\/         toc.style.display = 'block';\r\n\/\/ \t}else{\r\n\/\/         toc.style.display = 'none';\r\n\/\/ \t}\r\n    \/\/ Update TOC title if sticky\r\n    if (windowTop > triggerPoint) {\r\n      if (!toc.classList.contains('sticky')) {\r\n        phtoc.style.display = \"block\";\r\n        toc.classList.add('sticky');\r\n        toc.style.width = `${tocParent.offsetWidth}px`; \/\/ Set width to match the parent element\r\n        toc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n        toc.style.backgroundColor = \"#FFF\";\r\n\t\tpanel2.style.height = '0px';\r\n\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\t\t  if(window.innerWidth < 767){\r\n\/\/ \t\t\t  const tocs = document.querySelector('#toc.sticky');\r\n\t\t\t  tocTitle.textContent = 'Table of Content'; \/\/ Reset title\r\n       \t\t  toc.style.width = '150px'; \/\/ Set width to match the parent element\r\n\t\t  }\r\n      }\r\n      if (currentHeader) {\r\n\/\/         console.log(\"activeLink:\", activeLink);\r\n        if (activeLink) {\r\n\/\/           tocTitle.textContent = activeLink.textContent; \/\/ Update TOC title\r\n          tocTitle.textContent = activeLink ? activeLink.textContent : \"\"; \/\/ Update title only if activeLink exists\r\n        }\r\n      }\r\n    } else {\r\n      toc.classList.remove('sticky');\r\n      phtoc.style.display = \"none\";\r\n      toc.style.width = 'unset'; \/\/ Reset to original width\r\n      toc.style.backgroundColor = \"#FFF\";\r\n      tocTitle.textContent = 'Table of Content'; \/\/ Reset title\r\n\t\tpanel2.style.height = panel2.scrollHeight + \"px\";\r\n\t\ticon.style.transform = \"rotate(180deg)\";\r\n    }\r\n  }\r\n\r\n    \/\/ Attach the scroll event listener to the window\r\n    window.addEventListener('scroll', handleScroll);\r\n\r\n    \/\/ Initial call to handleScroll to set the correct state on load\r\n    handleScroll();\r\n});\r\n\t\r\n\t\/\/ Open toggle TOC\r\n\t  document.addEventListener(\"DOMContentLoaded\", function() {\r\n\t\tvar tocHeader = document.querySelector(\"#toc .header\");\r\n\t\tvar toc = document.querySelector(\"#toc\");\r\n\t\tvar icon = document.querySelector(\".toc-icon\");\r\n\t\tconst tocTitle = document.querySelector('#toc-title');\r\n\t\tconst tocs = document.querySelector('#toc.sticky');\r\n \t\tconst tocParent = toc.parentElement;\t\t  \r\n\r\n\t\t  tocHeader.addEventListener(\"click\", function() {\r\n\t\t\tvar panel = this.nextElementSibling;\r\n\t\t\tif (panel.style.height !== '0px') { \/\/ Check if height is not 0px\r\n\t\t\t  panel.style.height = '0px'; \/\/ Set height to 0 for full collapse\r\n\t\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\/\/ \t\t\t\ttoc.style.paddingBottom = '6px'; \r\n\t\t\t\tif(window.innerWidth > 768){\r\n\t\t\t\t\tif(!toc.classList.contains('sticky')){\r\n\t\t\t\t\t\ttoc.style.width = \"unset\";\r\n\/\/ \t\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (toc.classList.contains('sticky')){\r\n\t\t\t\t\t\ttoc.style.width = '${tocParent.offsetWidth}px';\r\n\t\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif(window.innerWidth < 767){\r\n\t\t\t\t\ttoc.style.width = \"unset\"; \/\/ Reset width\r\n\t\t\t\t}\r\n\t\t\t\ttoc.style.backgroundColor = \"#FFF1F1\";\r\n\t\t\t} else {\r\n\t\t\t  panel.style.height = panel.scrollHeight + \"px\";\r\n\t\t\t  icon.style.transform = \"rotate(0deg)\";\r\n\t\t\t  toc.style.backgroundColor = \"#FFF\";\r\n\t\t\t  tocTitle.textContent = 'Table of Content'; \/\/ Reset title\r\n\t\t\t\ttoc.style.paddingBottom = '24px';\r\n\t\t\t \tif(window.innerWidth < 767){\r\n\t\t\t\t\ttoc.style.width = `${tocParent.offsetWidth}px`; \/\/ Set width to match the parent element\r\n\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t  });\r\n\r\n\t\t  \/\/ Close TOC when a link inside it is clicked\r\n\t\t  var tocLinks = document.querySelectorAll(\"#toc .list a\");\r\n\t\t  tocLinks.forEach(function(link) {\r\n\t\t\tlink.addEventListener(\"click\", function() {\r\n\t\t\t  var panel = document.querySelector(\"#toc .list\");\r\n\t\t\t  panel.style.height = '0px'; \/\/ Set height to 0 for full collapse\r\n\t\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\t\t\t  toc.style.backgroundColor = \"#FFF\";\r\n\t\t\t});\r\n\t\t  });\r\n\t\t});\r\n<\/script>\r\n\r\n<!-- <script>\r\n\tvar pilihDaftarIsi = document.getElementById('pilihDaftarIsi');\r\n\t\r\n\tdocument.addEventListener('DOMContentLoaded', function() {\r\n\t\tvar dropdownFixedTop = document.querySelector('.dropdown-fixed-top');\r\n\r\n\t\tdropdownFixedTop.addEventListener('click', function() {\r\n\t\t\tvar dropdownContent = this.querySelector('.list_toc');\r\n\t\t\tdropdownContent.classList.toggle('show');\r\n\t\t});\r\n\r\n\t\twindow.addEventListener('click', function(event) {\r\n\t\t\tvar listTocTop = document.getElementById('list_toc_top');\r\n\r\n\t\t\tif (!dropdownFixedTop.contains(event.target)) {\r\n\t\t\t\tlistTocTop.classList.remove('show');\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\t\r\n\tvar daftarIsiContainer = document.getElementById('toc_group_article');\r\n\tvar dropdownFixedTop = document.getElementById('dropdown-fixed-top');\r\n    var triggered = false; \/\/ Flag to keep track of whether the function has been triggered\r\n\r\n    window.addEventListener('scroll', function() {\r\n        if (!triggered && isCompletelyScrolledPast(daftarIsiContainer)) {\r\n            showSectionDropdownFixedTop(false);\r\n            triggered = true;\r\n        } else if (triggered && !isCompletelyScrolledPast(daftarIsiContainer)) {\r\n            showSectionDropdownFixedTop(true);\r\n            triggered = false;\r\n        }\r\n    });\r\n\r\n    function isCompletelyScrolledPast(element) {\r\n        var elementTop = element.getBoundingClientRect().top;\r\n        var elementBottom = element.getBoundingClientRect().bottom;\r\n        return elementTop < 0 && elementBottom < 0;\r\n    }\r\n\r\n    function showSectionDropdownFixedTop(show) {\r\n\t\tif (show) {\r\n\t\t\tdropdownFixedTop.classList.remove(\"show\");\r\n\t\t} else {\r\n\t\t\tdropdownFixedTop.classList.add(\"show\");\r\n\t\t}\r\n    }\r\n\r\n\/\/ Scrollspy function to highlight the active TOC item based on the scroll position\r\n  function scrollSpy(tocClass) {\r\n    const scrollPosition = window.scrollY;\r\n\r\n    \/\/ Find the active h2 and h3 headings based on their position in the corresponding TOC\r\n    let activeH2 = null;\r\n    let activeH3 = null;\r\n\r\n    const tocItems = document.querySelectorAll(`.${tocClass} li`);\r\n    tocItems.forEach(item => {\r\n      const a = item.querySelector('a');\r\n      if (!a) return;\r\n      const href = a.getAttribute('href');\r\n      const targetId = href.substring(1); \/\/ Remove the '#' from the href to get the target ID\r\n      const targetElement = document.getElementById(targetId);\r\n      if (!targetElement) return;\r\n\r\n      const targetTop = targetElement.getBoundingClientRect().top + scrollPosition;\r\n      const nextItem = item.nextElementSibling;\r\n      const nextTop = nextItem ? nextItem.getBoundingClientRect().top + scrollPosition : Infinity;\r\n\r\n      if (targetTop <= scrollPosition + 150) {\r\n        if (a.parentElement.parentElement === tocItems) {\r\n          \/\/ The h2 heading is at the root level of the TOC\r\n          activeH2 = { id: targetId, level: 'h2' };\r\n        } else {\r\n          \/\/ The h3 heading is nested under an h2 heading\r\n          const parentH2 = a.parentElement.parentElement.previousElementSibling;\r\n          if (parentH2) {\r\n            const h2Link = parentH2.querySelector('a');\r\n            if (h2Link) {\r\n              const h2Href = h2Link.getAttribute('href');\r\n              const h2Id = h2Href.substring(1);\r\n              activeH2 = { id: h2Id, level: 'h2' };\r\n            }\r\n          }\r\n          activeH3 = { id: targetId, level: 'h3' };\r\n        }\r\n      }\r\n\r\n      if (targetTop > scrollPosition + 150 && nextTop > scrollPosition + 150 && !activeH3) {\r\n        \/\/ Reset the activeH2 when there are no more active h3 headings\r\n        activeH2 = null;\r\n      }\r\n    });\r\n\r\n    \/\/ Update the active state for the TOC items\r\n    tocItems.forEach(item => {\r\n      item.classList.remove('active');\r\n      const a = item.querySelector('a');\r\n      if (a) {\r\n        const href = a.getAttribute('href');\r\n        const targetId = href.substring(1);\r\n        if ((activeH2 && activeH2.id === targetId) || (activeH3 && activeH3.id === targetId)) {\r\n          item.classList.add('active');\r\n\t\t  pilihDaftarIsi.innerHTML = a.textContent;\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  \/\/ Call scrollSpy for each TOC on window scroll\r\n  const tocClasses = ['list_toc', 'list_toc_float', 'list_toc_top']; \/\/ Add other TOC class names here if you have more than two instances\r\n  tocClasses.forEach(tocClass => {\r\n    window.addEventListener('scroll', () => scrollSpy(tocClass));\r\n  });\r\n<\/script> -->\r\n<!-- END script lama -->\r\n\t\r\n<script>\r\n    \/\/ Scrollspy function to highlight the active TOC item based on the scroll position\r\n  function scrollSpy(tocClass) {\r\n    const scrollPosition = window.scrollY;\r\n\r\n    \/\/ Find the active h2 and h3 headings based on their position in the corresponding TOC\r\n    let activeH2 = null;\r\n    let activeH3 = null;\r\n\r\n    const tocItems = document.querySelectorAll(`.${tocClass} li`);\r\n    tocItems.forEach(item => {\r\n      const a = item.querySelector('a');\r\n      if (!a) return;\r\n      const href = a.getAttribute('href');\r\n      const targetId = href.substring(1); \/\/ Remove the '#' from the href to get the target ID\r\n      const targetElement = document.getElementById(targetId);\r\n      if (!targetElement) return;\r\n\r\n      const targetTop = targetElement.getBoundingClientRect().top + scrollPosition;\r\n      const nextItem = item.nextElementSibling;\r\n      const nextTop = nextItem ? nextItem.getBoundingClientRect().top + scrollPosition : Infinity;\r\n\r\n      if (targetTop <= scrollPosition + 150) {\r\n        if (a.parentElement.parentElement === tocItems) {\r\n          \/\/ The h2 heading is at the root level of the TOC\r\n          activeH2 = { id: targetId, level: 'h2' };\r\n        } else {\r\n          \/\/ The h3 heading is nested under an h2 heading\r\n          const parentH2 = a.parentElement.parentElement.previousElementSibling;\r\n          if (parentH2) {\r\n            const h2Link = parentH2.querySelector('a');\r\n            if (h2Link) {\r\n              const h2Href = h2Link.getAttribute('href');\r\n              const h2Id = h2Href.substring(1);\r\n              activeH2 = { id: h2Id, level: 'h2' };\r\n            }\r\n          }\r\n          activeH3 = { id: targetId, level: 'h3' };\r\n        }\r\n      }\r\n\r\n      if (targetTop > scrollPosition + 150 && nextTop > scrollPosition + 150 && !activeH3) {\r\n        \/\/ Reset the activeH2 when there are no more active h3 headings\r\n        activeH2 = null;\r\n      }\r\n    });\r\n\r\n    \/\/ Update the active state for the TOC items\r\n    tocItems.forEach(item => {\r\n      item.classList.remove('active');\r\n      const a = item.querySelector('a');\r\n      if (a) {\r\n        const href = a.getAttribute('href');\r\n        const targetId = href.substring(1);\r\n        if ((activeH2 && activeH2.id === targetId) || (activeH3 && activeH3.id === targetId)) {\r\n          item.classList.add('active');\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  \/\/ Call scrollSpy for each TOC on window scroll\r\n  const tocClasses = ['list_toc', 'list_toc_float', 'list_toc_top']; \/\/ Add other TOC class names here if you have more than two instances\r\n  tocClasses.forEach(tocClass => {\r\n    window.addEventListener('scroll', () => scrollSpy(tocClass));\r\n  });\r\n<\/script>\r\n\t\r\n\r\n<!-- ToC List for desktop side bar, diganti jadi inject by php, di code snippet \"Sidebar Accordion\" -->\r\n<!-- <script>\r\n\tdocument.addEventListener('DOMContentLoaded', function() {\r\n        \/\/ Fungsi untuk mengubah teks menjadi format id\r\n        function formatId(text) {\r\n            return text.trim().replace(\/[^\\w\\d]+\/g, '_');\r\n        }\r\n\r\n        \/\/ Fungsi untuk membuat nested list\r\n        function createNestedList(parentNode, children) {\r\n            if (children.length === 0) return;\r\n\r\n            const nestedUl = document.createElement('ul');\r\n            children.forEach(child => {\r\n                const nestedLi = document.createElement('li');\r\n                const nestedA = document.createElement('a');\r\n                nestedA.textContent = child.title;\r\n                nestedA.href = `#${child.id}`;\r\n                nestedLi.appendChild(nestedA);\r\n                nestedUl.appendChild(nestedLi);\r\n\r\n                if (child.children.length > 0) {\r\n                    createNestedList(nestedLi, child.children);\r\n                }\r\n            });\r\n\r\n            parentNode.appendChild(nestedUl);\r\n        }\r\n\r\n        \/\/ Membuat objek untuk menyimpan daftar h2 dan h3 beserta judulnya\r\n        const headings = [];\r\n\r\n           \/\/ Mengambil semua elemen h2 dan h3\r\n        const elements = document.querySelectorAll('.td-post-content h2');\r\n\t\t\t\/\/, .td-post-content h3\r\n\r\n        elements.forEach(element => {\r\n            if (element.tagName === 'H2') {\r\n                const id = formatId(element.textContent);\r\n                element.id = id;\r\n\t\t\t\tif(element.textContent.toLowerCase() === \"key takeaways\") {return;} \/\/ Biar ga nampilin Key Takeaways di ToC\r\n                headings.push({ level: 'h2', id: id, title: element.textContent, children: [] });\r\n            } else if (element.tagName === 'H3') {\r\n                const id = formatId(element.textContent);\r\n                element.id = id;\r\n                if (headings.length > 0) {\r\n                    headings[headings.length - 1].children.push({ level: 'h3', id: id, title: element.textContent, children: [] });\r\n                }\r\n            }\r\n        });\r\n\r\n        \/\/ Membuat list HTML dari objek headings\r\n        const ul = document.getElementById('list_toc');\r\n        let currentUl = ul;\r\n        headings.forEach(heading => {\r\n            const li = document.createElement('li');\r\n            const a = document.createElement('a');\r\n            a.textContent = heading.title;\r\n            a.href = `#${heading.id}`;\r\n            li.appendChild(a);\r\n\r\n            if (heading.level === 'h2') {\r\n                \/\/ Menyimpan ul saat ini untuk menambahkan nested ul\r\n                currentUl = li;\r\n                ul.appendChild(li);\r\n            } else if (heading.level === 'h3') {\r\n                if (!currentUl.lastElementChild || currentUl.lastElementChild.tagName !== 'UL') {\r\n                    \/\/ Jika belum ada nested ul, buat satu\r\n                    const nestedUl = document.createElement('ul');\r\n                    currentUl.appendChild(nestedUl);\r\n                    currentUl = nestedUl;\r\n                }\r\n                currentUl.appendChild(li);\r\n            }\r\n\r\n            createNestedList(li, heading.children);\r\n        });\r\n\t\t\/\/ Dapatkan elemen ul dengan id 'list_toc_float'\r\nconst ulFloat = document.getElementById('list_toc');\r\nconst ulJourney = document.getElementById('list_journey');\r\n\r\n\/\/ Dapatkan isi (child elements) dari ul dengan id 'list_toc_float'\r\n\tif (ulFloat !== null) {\r\n\t\tconst clonedChildren = ulFloat.cloneNode(true).children;\r\n\t\tconst ulToc = document.getElementById('list_toc_float');\r\n\t\tconst ulTocTop = document.getElementById('list_toc_top');\r\n\t\tif ((ulToc !== null || ulToc !== undefined) && window.innerWidth > 1018){\r\n\t\t\tulToc.append(...clonedChildren);\r\n\t\t} else {\r\n\t\t\tulTocTop.append(...clonedChildren);\r\n\t\t}\r\n\t} \r\n\r\n\tif (ulJourney !== null) {\r\n\t\tconst clonedChildrenJourney = ulJourney.cloneNode(true).children;\r\n\t\tconst ulTocJourney = document.getElementById('list_toc_journey');\r\n\t\tulTocJourney.append(...clonedChildrenJourney);\r\n\t} \r\n\r\n\r\n\r\n\r\n\t\r\n        \/\/ Fungsi untuk mengambil tinggi navbar\r\n        function getNavbarHeight() {\r\n            const navbar = document.getElementById('tdi_34');\r\n            return navbar ? navbar.offsetHeight : 0;\r\n        }\r\n\r\n        \/\/ Fungsi untuk menambahkan offset posisi scroll\r\n        function scrollToElementWithOffset(elementId) {\r\n            const element = document.getElementById(elementId);\r\n            if (element) {\r\n                const offset = getNavbarHeight();\r\n                const elementPosition = element.getBoundingClientRect().top;\r\n                const offsetPosition = elementPosition - offset-40;\r\n\r\n                window.scrollBy({\r\n                    top: offsetPosition,\r\n                    behavior: 'smooth'\r\n                });\r\n            }\r\n        }\r\n\r\n        \/\/ Fungsi untuk menangani klik pada tautan judul\r\n        function handleTitleClick(event) {\r\n            event.preventDefault();\r\n            const href = event.target.getAttribute('href').substr(1);\r\n            scrollToElementWithOffset(href);\r\n        }\r\n\r\n        \/\/ Tambahkan event listener untuk semua tautan judul\r\n        const titleLinks = document.querySelectorAll('a[href^=\"#\"]');\r\n        titleLinks.forEach(link => {\r\n            link.addEventListener('click', handleTitleClick);\r\n        });\r\n\t});\r\n    <\/script> -->\r\n<!-- \t<style>#toc_group_float{display:block !important}<\/style> -->\r\n\n<h2><strong>What Is Safety Stock?<\/strong><\/h2>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-16766\" src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/What-Is-Safety-Stock.webp\" alt=\" What Is Safety Stock\" width=\"800\" height=\"450\" srcset=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/What-Is-Safety-Stock.webp 800w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/What-Is-Safety-Stock-300x169.webp 300w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/What-Is-Safety-Stock-768x432.webp 768w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/What-Is-Safety-Stock-747x420.webp 747w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/What-Is-Safety-Stock-150x84.webp 150w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/What-Is-Safety-Stock-696x392.webp 696w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">At its core, safety stock is an <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/buffer-stock\/\">extra amount of inventory<\/a> you hold to reduce the chance of running out. It works as a buffer when demand spikes or when supply arrives later than usual. If cycle stock is what you expect to sell based on your forecast, safety stock is what protects you when that forecast is wrong.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">You also need to separate safety stock from anticipation inventory. Anticipation inventory is what you build because you already know something is coming, like a seasonal peak, a planned shutdown, or a big promotion. Safety stock is different because it covers what you cannot predict neatly. A sudden surge in orders, shipping delays due to weather, or a supplier disruption are the kinds of situations safety stock is meant to absorb.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><span id=\"Whay-hrms\">From a financial angle, safety stock is a real trade off. Holding more inventory creates costs, from warehousing and insurance to the opportunity cost of tied up cash. But not holding it creates another set of costs that can hurt more over time: stockouts, unhappy customers, and weaker repeat business. So safety stock is not extra stuff. It is the point where the cost of holding inventory meets the cost of losing sales and trust.<\/span><\/span><\/p>\n<h2 id=\"why-safety-stock-matters-more-than-most-teams-realize\"><strong>Why Safety Stock Matters More Than Most Teams Realize<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">Many teams treat safety stock like a fixed number that gets set once in an ERP system and then forgotten. That approach ignores how quickly supply chains change. If your parameters stay static while the real world shifts, your safety stock becomes outdated, and you only notice when problems hit.<\/span><\/p>\n<h3><b>Mitigating the Bullwhip Effect<\/b><\/h3>\n<p><span style=\"font-weight: 400;\"><a href=\"https:\/\/www.hashmicro.com\/my\/blog\/reorder-point-formula\/\">The bullwhip effect<\/a> happens when small changes in retail demand create bigger and bigger swings upstream, from distributors to manufacturers and raw material suppliers. With a reasonable safety stock buffer, you do not have to panic order every time sales jump a little. That keeps your purchasing pattern more stable and helps you avoid pushing chaos into your supplier network.<\/span><\/p>\n<h3><b>Protecting Service Levels<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Customer patience is low. If an item is not available, many buyers will switch with one click. Safety stock links <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/delivery-lead-time\/\">directly to service level<\/a>, which is the probability you can meet demand during lead time without a stockout. With a clear policy, you can decide your target, such as 95 percent or 99 percent, and hold inventory based on the risk you are willing to accept.<\/span><\/p>\n<h3><b>Buffering Against Lead Time Variability<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">A lot of inventory planning focuses on demand swings, but lead time variability can quietly cause the worst stockouts. If you import materials or products, shipping schedules, port congestion, or customs clearance can push deliveries back by days. In Malaysia, this risk often increases during high volume periods like Hari Raya or major e commerce campaigns. Safety stock gives you breathing room so your customers do not feel those upstream delays.<\/span><\/p>\n<h3><b>Operational Efficiency<\/b><\/h3>\n<p><span style=\"font-weight: 400;\"><span id=\"You-hrms\">Stockouts push your team into constant firefighting. You pay for expedited freight, rush production, and urgent procurement just to keep operations moving. Margins suffer quickly. With the right safety stock, your operation stays closer to plan: production runs more smoothly, shipping stays standard, and your team spends less time reacting to emergencies.<\/span><\/span><\/p>\n<h2 id=\"what-you-need-before-calculating-safety-stock\"><strong>What You Need Before Calculating Safety Stock<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">Before you touch any formula, you need reliable data. Inventory math follows a simple rule: bad data gives you bad results. If your history is messy, your safety stock will either bloat your warehouse or leave you exposed to frequent stockouts. So you need a solid inventory control setup that captures the variables that matter.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Here are the key data points you should prepare:<\/span><\/p>\n<ul>\n<li><b>Average Daily Demand: <\/b><span style=\"font-weight: 400;\">The average number of units you sell or consume per day. Use a long enough period to smooth random spikes, such as the last 6 to 12 months.<\/span><\/li>\n<li><b>Standard Deviation of Demand: <\/b><span style=\"font-weight: 400;\">A measure of how much demand varies from the average. Stable items have low deviation. Volatile items have high deviation.<\/span><\/li>\n<li><b>Average Lead Time: <\/b><span style=\"font-weight: 400;\">The average time, in days, from placing an order to receiving it. This includes processing, production, and shipping.<\/span><\/li>\n<li><b>Standard Deviation of Lead Time: <\/b><span style=\"font-weight: 400;\">A measure of supplier reliability. If a supplier promises 10 days but actually delivers anywhere from 5 to 15, lead time deviation is high.<\/span><\/li>\n<li><b>Target Service Level: <\/b><span style=\"font-weight: 400;\">A management decision about the probability of meeting demand from stock. This is usually expressed as a percentage and translated into a Z score.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">If you store or process vendor and customer data in your system, keep the compliance side in mind too. In Malaysia, the <a href=\"https:\/\/lom.agc.gov.my\/act-detail.php?act=709&amp;lang=BI&amp;type=principal\">Personal Data Protection Act 2010<\/a> matters when you handle contact details and other personal data. Even in supply chain work, disciplined data access and handling helps you avoid operational and legal headaches.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">You also need to clean your data. Remove outliers that do not reflect normal behavior, such as a one time bulk order that is unlikely to repeat. If you let rare events distort your history, your buffer will be based on exceptions, not reality.<\/span><\/p>\n<h2 id=\"how-to-calculate-safety-stock\"><strong>How to Calculate Safety Stock<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">There is no single best safety stock formula for every business. The right method depends on how stable your demand is and how reliable your supply is. Below are common approaches, from simple rules to stronger statistical methods.<\/span><\/p>\n<h3><b>Basic Formula Fixed Safety Days<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">This is the simplest approach. You decide how many days of buffer you want and keep that amount.<\/span><\/p>\n<p><b>Formula:<\/b><b><br \/>\n<\/b><span style=\"font-weight: 400;\"> Safety Stock = Average Daily Usage \u00d7 Desired Safety Days<\/span><\/p>\n<p><span style=\"font-weight: 400;\">It is easy, but it ignores variability. It assumes demand and lead time are constant, which rarely holds in real operations.<\/span><\/p>\n<h3><b>Average Max Method<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">This method is a step up and works well if you do not have advanced statistical tools but still want a buffer that reflects worst case within reason.<\/span><\/p>\n<p><b>Formula:<\/b><b><br \/>\n<\/b><span style=\"font-weight: 400;\"> (Max Daily Usage \u00d7 Max Lead Time) minus (Average Daily Usage \u00d7 Average Lead Time)<\/span><\/p>\n<p><b>How it works:<\/b><span style=\"font-weight: 400;\"> you estimate how much you would need if demand hits its peak and supply arrives as late as it ever has. Then you subtract what you would use in a typical situation. The difference is your buffer.<\/span><\/p>\n<p><b>Pros:<\/b><span style=\"font-weight: 400;\"> easy to understand and calculate manually.<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span> <b>Cons:<\/b><span style=\"font-weight: 400;\"> can create high inventory because it assumes peak demand and worst lead time happen together, which is not common.<\/span><\/p>\n<h3><b>Standard Deviation Method Z Score Based<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">This is the most widely used approach in professional planning. It uses demand history to build a buffer that aligns with your target service level.<\/span><\/p>\n<p><b>Formula:<\/b><b><br \/>\n<\/b><span style=\"font-weight: 400;\"> Safety Stock = Z \u00d7 \u03c3D \u00d7 \u221aL<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Where:<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\"> Z = Z score for your service level, such as 1.65 for 95 percent<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\"> \u03c3D = standard deviation of demand<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\"> L = average lead time<\/span><\/p>\n<p><span style=\"font-weight: 400;\">This version assumes lead time is constant and demand is the main source of uncertainty. It fits well when suppliers are consistent but customer demand changes.<\/span><\/p>\n<h3><b>Variable Demand Formula<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">If your lead time is stable but your customers are unpredictable, you focus on demand variability. In practice, that is the same formula as the standard deviation method above. Your buffer exists to absorb sales spikes.<\/span><\/p>\n<h3><b>Variable Lead Time Formula<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">If demand is stable but suppliers are unreliable, the risk is supply timing, not the market.<\/span><\/p>\n<p><b>Formula:<\/b><b><br \/>\n<\/b><span style=\"font-weight: 400;\"> Safety Stock = Z \u00d7 D_avg \u00d7 \u03c3L<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Where:<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\"> Z = Z score<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\"> D_avg = average daily demand<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\"> \u03c3L = standard deviation of lead time<\/span><\/p>\n<h3><b>Combined Demand and Lead Time Variability Heizer and Render<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">In real life, both demand and lead time change. If you only protect against one, you can still end up short. A more robust formula combines both sources of variability.<\/span><\/p>\n<p><b>Formula:<\/b><b><br \/>\n<\/b><span style=\"font-weight: 400;\"> Safety Stock = Z \u00d7 \u221a((Avg LT \u00d7 \u03c3D\u00b2) + (Avg Demand\u00b2 \u00d7 \u03c3LT\u00b2))<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><span id=\"Will-hrms\">This estimates the variability of demand during lead time by combining variances. It is a strong option for complex supply chains because it helps you avoid overstocking while still protecting service levels under dual uncertainty.<\/span><\/span><\/p>\n<h2 id=\"related-formulas\"><strong>Related Formulas You Will Use Alongside Safety Stock<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">Safety stock is not a standalone number. You use it together with reorder points and order quantities. If you calculate safety stock but do not connect it to ordering logic, you can still run into stockouts or excess inventory.<\/span><\/p>\n<h3><b>Reorder Point ROP<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Reorder point tells you when to place an order. Without a buffer, you risk stocking out whenever demand or lead time runs higher than expected. <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/jit-inventory\/\">Safety stock raises<\/a> your reorder point to cover that risk.<\/span><\/p>\n<p><b>Formula:<\/b><b><br \/>\n<\/b><span style=\"font-weight: 400;\"> ROP = (Average Daily Usage \u00d7 Average Lead Time) + Safety Stock<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The first part covers expected demand during lead time. The second part adds your buffer.<\/span><\/p>\n<h3><b>Economic Order Quantity EOQ<\/b><\/h3>\n<p><span style=\"font-weight: 400;\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-16770\" src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/Economic-Order-Quantity-EOQ.webp\" alt=\"Economic Order Quantity EOQ\" width=\"800\" height=\"533\" srcset=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/Economic-Order-Quantity-EOQ.webp 800w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/Economic-Order-Quantity-EOQ-300x200.webp 300w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/Economic-Order-Quantity-EOQ-768x512.webp 768w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/Economic-Order-Quantity-EOQ-630x420.webp 630w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/Economic-Order-Quantity-EOQ-150x100.webp 150w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/Economic-Order-Quantity-EOQ-696x464.webp 696w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/span><\/p>\n<h3><b>Lead Time Demand<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">This is the amount of stock you expect to consume while you wait for replenishment to arrive.<\/span><\/p>\n<p><b>Formula:<\/b><b><br \/>\n<\/b><span style=\"font-weight: 400;\"> Average Daily Demand \u00d7 Average Lead Time<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><span id=\"Pick-hrms\">Lead time demand is your forecast. Safety stock is your hedge when reality does not match that forecast. You need both to set a reorder point that holds up in day to day operations.<\/span><\/span><\/p>\n<h2 id=\"picking-the-right-formula\"><strong>How to Pick the Right Formula for Your Business<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">With several formulas available, the best choice depends on your data maturity and risk tolerance. Think of it as matching the tool to your reality, not forcing reality into a single method.<\/span><\/p>\n<h3><b>1. The Startup Phase Low Data Low Volume<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">If you do not have enough clean history, statistical models can give strange results.<\/span><\/p>\n<p><b>Recommendation:<\/b><span style=\"font-weight: 400;\"> use <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/inventory-control\/\">the Average Max Method<\/a>. It is conservative and easy to run while your data improves.<\/span><\/p>\n<h3><b>2. The Steady State Business Stable Supply Variable Demand<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">If supply is reliable but demand fluctuates, which is common in retail and distribution.<\/span><\/p>\n<p><b>Recommendation:<\/b><span style=\"font-weight: 400;\"> use the Standard Deviation Method focused on demand. You optimize based on customer behavior without over buffering for supply risks that are minor.<\/span><\/p>\n<h3><b>3. The Global Importer Stable Demand Volatile Supply<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">If your demand is stable but lead time is unpredictable, which often happens with overseas sourcing.<\/span><\/p>\n<p><b>Recommendation:<\/b><span style=\"font-weight: 400;\"> use the Variable Lead Time Formula.<\/span><\/p>\n<h3><b>4. The High Performance Enterprise High Volatility High Service Requirements<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">If both demand and supply are volatile and stockouts are costly.<\/span><\/p>\n<p><b>Recommendation:<\/b><span style=\"font-weight: 400;\"> use the Combined Demand and Lead Time Variability formula. It is the most reliable option when you face dual uncertainty.<\/span><\/p>\n<h2 id=\"calculation-example\"><strong>Safety Stock Calculation Example<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">To make this practical, here is a step by step example using the standard deviation method that focuses on demand.<\/span><\/p>\n<p><b>Scenario:<\/b><span style=\"font-weight: 400;\"> you sell fast moving electronic components.<\/span><\/p>\n<p><b>Data you have:<\/b><\/p>\n<ol>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Average daily demand: 50 units<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Average lead time: 10 days<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Target service level: 95 percent, Z score 1.65<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Standard deviation of demand: 12 units<\/span><\/li>\n<\/ol>\n<p><b>Step 1: Pick the formula<\/b><b><br \/>\n<\/b><span style=\"font-weight: 400;\"> Since lead time is stable, use:<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\"> Safety Stock = Z \u00d7 \u03c3D \u00d7 \u221aL<\/span><\/p>\n<p><b>Step 2: Calculate the square root of lead time<\/b><b><br \/>\n<\/b><span style=\"font-weight: 400;\"> \u221a10 is about 3.16<\/span><\/p>\n<p><b>Step 3: Plug in the numbers<\/b><b><br \/>\n<\/b><span style=\"font-weight: 400;\"> Safety Stock = 1.65 \u00d7 12 \u00d7 3.16<\/span><\/p>\n<p><b>Step 4: Multiply<\/b><b><br \/>\n<\/b><span style=\"font-weight: 400;\"> 1.65 \u00d7 12 = 19.8<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\"> 19.8 \u00d7 3.16 = 62.56<\/span><\/p>\n<p><b>Step 5: Round up<\/b><b><br \/>\n<\/b><span style=\"font-weight: 400;\"> You cannot hold 0.56 of a unit, so round up.<\/span><\/p>\n<p><b>Safety stock = 63 units<\/b><\/p>\n<p><b>Reorder point:<\/b><b><br \/>\n<\/b><span style=\"font-weight: 400;\"> Cycle stock during lead time = 50 \u00d7 10 = 500 units<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\"> ROP = 500 + 63 = 563 units<\/span><\/p>\n<p><span style=\"font-weight: 400;\">So when your on hand inventory drops to 563, you place a new order.<\/span><\/p>\n<h2 id=\"when-to-recalculate\"><strong>When to Recalculate Safety Stock<\/strong><\/h2>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-16767\" src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/When-to-Recalculate-Safety-Stock.webp\" alt=\"When to Recalculate Safety Stock\" width=\"800\" height=\"533\" srcset=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/When-to-Recalculate-Safety-Stock.webp 800w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/When-to-Recalculate-Safety-Stock-300x200.webp 300w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/When-to-Recalculate-Safety-Stock-768x512.webp 768w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/When-to-Recalculate-Safety-Stock-630x420.webp 630w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/When-to-Recalculate-Safety-Stock-150x100.webp 150w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/When-to-Recalculate-Safety-Stock-696x464.webp 696w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">A common mistake is treating safety stock as set and forget. Supply chains keep changing, so your buffer needs updates too. Recalculate when these triggers appear.<\/span><\/p>\n<h3><b>1. Changes in Supplier Performance<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">If a supplier changes warehouses, switches carriers, or faces capacity changes, lead time variability shifts. If reliability improves, you can reduce buffer and free cash. If reliability drops, you need more buffer to maintain the same service level.<\/span><\/p>\n<h3><b>2. Introduction of New Products<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">New products do not have enough history. At first, you can use a simpler method. Once you build a few months of data, switch to a statistical method to tune the buffer more accurately.<\/span><\/p>\n<h3><b>3. Seasonal Fluctuations<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Demand variability changes with seasons. In Malaysia, spikes can happen before Hari Raya, year end shopping, and major e commerce campaigns. If you rely on a single year round deviation, you can end up overstocked in quiet months and short in peak periods. Segment your calculations by season or relevant periods to keep buffers realistic.<\/span><\/p>\n<h3><b>4. Strategic Business Shifts<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">If leadership raises your service level target from 95 percent to 99 percent, the Z score changes. That means safety stock must increase across affected SKUs. Update immediately so your inventory policy matches the new strategy.<\/span><\/p>\n<style>\r\n    #custom-quote {\r\n        background-color: #f0f0f0;\r\n        padding: 20px;\r\n        border-radius: 12px;\r\n        margin: 20px;\r\n        display: flex;\r\n        flex-direction: column;\r\n    }\r\n\r\n    #custom-quote .quote-body {\r\n        display: flex;\r\n        flex-direction: row;\r\n        align-items: flex-start;\r\n        gap: 15px;\r\n        font-size: 16px;\r\n        line-height: 1.5;\r\n        font-style: italic;\r\n    }\r\n\r\n    #custom-quote .quote-icon {\r\n        width: 40px;\r\n        height: 40px;\r\n        flex-shrink: 0;\r\n    }\r\n\r\n    #custom-quote .quote-author-wrapper {\r\n        margin-top: 15px;\r\n        align-self: flex-start;\r\n        margin-left: 55px; \r\n\t\tmargin-bottom: 0px;\r\n    }\r\n\r\n    #custom-quote em {\r\n        font-family: 'Roboto Serif', serif !important;\r\n        font-size: 12px;\r\n        font-weight: bold;\r\n        font-style: normal;\r\n    }\r\n\r\n    @media screen and (max-width: 768px) {\r\n        #custom-quote {\r\n            margin: 15px 0;\r\n            padding: 15px;\r\n        }\r\n        \r\n        #custom-quote .quote-body {\r\n            gap: 12px;\r\n        }\r\n\r\n        #custom-quote .quote-author-wrapper {\r\n            margin-left: 52px;\r\n        }\r\n    }\r\n\r\n    @media screen and (max-width: 480px) {\r\n        #custom-quote {\r\n            margin: 10px 0;\r\n            padding: 12px;\r\n        }\r\n\r\n        #custom-quote .quote-body {\r\n            font-size: 14px;\r\n            gap: 10px;\r\n        }\r\n\r\n        #custom-quote .quote-icon {\r\n            width: 32px;\r\n            height: 32px;\r\n        }\r\n\r\n        #custom-quote .quote-author-wrapper {\r\n            margin-top: 10px;\r\n            margin-left: 42px;\r\n        }\r\n    }\r\n<\/style>\r\n\r\n<div id=\"custom-quote\">\r\n    <div class=\"quote-body\">\r\n        <img decoding=\"async\" src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/12\/quote.webp\" alt=\"Quote Icon\" class=\"quote-icon\">\r\n        <div>\r\n            Safety stock isn&#039;t a set and forget number. Treat it as a living buffer that should be reviewed when supplier reliability shifts, new products launch, seasonality changes, or service targets move.        <\/div>\r\n    <\/div>\r\n    <p class=\"quote-author-wrapper\">\r\n        <em>Lusiana Lu<\/em>\r\n    <\/p>\r\n<\/div>\n<h2 id=\"common-mistakes\"><strong>Common Safety Stock Mistakes and How to Avoid Them<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">Even with the right formulas, implementation mistakes can still ruin your results. Here are the most common issues and how you can prevent them.<\/span><\/p>\n<h3><b>1. Applying a One Size Fits All Policy<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Using the same service level for every item wastes money. Low value items may justify a lower service target. High margin items usually need a higher target. Segment items using ABC analysis and assign service levels based on impact.<\/span><\/p>\n<h3><b>2. Ignoring Lead Time Variability<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Many planners focus only on demand. But in global supply chains, lead time variance can be the main driver of stockouts. If suppliers are inconsistent, adding buffer based on demand alone will not fix timing risk. Measure lead time deviation and include it in your calculations.<\/span><\/p>\n<h3><b>3. Confusing Safety Stock with Cycle Stock<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Some teams see a buffer and assume they do not need to reorder yet. That mistake consumes the buffer during normal operations. Treat safety stock as invisible for routine planning. If you dip into it, treat that as a signal and rebuild the buffer, not a reason to delay replenishment.<\/span><\/p>\n<h3><b>4. Relying on Gut Feeling<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Manual padding often inflates inventory without solving root causes. Adding a bit more on top of a calculated buffer fills warehouses and strains cash flow. If the result feels too risky, adjust the inputs, such as service level, or improve data quality, instead of arbitrarily increasing the final number.<\/span><\/p>\n<h2 id=\"conclusion\">Conclusion<\/h2>\n<p>Safety stock is the financial and operational shock absorber of your supply chain. It bridges the gap between the perfect world of spreadsheets and the chaotic reality of global logistics. By understanding the different calculation methods from the simple Average Max to the comprehensive Heizer &amp; Render formula, you can tailor your inventory strategy to the specific risks your business faces.<\/p>\n<p>However, calculation is only the first step. The real value comes from continuous monitoring and dynamic adjustment. As markets shift, suppliers evolve, and business goals change, your safety stock levels must adapt. While manual spreadsheets can handle basic calculations, modern businesses increasingly rely on automated solutions like HashMicro to process these complex variables in real-time, ensuring that the balance between capital efficiency and customer satisfaction is always maintained.<\/p>\n<p>Mastering safety stock is not just about math; it is about giving your business the resilience to thrive in an unpredictable world.<\/p>\n<h2><strong>Frequently Asked Questions About Safety Stock<\/strong><\/h2>\n<ul class=\"bottom_faq\">\n<li>\n<details>\n<summary><strong>What is safety stock, and how is it different from anticipation inventory?<\/strong><\/summary>\n<p>Safety stock is the buffer you keep for things you can\u2019t predict cleanly, like sudden demand spikes or supplier delays. It\u2019s not extra stock for comfort, it\u2019s there to help you keep fulfilling orders when reality doesn\u2019t match the plan. Anticipation inventory is different because you build it for events you already expect, like seasonal peaks or planned promos.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>What data do you need before calculating safety stock?<\/strong><\/summary>\n<p>You need clean demand and lead time data: average daily demand, demand standard deviation, average lead time, lead time standard deviation, plus your target service level. You also want to remove outliers that don\u2019t represent normal patterns, so rare one-off events don\u2019t inflate your buffer.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Which safety stock formula should you use for your business?<\/strong><\/summary>\n<p>There\u2019s no one size fits all formula. If demand is volatile but lead time is stable, use a method that focuses on demand variability. If demand is stable but suppliers are inconsistent, focus on lead time variability. If both demand and lead time fluctuate, use a combined approach that accounts for both risks.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>When should you recalculate safety stock?<\/strong><\/summary>\n<p>Don\u2019t treat safety stock as set and forget. Recalculate when supplier performance changes, when you launch new products, when seasonal patterns shift (in Malaysia, spikes often show up before Hari Raya or big e-commerce campaigns), or when your service level target changes. Keeping it updated helps you avoid overstock in quiet periods and stockouts in peak periods.<\/p>\n<\/details>\n<\/li>\n<\/ul>\n<p><script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [{\n    \"@type\": \"Question\",\n    \"name\": \"What is safety stock, and how is it different from anticipation inventory?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Safety stock is the buffer you keep for things you can\u2019t predict cleanly, like sudden demand spikes or supplier delays. It\u2019s not extra stock for comfort, it\u2019s there to help you keep fulfilling orders when reality doesn\u2019t match the plan. Anticipation inventory is different because you build it for events you already expect, like seasonal peaks or planned promos.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"What data do you need before calculating safety stock?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"You need clean demand and lead time data: average daily demand, demand standard deviation, average lead time, lead time standard deviation, plus your target service level. You also want to remove outliers that don\u2019t represent normal patterns, so rare one-off events don\u2019t inflate your buffer.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"Which safety stock formula should you use for your business?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"There\u2019s no one size fits all formula. If demand is volatile but lead time is stable, use a method that focuses on demand variability. If demand is stable but suppliers are inconsistent, focus on lead time variability. If both demand and lead time fluctuate, use a combined approach that accounts for both risks.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"When should you recalculate safety stock?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Don\u2019t treat safety stock as set and forget. Recalculate when supplier performance changes, when you launch new products, when seasonal patterns shift (in Malaysia, spikes often show up before Hari Raya or big e-commerce campaigns), or when your service level target changes. Keeping it updated helps you avoid overstock in quiet periods and stockouts in peak periods.\"\n    }\n  }]\n}\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In supply chain work, the gap between profit and loss often comes down to one thing that looks simple on paper: inventory availability. If you keep too little stock, you face stockouts, lost sales, and customers who move on faster than you expect. But if you keep too much, your cash gets stuck in the [&hellip;]<\/p>\n","protected":false},"author":44,"featured_media":16765,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[66],"tags":[],"class_list":{"0":"post-16705","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-inventory"},"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.6 (Yoast SEO v26.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Safety Stock Guide: How to Calculate Buffers Without Overstocking<\/title>\n<meta name=\"description\" content=\"Safety stock prevents stockouts without locking cash in excess inventory. Learn the right data, formula, and when to recalibrate.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.hashmicro.com\/my\/blog\/safety-stock\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Safety Stock: What It Is, How to Calculate, and How to Get It Right\" \/>\n<meta property=\"og:description\" content=\"Safety stock prevents stockouts without locking cash in excess inventory. Learn the right data, formula, and when to recalibrate.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/my\/blog\/safety-stock\/\" \/>\n<meta property=\"og:site_name\" content=\"HashMicro Malaysia\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-26T10:21:39+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-27T04:31:07+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/Safety-Stock-Calculate.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"441\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Nurul Ain\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Nurul Ain\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"14 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/safety-stock\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/safety-stock\/\"},\"author\":{\"name\":\"Nurul Ain\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/d9f06e18a636ec61b2a0351cd68b7be4\"},\"headline\":\"Safety Stock: What It Is, How to Calculate, and How to Get It Right\",\"datePublished\":\"2026-02-26T10:21:39+00:00\",\"dateModified\":\"2026-02-27T04:31:07+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/safety-stock\/\"},\"wordCount\":2882,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/safety-stock\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/Safety-Stock-Calculate.webp\",\"articleSection\":[\"Inventory\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.hashmicro.com\/my\/blog\/safety-stock\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/safety-stock\/\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/safety-stock\/\",\"name\":\"Safety Stock Guide: How to Calculate Buffers Without Overstocking\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/safety-stock\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/safety-stock\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/Safety-Stock-Calculate.webp\",\"datePublished\":\"2026-02-26T10:21:39+00:00\",\"dateModified\":\"2026-02-27T04:31:07+00:00\",\"description\":\"Safety stock prevents stockouts without locking cash in excess inventory. Learn the right data, formula, and when to recalibrate.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/safety-stock\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.hashmicro.com\/my\/blog\/safety-stock\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/safety-stock\/#primaryimage\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/Safety-Stock-Calculate.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/Safety-Stock-Calculate.webp\",\"width\":800,\"height\":441,\"caption\":\"Safety Stock Calculate\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/safety-stock\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.hashmicro.com\/my\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Safety Stock: What It Is, How to Calculate, and How to Get It Right\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#website\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/\",\"name\":\"HashMicro Malaysia\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.hashmicro.com\/my\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#organization\",\"name\":\"HashMicro Malaysia\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/09\/logo.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/09\/logo.webp\",\"width\":422,\"height\":255,\"caption\":\"HashMicro Malaysia\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/d9f06e18a636ec61b2a0351cd68b7be4\",\"name\":\"Nurul Ain\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/image\/\",\"url\":\"http:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/10\/cropped-Nurul-Ain-MY-BG-Toko-1080x1080-1-96x96.webp\",\"contentUrl\":\"http:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/10\/cropped-Nurul-Ain-MY-BG-Toko-1080x1080-1-96x96.webp\",\"caption\":\"Nurul Ain\"},\"description\":\"Nurul Ain focuses on inventory management, crafting articles that cover stock control, demand forecasting, and warehouse efficiency. She provides actionable tips for reducing inventory costs and avoiding stockouts. Her content supports both small and large businesses in optimizing their inventory practices.\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/author\/nurul-ain\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Safety Stock Guide: How to Calculate Buffers Without Overstocking","description":"Safety stock prevents stockouts without locking cash in excess inventory. Learn the right data, formula, and when to recalibrate.","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:\/\/www.hashmicro.com\/my\/blog\/safety-stock\/","og_locale":"en_US","og_type":"article","og_title":"Safety Stock: What It Is, How to Calculate, and How to Get It Right","og_description":"Safety stock prevents stockouts without locking cash in excess inventory. Learn the right data, formula, and when to recalibrate.","og_url":"https:\/\/www.hashmicro.com\/my\/blog\/safety-stock\/","og_site_name":"HashMicro Malaysia","article_published_time":"2026-02-26T10:21:39+00:00","article_modified_time":"2026-02-27T04:31:07+00:00","og_image":[{"width":800,"height":441,"url":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/Safety-Stock-Calculate.webp","type":"image\/webp"}],"author":"Nurul Ain","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Nurul Ain","Est. reading time":"14 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/my\/blog\/safety-stock\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/safety-stock\/"},"author":{"name":"Nurul Ain","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/d9f06e18a636ec61b2a0351cd68b7be4"},"headline":"Safety Stock: What It Is, How to Calculate, and How to Get It Right","datePublished":"2026-02-26T10:21:39+00:00","dateModified":"2026-02-27T04:31:07+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/safety-stock\/"},"wordCount":2882,"commentCount":0,"publisher":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/#organization"},"image":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/safety-stock\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/Safety-Stock-Calculate.webp","articleSection":["Inventory"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.hashmicro.com\/my\/blog\/safety-stock\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/my\/blog\/safety-stock\/","url":"https:\/\/www.hashmicro.com\/my\/blog\/safety-stock\/","name":"Safety Stock Guide: How to Calculate Buffers Without Overstocking","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/safety-stock\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/safety-stock\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/Safety-Stock-Calculate.webp","datePublished":"2026-02-26T10:21:39+00:00","dateModified":"2026-02-27T04:31:07+00:00","description":"Safety stock prevents stockouts without locking cash in excess inventory. Learn the right data, formula, and when to recalibrate.","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/safety-stock\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/my\/blog\/safety-stock\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/my\/blog\/safety-stock\/#primaryimage","url":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/Safety-Stock-Calculate.webp","contentUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/02\/Safety-Stock-Calculate.webp","width":800,"height":441,"caption":"Safety Stock Calculate"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/my\/blog\/safety-stock\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/my\/blog\/"},{"@type":"ListItem","position":2,"name":"Safety Stock: What It Is, How to Calculate, and How to Get It Right"}]},{"@type":"WebSite","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#website","url":"https:\/\/www.hashmicro.com\/my\/blog\/","name":"HashMicro Malaysia","description":"","publisher":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.hashmicro.com\/my\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#organization","name":"HashMicro Malaysia","url":"https:\/\/www.hashmicro.com\/my\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/09\/logo.webp","contentUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/09\/logo.webp","width":422,"height":255,"caption":"HashMicro Malaysia"},"image":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/d9f06e18a636ec61b2a0351cd68b7be4","name":"Nurul Ain","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/image\/","url":"http:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/10\/cropped-Nurul-Ain-MY-BG-Toko-1080x1080-1-96x96.webp","contentUrl":"http:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/10\/cropped-Nurul-Ain-MY-BG-Toko-1080x1080-1-96x96.webp","caption":"Nurul Ain"},"description":"Nurul Ain focuses on inventory management, crafting articles that cover stock control, demand forecasting, and warehouse efficiency. She provides actionable tips for reducing inventory costs and avoiding stockouts. Her content supports both small and large businesses in optimizing their inventory practices.","url":"https:\/\/www.hashmicro.com\/my\/blog\/author\/nurul-ain\/"}]}},"order_j":"","_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/posts\/16705","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/users\/44"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/comments?post=16705"}],"version-history":[{"count":4,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/posts\/16705\/revisions"}],"predecessor-version":[{"id":16817,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/posts\/16705\/revisions\/16817"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/media\/16765"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/media?parent=16705"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/categories?post=16705"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/tags?post=16705"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}