{"id":17766,"date":"2026-03-16T08:52:34","date_gmt":"2026-03-16T08:52:34","guid":{"rendered":"https:\/\/www.hashmicro.com\/my\/blog\/?p=17766"},"modified":"2026-04-22T07:23:06","modified_gmt":"2026-04-22T07:23:06","slug":"attrition-rate","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/my\/blog\/attrition-rate\/","title":{"rendered":"Attrition Rate: Definition, Formula, and Management"},"content":{"rendered":"<p>Analyzing talent movement is essential for long-term success in today\u2019s rapidly changing business environment. Global economic shifts and evolving employee expectations have forced leaders to look deeper than simple headcount figures. To ensure workforce sustainability, organizations must prioritize a comprehensive understanding of how talent flows through their operations.<\/p>\n<p style=\"text-align: left;\">With <a href=\"https:\/\/www.aon.com\/apac\/in-the-press\/asia-newsroom\/2025\/aon-survey-projects-4-8-percent-salary-growth-for-malaysia-in-2026#:~:text=Attrition%20rates%20in%20Malaysia%20also,percent%20and%2017.1%20percent%2C%20respectively.\" target=\"_blank\" rel=\"noopener\">Malaysia&#8217;s attrition rates around 18%<\/a>, local firms face talent scarcity as workers prioritize upskilling and work-life balance. This trend forces the manufacturing and tech sectors to implement stronger retention strategies to stay competitive. Navigating these shifts is essential for any business operating within Malaysia&#8217;s high-value, knowledge-driven economy.<\/p>\n<p>Monitoring <a href=\"https:\/\/www.hashmicro.com\/my\/human-resource-management\">the Attrition Rate provides high-value<\/a> data for strategic planning and cultural health to prevent operational gaps. Proactively evaluating these departure patterns helps companies build resilient, high-performing teams and maintain a competitive advantage.<\/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: #990000; color: #ffffff; padding: 5px;\"><b>Key Takeaways<\/b><\/span><\/h3>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"#attrition-rate\">Attrition rate<\/a> measures how quickly employees leave an organization without replacement, serving as a key indicator of workforce stability, employee experience, and the overall alignment between talent strategy and business goals.<\/li>\n<li aria-level=\"1\">Understanding the <a href=\"#different-types\">different types of employee attrition<\/a> helps organizations identify the underlying causes of workforce departures and develop targeted strategies to maintain a stable and productive team.<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"#calculate\">Calculating attrition rate<\/a> requires consistent use of workforce data and clear formulas to accurately measure employee departures and generate meaningful insights for workforce analysis and planning.<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span data-sheets-root=\"1\"><!-- <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<\/span><\/p>\n<p>Don\u2019t let a rising attrition rate disrupt your business growth. Use HRM Software to monitor employee patterns and implement proactive retention tools before talent slips away.<\/p>\n\r\n    <div class=\"adjustable-banner-wrap\">\r\n        <a href=\"https:\/\/www.hashmicro.com\/my\/inventory-management-system?medium=moneysite-banner\" target=\"_blank\">\r\n            <img decoding=\"async\" loading=\"lazy\"\r\n                 src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/inventory_desktop.webp\"\r\n                 data-desktop-src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/inventory_desktop.webp\"\r\n                 data-mobile-src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/inventory_mobile.webp\"\r\n                 alt=\"Inventory\"\r\n                 class=\"responsive-image-banner\">\r\n\r\n            \r\n            <div class=\"adjustable-banner-overlay\" style=\"width: 46%\">\r\n                <p class=\"adjustable-banner-text\">&lt;span class='adjustable-highlight'&gt;Know exactly &lt;\/span&gt;what\u2019s in stock and prevent costly inventory mistakes. &lt;br&gt;<\/p>\r\n                <div class=\"adjustable-banner-btn\">Schedule a Consultation<\/div>\r\n            <\/div>\r\n\r\n        <\/a>\r\n    <\/div>\r\n<script>\r\n    \/\/ check which image to use based on screensize\r\n    document.addEventListener(\"DOMContentLoaded\", function() {\r\n        function updateImageSource() {\r\n            var images = document.querySelectorAll('.responsive-image-banner');\r\n            var screenWidth = window.innerWidth;\r\n\r\n            images.forEach(function(img) {\r\n                var mobileSrc = img.getAttribute('data-mobile-src');\r\n                var desktopSrc = img.getAttribute('data-desktop-src');\r\n\r\n                if (screenWidth < 576 && mobileSrc) {\r\n                    img.setAttribute('src', mobileSrc);\r\n                } else {\r\n                    img.setAttribute('src', desktopSrc);\r\n                }\r\n            });\r\n        }\r\n\r\n        \/\/ Initial check\r\n        updateImageSource();\r\n\r\n        \/\/ Update on resize\r\n        window.addEventListener('resize', updateImageSource);\r\n    });\r\n<\/script>\n<h2 id=\"understanding-attrition-rate-a-fundamental-hr-metric\"><strong><span id=\"attrition-rate\">What is Attrition Rate? A Fundamental of HR Metric<\/span><\/strong><\/h2>\n<p>Attrition rate is an HR metric that shows how many employees leave a company over a certain period without being immediately replaced. It helps businesses understand whether their workforce is shrinking and how that may affect overall operations.<\/p>\n<p>More than just a number, attrition rate can reflect the health of an organization. A high attrition rate may indicate problems such as poor management, low employee engagement, limited career growth, or uncompetitive compensation. On the other hand, a stable attrition rate can suggest that employees feel supported and are more likely to stay with the company. In <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/human-capital-management-hcm\/\">comprehensive human capital management<\/a>, monitoring it is key to assessing organizational health, workforce planning, and efficiency.<\/p>\n<p>Tracking attrition rate is also important for workforce planning and budgeting. When roles remain vacant for too long, the workload often shifts to existing employees, which can lead to stress, lower productivity, and even more resignations. For this reason, attrition rate is often used by HR teams to support better decisions in hiring, retention, and employee development.<\/p>\n<h2 id=\"attrition-vs-turnover-clarifying-the-confusion\"><strong>Attrition vs. Turnover: Clarifying the Confusion<\/strong><\/h2>\n<p>Although the terms attrition and turnover are often used interchangeably, they describe different workforce dynamics within an organization. Understanding the distinction helps HR teams analyze employee movement more accurately and design appropriate workforce strategies. The comparison table below highlights the key differences between attrition and turnover in a clear and practical way.<\/p>\n<div class=\"hm-decision-matrix\">\n<div style=\"width: 100%; overflow-x: auto; margin: 0 0 30px 0;\">\n<table style=\"width: 100%; min-width: 980px; border-collapse: collapse; table-layout: fixed; font-family: Arial, sans-serif;\">\n<thead>\n<tr>\n<td style=\"background-color: #990000; color: #ffffff; padding: 10px; text-align: center; border: 1px solid #ddd;\" width=\"50%\"><b>Attrition<br \/>\n<\/b><\/td>\n<td style=\"background-color: #990000; color: #ffffff; padding: 10px; text-align: center; border: 1px solid #ddd;\" width=\"50%\"><b>Turnover<br \/>\n<\/b><\/td>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 12px;\">Attrition occurs when employees leave an organization and their positions are not replaced, resulting in a gradual reduction in the total workforce.<\/td>\n<td style=\"border: 1px solid #ddd; padding: 12px;\">Turnover refers to employees leaving a company and being replaced by new hires, creating a continuous cycle of recruitment and onboarding.<\/td>\n<\/tr>\n<tr style=\"background-color: #f9f9f9;\">\n<td style=\"border: 1px solid #ddd; padding: 12px;\">It can happen through resignation, retirement, or termination when the organization decides to eliminate or redistribute the role.<\/td>\n<td style=\"border: 1px solid #ddd; padding: 12px;\">It typically occurs when employees resign, are terminated, or move to other opportunities and the company fills the vacancy.<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 12px;\">This process leads to a permanent decrease in headcount because the role is no longer required or is automated.<\/td>\n<td style=\"border: 1px solid #ddd; padding: 12px;\">The total number of employees usually remains stable because each departing employee is replaced.<\/td>\n<\/tr>\n<tr style=\"background-color: #f9f9f9;\">\n<td style=\"border: 1px solid #ddd; padding: 12px;\">Attrition is sometimes intentional, such as during organizational restructuring or cost-reduction strategies.<\/td>\n<td style=\"border: 1px solid #ddd; padding: 12px;\">Turnover is generally considered a negative metric because it increases recruitment, training, and onboarding costs.<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 12px;\">Example: A company with 100 employees loses 10 workers and chooses not to replace them, reducing the workforce to 90.<\/td>\n<td style=\"border: 1px solid #ddd; padding: 12px;\">Example: A company with 100 employees loses 10 workers but hires 10 new employees, keeping the workforce size the same.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Understanding the difference between attrition and turnover plays an important role in workforce planning and financial forecasting. <a href=\"https:\/\/www.hashmicro.com\/ph\/blog\/employee-turnover\/\">High turnover<\/a> usually signals the need for stronger recruitment efforts and more effective onboarding to help new employees become productive faster. In contrast, high attrition often requires organizations to reassess their structure, workload distribution, and talent strategies to ensure business operations remain stable.<\/p>\n<h2 id=\"the-different-types-of-employee-attrition\"><strong><span id=\"different-types\">The Different Types of Employee Attrition<\/span><\/strong><\/h2>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-17819\" src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Attrition-Rate-Formulation.webp\" alt=\"Different Types of Employee Attrition\" width=\"1600\" height=\"800\" srcset=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Attrition-Rate-Formulation.webp 1600w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Attrition-Rate-Formulation-300x150.webp 300w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Attrition-Rate-Formulation-1024x512.webp 1024w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Attrition-Rate-Formulation-768x384.webp 768w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Attrition-Rate-Formulation-1536x768.webp 1536w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Attrition-Rate-Formulation-840x420.webp 840w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Attrition-Rate-Formulation-150x75.webp 150w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Attrition-Rate-Formulation-696x348.webp 696w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Attrition-Rate-Formulation-1068x534.webp 1068w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" \/><\/p>\n<p>Employee departures are rarely identical and stems from a variety of complex organizational factors. Identifying these specific exit types is essential for diagnosing systemic issues and creating targeted retention strategies. HR professionals must develop unique responses for each category to maintain a healthy and <a href=\"https:\/\/www.hashmicro.com\/blog\/workforce-management-system\/\">productive workforce<\/a>.<\/p>\n<h3><strong>1. Voluntary Attrition<\/strong><\/h3>\n<p>Voluntary attrition occurs when an employee actively chooses to leave for reasons like better pay, career growth, or flexible work conditions. This category is often the most concerning for HR leaders because it involves losing high-performing talent to competitors. Organizations must analyze these departures to understand why their current value proposition is no longer appealing to top performers.<\/p>\n<p>High rates of voluntary turnover serve as a critical warning sign that the company culture or leadership may be failing. To address this, firms should prioritize competitive market analysis and conduct thorough exit interviews to gather actionable feedback. Actively listening to the current workforce helps prevent further talent loss and improves long-term engagement.<\/p>\n<h3><strong>2. Involuntary Attrition<\/strong><\/h3>\n<p>Involuntary attrition happens when an organization decides to terminate the employment relationship due to performance issues or policy violations. While initiated by the company, frequent terminations can highlight deep-rooted problems in the initial recruitment or onboarding processes. It often suggests that new hires are not receiving the necessary training to succeed in their specific roles.<\/p>\n<p>When these departures result from broader restructuring or economic shifts, the HR focus must change to compassionate management. Providing outplacement support and clear communication is vital for maintaining the morale of the employees who remain. Balancing operational needs with empathy ensures the company&#8217;s reputation stays intact during difficult transitions.<\/p>\n<h3><strong>3. Retirement Attrition<\/strong><\/h3>\n<p>Retirement is an inevitable and predictable phase of the professional lifecycle as the workforce ages. While these departures are usually amicable, they present unique logistical challenges for companies with many long-tenured staff members. The primary risk involves losing decades of specialized expertise and deep institutional knowledge in a short period.<\/p>\n<p>To mitigate this loss, forward-thinking organizations implement robust succession planning and mentorship programs well in advance. Phased retirement options and detailed documentation processes help preserve operational capabilities during the transition. Ensuring a structured knowledge transfer prevents critical gaps in client relationships and internal procedures.<\/p>\n<h3><strong>4. Internal Attrition<\/strong><\/h3>\n<p>Internal departure is a slightly different concept, referring to the movement of employees within the same organization. This occurs when an employee leaves one department or team to take a new role in a different area of the company. From a macro, company-wide perspective, the overall headcount remains unchanged. However, from a micro, departmental perspective, the original team has experienced a loss.<\/p>\n<p>Internal career mobility retains talent by allowing employees to grow professionally without leaving the company. However, high turnover in specific teams often signals leadership flaws or poor conditions that HR must address. Monitoring these trends prevents certain departments from becoming mere &#8220;training grounds&#8221; for the rest of the business.<\/p>\n<h2 id=\"how-to-calculate-attrition-rate-formulas-and-practical-examples\"><strong><span id=\"calculate\">How to Calculate Attrition Rate: Formulas and Practical Examples<\/span><\/strong><\/h2>\n<p>Accurately measuring the shrinkage of your workforce requires a clear understanding of the mathematical formulas involved. While the concept is straightforward, ensuring consistency in how the data is collected and calculated is vital for generating meaningful insights. The calculation relies on identifying <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/key-performance-indicators-kpi\/\">vital key performance indicators<\/a> related to headcount over a specific timeframe.<\/p>\n<p>The most standard and widely accepted formula for calculating this metric is:<\/p>\n<div style=\"background: #f4f8ff; border-left: 4px solid #2563eb; padding: 18px 24px; border-radius: 6px; margin: 24px 0;\">\n<p style=\"margin: 0; font-size: 1.1em;\"><strong>Attrition Rate = (Number of Employees Who Left During the Period \/ Average Number of Employees During the Period) x 100<\/strong><\/p>\n<\/div>\n<p>To utilize this formula effectively, you must follow a step-by-step process to gather the correct data points:<\/p>\n<ol>\n<li><strong>Determine the Time Period:<\/strong> Decide whether you are calculating the rate for a month, a quarter, or a full calendar year. Annual calculations are the most common for high-level strategic planning, while monthly or quarterly calculations are useful for spotting immediate trends.<\/li>\n<li><strong>Count the Departures:<\/strong> Tally the total number of employees who left the organization during that specific period. Remember, for a strict attrition calculation (as opposed to turnover), you should focus on roles that were left unfilled or eliminated. However, many organizations use this formula broadly to measure all departures.<\/li>\n<li><strong>Determine the Starting Headcount:<\/strong> Note the total number of employees on the very first day of your chosen time period.<\/li>\n<li><strong>Determine the Ending Headcount:<\/strong> Note the total number of employees on the very last day of your chosen time period.<\/li>\n<li><strong>Calculate the Average Headcount:<\/strong> Add the Starting Headcount and the Ending Headcount together, then divide the sum by two.<\/li>\n<li><strong>Apply the Formula:<\/strong> Divide the number of departures by the average headcount, and multiply the result by 100 to get a percentage.<\/li>\n<\/ol>\n<h3><strong>A Practical Example: Annual Calculation<\/strong><\/h3>\n<p>Let&#8217;s walk through a hypothetical scenario to illustrate the calculation. Imagine a mid-sized technology firm, &#8220;TechNova Solutions.&#8221;<\/p>\n<ul>\n<li>On January 1st, TechNova had <strong>500<\/strong> employees.<\/li>\n<li>Throughout the year, <strong>45<\/strong> employees resigned, <strong>10<\/strong> retired, and <strong>5<\/strong> were terminated due to restructuring. The total number of departures is <strong>60<\/strong>.<\/li>\n<li>The company decided not to fill these 60 roles, aiming to streamline operations.<\/li>\n<li>On December 31st, TechNova&#8217;s ending headcount was <strong>440<\/strong>.<\/li>\n<\/ul>\n<p>First, we calculate the Average Headcount:<br \/>\n(Starting Headcount 500 + Ending Headcount 440) \/ 2 = <strong>470 Average Employees<\/strong>.<\/p>\n<p>Next, we apply the main formula:<br \/>\n(60 Departures \/ 470 Average Employees) = 0.1276<\/p>\n<p>Finally, multiply by 100 to get the percentage:<br \/>\n0.1276 x 100 = <strong>12.76%<\/strong><\/p>\n<p>In this scenario, TechNova Solutions experienced an annual workforce shrinkage rate of 12.76%. Leadership can then take this percentage and compare it against industry benchmarks and historical company data to determine if this rate is acceptable or cause for concern.<\/p>\n<h3><strong>Monthly and Annualized Calculations<\/strong><\/h3>\n<p>If you want to track trends more closely, you might calculate the rate on a monthly basis. The formula remains exactly the same, but the time parameters are restricted to a single month. For example, if you start April with 200 employees, end with 196, and 4 people left, your average headcount is 198. Your monthly rate is (4 \/ 198) x 100 = 2.02%.<\/p>\n<p>Sometimes, HR leaders want to take a monthly rate and project what the annual rate will be if the current trend continues. This is known as the Annualized Rate. To calculate this, you take the cumulative number of departures year-to-date, divide it by the average headcount year-to-date, divide that result by the number of months that have passed, and then multiply by 12 (and then by 100 for the percentage).<\/p>\n<p>While formulas provide the raw data, the true value lies in the analysis. A single percentage point does not tell the whole story. HR teams must segment this data by department, tenure, demographics, and performance levels to uncover the hidden narratives driving employee behavior.<\/p>\n<h2 id=\"root-causes\"><strong>Analyzing the Root Causes of High Attrition<\/strong><\/h2>\n<p>Sustainable retention requires a deep analysis of why employees leave rather than offering quick office perks. The decision to exit is usually the result of ongoing frustrations and unmet expectations within the workplace ecosystem. Identifying these root causes helps organizations build a more stable and committed team.<\/p>\n<h3><strong>1. Inadequate Compensation and Benefits<\/strong><\/h3>\n<p>Competitive pay remains a foundational requirement of the employment contract in any industry. If salaries fail to keep pace with inflation or market standards, talented professionals will inevitably seek better financial opportunities elsewhere. Modern workers also evaluate total rewards packages, including health insurance and retirement plans, as a primary reason to stay or leave.<\/p>\n<h3><strong>2. Toxic Workplace Culture and Poor Leadership<\/strong><\/h3>\n<p>A toxic workplace culture characterized by micromanagement and poor communication is a leading driver of voluntary resignations. When employees feel disrespected or undervalued by their supervisors, their loyalty to the broader organization quickly evaporates. Leadership sets the daily tone, and ineffective managerial practices often push top talent out the door.<\/p>\n<h3><strong>3. Stagnant Career Progression<\/strong><\/h3>\n<p>High-performing individuals prioritize growth, learning, and clear pathways for professional advancement. Ambitious staff members often feel stifled when an organization lacks mentorship programs or internal promotion opportunities. If employees perceive a &#8220;glass ceiling&#8221; regarding their skill acquisition, they will look for external roles that invest in their future.<\/p>\n<h3><strong>4. Burnout and Poor Work-Life Balance<\/strong><\/h3>\n<p>Constant connectivity and excessive overtime demands frequently lead to chronic stress and physical exhaustion. Organizations that fail to respect personal boundaries inadvertently create a culture of burnout that decimates long-term productivity. For many, leaving a high-pressure job becomes a necessary act of self-preservation to protect their mental health.<\/p>\n<h3><strong>5. Misalignment with Organizational Values<\/strong><\/h3>\n<p>Modern workers, particularly younger generations, want their professional roles to align with their personal ethics and purpose. If a company&#8217;s actual practices contradict its stated values regarding social responsibility or diversity, employees often experience significant cognitive dissonance. People want to feel proud of their employer, making a lack of shared purpose a powerful repellant.<\/p>\n<h2 id=\"strategic-implementation-steps\"><strong>Step-by-Step Guide to Managing and Mitigating Attrition<\/strong><\/h2>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-17817\" src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Step-by-Step-Attrition-Rate.webp\" alt=\"Step-by-Step Managing and Mitigating Attrition\" width=\"1502\" height=\"755\" srcset=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Step-by-Step-Attrition-Rate.webp 1502w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Step-by-Step-Attrition-Rate-300x151.webp 300w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Step-by-Step-Attrition-Rate-1024x515.webp 1024w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Step-by-Step-Attrition-Rate-768x386.webp 768w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Step-by-Step-Attrition-Rate-836x420.webp 836w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Step-by-Step-Attrition-Rate-150x75.webp 150w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Step-by-Step-Attrition-Rate-696x350.webp 696w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Step-by-Step-Attrition-Rate-1068x537.webp 1068w\" sizes=\"(max-width: 1502px) 100vw, 1502px\" \/><\/p>\n<p>Recognizing a rise in unreplaced departures is only the initial step toward organizational stability. Implementing a robust management strategy requires a systematic, data-driven approach that aligns HR initiatives with core business objectives. This framework helps leaders move beyond observation and into proactive workforce optimization.<\/p>\n<h3><strong>Step 1: Establish Comprehensive Baselines and Segmentation<\/strong><\/h3>\n<p>HR leaders must first establish accurate baseline metrics using a dedicated <a href=\"https:\/\/www.hashmicro.com\/ph\/blog\/hris-human-resources-information-system\/\">Human Resources Information System (HRIS)<\/a>. It is vital to segment this data by department, geographic location, and specific managers to uncover hidden turnover hotspots. Granular analysis might reveal that while company-wide rates are stable, a single team is experiencing a mass exodus.<\/p>\n<h3><strong>Step 2: Revamp the Offboarding and Exit Interview Process<\/strong><\/h3>\n<p>Gathering authentic feedback from departing staff is essential to understanding the root causes of a shrinking workforce. Traditional exit interviews often feel like administrative formalities, leading to vague or overly polite responses from employees. Using third-party interviewers or anonymous post-exit surveys can yield much more honest and actionable insights.<\/p>\n<h3><strong>Step 3: Target Interventions Based on Root Cause Analysis<\/strong><\/h3>\n<p>Once feedback is collected, organizations should conduct a root cause analysis to identify the primary drivers of unwanted departures. If data points to compensation issues, leaders must initiate market benchmarking to ensure salaries remain competitive. Interventions should always address specific pain points, such as career progression or upskilling, rather than relying on guesswork.<\/p>\n<h3><strong>Step 4: Optimize Workload Distribution for the Remaining Team<\/strong><\/h3>\n<p>When positions remain unfilled, the increased workload on the remaining team can trigger a dangerous domino effect of burnout. Managers must rigorously prioritize tasks and eliminate low-value projects to protect the well-being of their staff. This transition is an ideal time to adopt new digital tools that help maintain productivity without sacrificing work-life balance.<\/p>\n<p>Building a resilient workforce requires moving beyond reactive fixes toward a proactive, data-driven strategy. By addressing the root causes of departures, organizations can foster long-term loyalty and maintain a competitive edge in any market.<\/p>\n<h2 id=\"advanced-practices-for-modern-analysis\"><strong>Advanced Practices for Modern Attrition Analysis<\/strong><\/h2>\n<p>As human resources evolves into a highly strategic, data-centric discipline, standard spreadsheet tracking is no longer sufficient. Forward-thinking organizations are adopting advanced practices and leveraging cutting-edge technology to stay ahead of workforce trends and proactively manage their talent pipelines.<\/p>\n<h3><strong>1. Predictive Analytics and Machine Learning<\/strong><\/h3>\n<p>Advanced HR teams now use machine learning algorithms to identify complex patterns that precede an employee&#8217;s departure. These AI models analyze various factors, such as changes in vacation usage, promotion history, and engagement scores, to flag high-flight-risk individuals. This technology allows management to intervene with personalized support before a resignation letter is even drafted.<\/p>\n<h3><strong>2. Continuous Listening and Stay Interviews<\/strong><\/h3>\n<p>Relying on annual surveys is an outdated practice that often misses rapid shifts in employee sentiment. Forward-thinking companies use frequent pulse surveys and &#8220;stay interviews&#8221; to understand what keeps their high-performing talent engaged. This proactive dialogue helps identify current frustrations and motivations, preventing regrettable losses before they happen.<\/p>\n<h3><strong>3. Organizational Network Analysis (ONA)<\/strong><\/h3>\n<p>Organizational Network Analysis (ONA) maps informal collaboration networks to identify key influencers who hold a team together. These central figures often serve as vital nodes for mentorship and problem-solving, regardless of their official job titles. By recognizing these critical linchpins, HR can focus retention efforts on the individuals most essential to maintaining team cohesion.<\/p>\n<h3><strong>4. Agile Workforce Planning<\/strong><\/h3>\n<p>Agile organizations view workforce shrinkage as an opportunity to reshape the company rather than a sudden crisis. They use dynamic scenario planning to adjust talent strategies rapidly in response to changing economic conditions. This fluid approach allows businesses to upskill current staff and reallocate resources in real-time to meet global market demands.<\/p>\n<h2 id=\"conclusion\"><strong>Conclusion<\/strong><\/h2>\n<p>Effectively monitoring and managing the attrition rate is essential for strategic workforce planning and long-term organizational health. While some level of natural shrinkage is inevitable, high rates of voluntary departure often signal deeper issues like poor leadership or uncompetitive compensation.<\/p>\n<p>By accurately calculating this metric and identifying root causes, HR professionals can transition from reactive responses to proactive strategies. Ultimately, a deep understanding of why employees leave allows businesses to build a more resilient, engaged, and high-performing workforce that can adapt to the challenges of the modern market.<\/p>\n<p>Build a high performing workforce by automating your attrition rate tracking and <a href=\"https:\/\/www.hashmicro.com\/my\/free-product-demo\/\">book a free demo<\/a> today to explore actionable retention strategies.<\/p>\n<a href=\"https:\/\/www.hashmicro.com\/my\/free-product-demo\/?medium=free-product-demo\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/08\/free-demo-desktop-my.webp\" data-desktop-src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/08\/free-demo-desktop-my.webp\" data-mobile-src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2024\/07\/free-demo-mobile-my.jpg\" alt=\"FreeDemo\" class=\"responsive-image-banner\"><\/a>\r\n\r\n<script>\r\n    \/\/ check which image to use based on screensize\r\n    document.addEventListener(\"DOMContentLoaded\", function() {\r\n        function updateImageSource() {\r\n            var images = document.querySelectorAll('.responsive-image-banner');\r\n            var screenWidth = window.innerWidth;\r\n\r\n            images.forEach(function(img) {\r\n                var mobileSrc = img.getAttribute('data-mobile-src');\r\n                var desktopSrc = img.getAttribute('data-desktop-src');\r\n\r\n                if (screenWidth < 576 && mobileSrc) {\r\n                    img.setAttribute('src', mobileSrc);\r\n                } else {\r\n                    img.setAttribute('src', desktopSrc);\r\n                }\r\n            });\r\n        }\r\n\r\n        \/\/ Initial check\r\n        updateImageSource();\r\n\r\n        \/\/ Update on resize\r\n        window.addEventListener('resize', updateImageSource);\r\n    });\r\n<\/script>\n<h2><strong>FAQ about Attribution Rate<\/strong><\/h2>\n<ul class=\"bottom_faq\">\n<li>\n<details>\n<summary><strong>What is a good attrition rate for a company?<\/strong><\/summary>\n<p>A healthy attrition rate varies by industry, but typically, a rate below 10% is considered standard. It is vital to benchmark against competitors in your specific sector for accuracy.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>How is attrition different from turnover?<\/strong><\/summary>\n<p>Attrition occurs when an employee leaves and the role is not refilled or is eliminated, reducing headcount. Turnover involves replacing departed staff with new hires, maintaining the total headcount.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>What\u00a0is\u00a0a\u00a0healthy\u00a0attrition\u00a0rate?<\/strong><\/summary>\n<p>A healthy attrition rate varies by industry, but generally, an annual attrition rate of 10-15% is considered acceptable, while rates above 20% may indicate potential problems within the organization.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>What does a 10% attrition rate or above mean?<\/strong><\/summary>\n<p>A 10% attrition rate means 10% of your workforce has left and their positions remain unfilled. This is generally a red flag indicating systemic issues such as poor management, uncompetitive pay, or a lack of career growth that requires immediate attention.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>How can a business increase its attrition rate?<\/strong><\/summary>\n<p>To increase attrition intentionally during restructuring, businesses use natural reduction methods: implement a hiring freeze for vacant roles, offer early retirement packages, or provide voluntary separation schemes (VSS) to reduce headcount without active layoffs.<\/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 a good attrition rate for a company?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"A healthy attrition rate varies by industry, but typically, a rate below 10% is considered standard. It is vital to benchmark against competitors in your specific sector for accuracy.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"How is attrition different from turnover?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Attrition occurs when an employee leaves and the role is not refilled or is eliminated, reducing headcount. Turnover involves replacing departed staff with new hires, maintaining the total headcount.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"What\u00a0is\u00a0a\u00a0healthy\u00a0attrition\u00a0rate?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"A healthy attrition rate varies by industry, but generally, an annual attrition rate of 10-15% is considered acceptable, while rates above 20% may indicate potential problems within the organization.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"What does a 10% attrition rate or above mean?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"A 10% attrition rate means 10% of your workforce has left and their positions remain unfilled. This is generally a red flag indicating systemic issues such as poor management, uncompetitive pay, or a lack of career growth that requires immediate attention.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"How can a business increase its attrition rate?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"To increase attrition intentionally during restructuring, businesses use natural reduction methods: implement a hiring freeze for vacant roles, offer early retirement packages, or provide voluntary separation schemes (VSS) to reduce headcount without active layoffs.\"\n    }\n  }]\n}\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Analyzing talent movement is essential for long-term success in today\u2019s rapidly changing business environment. Global economic shifts and evolving employee expectations have forced leaders to look deeper than simple headcount figures. To ensure workforce sustainability, organizations must prioritize a comprehensive understanding of how talent flows through their operations. With Malaysia&#8217;s attrition rates around 18%, local [&hellip;]<\/p>\n","protected":false},"author":33,"featured_media":17820,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[64],"tags":[],"class_list":{"0":"post-17766","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-hrm"},"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>What is Attrition Rate? Definition, Formula, and Management<\/title>\n<meta name=\"description\" content=\"Attrition occurs when employees leave an organization and their positions are not replaced, resulting in a gradual reduction in the total\" \/>\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\/attrition-rate\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Attrition Rate: Definition, Formula, and Management\" \/>\n<meta property=\"og:description\" content=\"Attrition occurs when employees leave an organization and their positions are not replaced, resulting in a gradual reduction in the total\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/my\/blog\/attrition-rate\/\" \/>\n<meta property=\"og:site_name\" content=\"HashMicro Malaysia\" \/>\n<meta property=\"article:published_time\" content=\"2026-03-16T08:52:34+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-22T07:23:06+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Attrition-Rate-Business.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1600\" \/>\n\t<meta property=\"og:image:height\" content=\"800\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Muhammad Iqbal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Muhammad Iqbal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 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\/attrition-rate\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/attrition-rate\/\"},\"author\":{\"name\":\"Muhammad Iqbal\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/b24b5f30d01a2465924ea6b32dc66e15\"},\"headline\":\"Attrition Rate: Definition, Formula, and Management\",\"datePublished\":\"2026-03-16T08:52:34+00:00\",\"dateModified\":\"2026-04-22T07:23:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/attrition-rate\/\"},\"wordCount\":3064,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/attrition-rate\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Attrition-Rate-Business.webp\",\"articleSection\":[\"HRM\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.hashmicro.com\/my\/blog\/attrition-rate\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/attrition-rate\/\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/attrition-rate\/\",\"name\":\"What is Attrition Rate? Definition, Formula, and Management\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/attrition-rate\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/attrition-rate\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Attrition-Rate-Business.webp\",\"datePublished\":\"2026-03-16T08:52:34+00:00\",\"dateModified\":\"2026-04-22T07:23:06+00:00\",\"description\":\"Attrition occurs when employees leave an organization and their positions are not replaced, resulting in a gradual reduction in the total\",\"breadcrumb\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/attrition-rate\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.hashmicro.com\/my\/blog\/attrition-rate\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/attrition-rate\/#primaryimage\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Attrition-Rate-Business.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Attrition-Rate-Business.webp\",\"width\":1600,\"height\":800,\"caption\":\"Attrition Rate Business\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/attrition-rate\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.hashmicro.com\/my\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Attrition Rate: Definition, Formula, and Management\"}]},{\"@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\/b24b5f30d01a2465924ea6b32dc66e15\",\"name\":\"Muhammad Iqbal\",\"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\/Muhammad-Iqbal-96x96.webp\",\"contentUrl\":\"http:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/10\/Muhammad-Iqbal-96x96.webp\",\"caption\":\"Muhammad Iqbal\"},\"description\":\"Muhammad Iqbal writes comprehensive articles on human resource management topics such as talent acquisition, employee engagement, and HR technologies. He addresses both strategic and operational aspects of HR to cater to a wide range of readers. His content reflects current trends and solutions in workforce management.\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/author\/muhammad-iqbal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"What is Attrition Rate? Definition, Formula, and Management","description":"Attrition occurs when employees leave an organization and their positions are not replaced, resulting in a gradual reduction in the total","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\/attrition-rate\/","og_locale":"en_US","og_type":"article","og_title":"Attrition Rate: Definition, Formula, and Management","og_description":"Attrition occurs when employees leave an organization and their positions are not replaced, resulting in a gradual reduction in the total","og_url":"https:\/\/www.hashmicro.com\/my\/blog\/attrition-rate\/","og_site_name":"HashMicro Malaysia","article_published_time":"2026-03-16T08:52:34+00:00","article_modified_time":"2026-04-22T07:23:06+00:00","og_image":[{"width":1600,"height":800,"url":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Attrition-Rate-Business.webp","type":"image\/webp"}],"author":"Muhammad Iqbal","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Muhammad Iqbal","Est. reading time":"15 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/my\/blog\/attrition-rate\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/attrition-rate\/"},"author":{"name":"Muhammad Iqbal","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/b24b5f30d01a2465924ea6b32dc66e15"},"headline":"Attrition Rate: Definition, Formula, and Management","datePublished":"2026-03-16T08:52:34+00:00","dateModified":"2026-04-22T07:23:06+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/attrition-rate\/"},"wordCount":3064,"commentCount":0,"publisher":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/#organization"},"image":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/attrition-rate\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Attrition-Rate-Business.webp","articleSection":["HRM"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.hashmicro.com\/my\/blog\/attrition-rate\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/my\/blog\/attrition-rate\/","url":"https:\/\/www.hashmicro.com\/my\/blog\/attrition-rate\/","name":"What is Attrition Rate? Definition, Formula, and Management","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/attrition-rate\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/attrition-rate\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Attrition-Rate-Business.webp","datePublished":"2026-03-16T08:52:34+00:00","dateModified":"2026-04-22T07:23:06+00:00","description":"Attrition occurs when employees leave an organization and their positions are not replaced, resulting in a gradual reduction in the total","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/attrition-rate\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/my\/blog\/attrition-rate\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/my\/blog\/attrition-rate\/#primaryimage","url":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Attrition-Rate-Business.webp","contentUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/03\/Attrition-Rate-Business.webp","width":1600,"height":800,"caption":"Attrition Rate Business"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/my\/blog\/attrition-rate\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/my\/blog\/"},{"@type":"ListItem","position":2,"name":"Attrition Rate: Definition, Formula, and Management"}]},{"@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\/b24b5f30d01a2465924ea6b32dc66e15","name":"Muhammad Iqbal","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\/Muhammad-Iqbal-96x96.webp","contentUrl":"http:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/10\/Muhammad-Iqbal-96x96.webp","caption":"Muhammad Iqbal"},"description":"Muhammad Iqbal writes comprehensive articles on human resource management topics such as talent acquisition, employee engagement, and HR technologies. He addresses both strategic and operational aspects of HR to cater to a wide range of readers. His content reflects current trends and solutions in workforce management.","url":"https:\/\/www.hashmicro.com\/my\/blog\/author\/muhammad-iqbal\/"}]}},"order_j":"","_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/posts\/17766","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\/33"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/comments?post=17766"}],"version-history":[{"count":10,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/posts\/17766\/revisions"}],"predecessor-version":[{"id":18837,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/posts\/17766\/revisions\/18837"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/media\/17820"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/media?parent=17766"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/categories?post=17766"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/tags?post=17766"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}