{"id":176029,"date":"2025-11-12T11:00:00","date_gmt":"2025-11-12T04:00:00","guid":{"rendered":"https:\/\/www.hashmicro.com\/id\/blog\/?p=176029"},"modified":"2026-03-09T07:48:02","modified_gmt":"2026-03-09T00:48:02","slug":"aplikasi-hr-analytics","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/id\/blog\/aplikasi-hr-analytics\/","title":{"rendered":"Aplikasi HR Analytics: 15 Pilihan Terbaik untuk Keputusan Bisnis Berbasis Data"},"content":{"rendered":"<p data-start=\"0\" data-end=\"259\">Pengambilan keputusan SDM yang hanya mengandalkan intuisi dapat menghambat efektivitas <em data-start=\"123\" data-end=\"144\" data-is-only-node=\"\">Succession Planning<\/em> dan pertumbuhan perusahaan. Tanpa data yang jelas, banyak tren penting dalam manajemen talenta tidak terdeteksi.<\/p>\n<p data-start=\"0\" data-end=\"259\">Dengan <em data-start=\"297\" data-end=\"311\" data-is-only-node=\"\">software HRM<\/em>, perusahaan dapat mengubah data karyawan menjadi insight strategis yang akurat. Analisis berbasis data membantu memahami pola, memprediksi kebutuhan, dan merancang kebijakan SDM yang lebih tepat.<\/p>\n<p>Untuk membantu Anda memilih, berikut adalah ringkasan 15 aplikasi HR analytics terbaik yang kami rekomendasikan untuk tahun 2025.<\/p>\n<table style=\"width: 100%; border-collapse: collapse;\">\n<thead style=\"background-color: #f2f2f2;\">\n<tr>\n<th style=\"border: 1px solid #ddd; padding: 8px; text-align: left;\">Aplikasi<\/th>\n<th style=\"border: 1px solid #ddd; padding: 8px; text-align: left;\">Keunggulan Utama<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">HashMicro EVA HRIS Suite<\/td>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">Solusi terintegrasi dan dapat dikustomisasi untuk pasar Indonesia.<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">Gadjian<\/td>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">Fokus pada payroll dan administrasi HR untuk UKM.<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">Mekari Talenta<\/td>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">Platform HRIS lengkap dengan fitur analitik yang kuat.<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">Visier<\/td>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">Platform khusus <em>people analytics<\/em> untuk enterprise.<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">Workday HCM<\/td>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">Analitik terintegrasi dalam suite HCM enterprise.<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">SAP SuccessFactors<\/td>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">Analitik mendalam untuk manajemen talenta global.<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">Oracle Fusion Cloud HCM<\/td>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">Kecerdasan buatan untuk analisis prediktif SDM.<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">BambooHR<\/td>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">User-friendly dengan laporan esensial untuk UKM.<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">HiBob<\/td>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">Fokus pada analitik keterlibatan dan budaya kerja.<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">Lattice<\/td>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">Analitik kuat untuk manajemen kinerja.<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">Personio<\/td>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">Solusi all-in-one dengan pelaporan HR yang solid.<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">ChartHop<\/td>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">Visualisasi data untuk perencanaan organisasi.<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">UKG Pro<\/td>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">Analitik canggih untuk manajemen tenaga kerja.<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">Paycor<\/td>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">Data untuk memberdayakan pengambilan keputusan pimpinan.<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">Tableau<\/td>\n<td style=\"border: 1px solid #ddd; padding: 8px;\">Alat BI fleksibel untuk dasbor HR kustom.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table style=\"border-collapse: coacllapse; 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 aria-level=\"1\">Aplikasi HR analytics adalah perangkat lunak yang dirancang untuk mengumpulkan, memproses, dan menganalisis data sumber daya manusia (SDM) guna menghasilkan wawasan strategis.<\/li>\n<li aria-level=\"1\">Bisnis membutuhkan aplikasi HR analytics untuk meningkatkan pengambilan keputusan strategis, mengoptimalkan biaya tenaga kerja, meningkatkan retensi talenta terbaik, dan membangun keunggulan kompetitif melalui manajemen SDM yang berbasis data.<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\">Kami telah menyusun aplikasi HR terbaik berdasarkan riset mendalam terhadap fitur, ulasan pengguna, dan kemampuan masing-masing platform untuk memenuhi kebutuhan bisnis<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"https:\/\/www.hashmicro.com\/id\/manajemen-human-resource\">Aplikasi Human Resource<\/a> dari HashMicro adalah salah satu rekomendasi software HR terbaik yang memenuhi kriteria di atas.<\/li>\n<\/ul>\n<p><strong><\/strong><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n\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> <div id=\"toc_group_article\" style=''>\r\n\t<p style='font-size:25px;font-weight:bold; margin-bottom:0px'>\r\n\t\tDaftar Isi:\r\n\t<\/p>\r\n\t<ul id=\"list_toc\" class='list_toc'><\/ul>\r\n<\/div>\r\n\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\">Daftar Isi<\/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\r\n<style>\r\n\/* 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\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\r\n<style>\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_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: 10px;\r\n\t\ttransition:all 0.2s ease-in-out;\r\n\t\tfont-size:15px\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#list_toc_float li a{margin-bottom:0px}\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#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@media (max-width:768px){\r\n\t\t#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\t}\r\n\t\r\n\t \/* custom scrollbar style *\/\r\n::-webkit-scrollbar {\r\n    width: 7px;\r\n}\r\n::-webkit-scrollbar-track {\r\n    background: #d7a2a4;\r\n}\r\n::-webkit-scrollbar-thumb {\r\n    background: #b1252d;\r\n    border-radius: 15px;\r\n}\t\t\r\n\r\n<\/style>\r\n\r\n<script>\r\n\tdocument.addEventListener('DOMContentLoaded', function() {\r\n\t\t\/\/ Fungsi untuk menangani klik pada semua elemen <a> dengan href yang dimulai dengan #\r\n\t\tfunction handleTitleClick(event) {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tconst targetId = this.getAttribute('href').substring(1);\r\n\t\t\tconst targetElement = document.getElementById(targetId);\r\n\r\n\t\t\tif (targetElement) {\r\n\t\t\t\tconst headerHeight = document.querySelector('#toc .header').offsetHeight;\r\n\t\t\t\tconst navbarHeight = document.getElementById('tdi_34') ? document.getElementById('tdi_34').offsetHeight : 0;\r\n\t\t\t\tconst windowHeight = window.innerHeight;\r\n\t\t\t\tconst targetOffset = targetElement.offsetTop;\r\n\t\t\t\tconst scrollTo = targetOffset + (windowHeight \/ 2) + (headerHeight) - navbarHeight - 40;\r\n\r\n\t\t\t\twindow.scrollTo({\r\n\t\t\t\t\ttop: scrollTo,\r\n\t\t\t\t\tbehavior: 'smooth'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t\/\/ Tambahkan event listener untuk semua elemen <a> di toc-list dan list-toc\r\n\t\tconst titleLinks = document.querySelectorAll('#toc-list a, #list_toc a');\r\n\t\ttitleLinks.forEach(link => {\r\n\t\t\tlink.addEventListener('click', handleTitleClick);\r\n\t\t});\r\n\t});\r\n<\/script>\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\n\/\/ document.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 = 'Daftar Isi';\r\n\/\/ \/\/ \t\t\t}\r\n\/\/ \/\/ \t\t}\r\n\/\/ \t\tif(window.innerWidth < 767){\r\n\/\/ \t\t\ttocTitle.textContent = 'Daftar Isi'; \/\/ Selalu pertahankan judul ini di mobile\r\n\/\/ \t\t} else {\r\n\/\/ \t\t\tif (window.scrollY >= (headerTop - headerHeight + 700)) {\r\n\/\/ \t\t\t\tconst currentHeaderId = header.getAttribute('id');\r\n\/\/ \t\t\t\tconst currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n\/\/ \t\t\t\ttocTitle.textContent = currentHeaderText;\r\n\/\/ \t\t\t\tcurrentHeader = currentHeaderId;\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 = 'Daftar Isi'; \/\/ 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 = 'Daftar isi'; \/\/ 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 = 'Daftar isi'; \/\/ 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\r\n\/\/ START new JS for ToC improvements\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 + 1750;\r\n\tconsole.log(triggerPoint)\r\n  const footerHeight = footer.offsetHeight;\r\n  const triggerFooterPoint = footer.getBoundingClientRect().top + window.pageYOffset - footerHeight*3;\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  \r\n  const panel2 = document.querySelector(\"#toc .list\");\r\n  const icon = document.querySelector(\".toc-icon\");\r\n  const tocTitle = document.querySelector('#toc-title');\r\n\r\n  let activeLink = null;\r\n  let userClosedTOC = false; \/\/ Flag user menutup TOC\r\n\r\n  function handleScroll() {\r\n    const windowTop = window.pageYOffset || document.documentElement.scrollTop;\r\n    let currentHeader = '';\r\n\r\n    \/\/ Update TOC title sesuai header yang terlihat\r\n    headers.forEach(header => {\r\n      const headerTop = header.offsetTop;\r\n      const headerHeight = header.clientHeight;\r\n      if(window.innerWidth < 767){\r\n        tocTitle.textContent = 'Daftar Isi'; \r\n      } else {\r\n        if (window.scrollY >= (headerTop - headerHeight + 1750)) {\r\n          const currentHeaderId = header.getAttribute('id');\r\n          const currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n          tocTitle.textContent = currentHeaderText;\r\n          currentHeader = currentHeaderId;\r\n        }\r\n      }\r\n    });\r\n\r\n    navLinks.forEach(link => {\r\n      link.classList.remove('active');\r\n      if(currentHeader && link.getAttribute('href').includes(currentHeader)) {\r\n        link.classList.add('active');\r\n      }\r\n    });\r\n\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`;\r\n        toc.style.backgroundColor = \"#FFF\";\r\n        \/\/ Saat sticky, TOC otomatis tertutup\r\n        panel2.style.height = '0px';\r\n        icon.style.transform = \"rotate(180deg)\";\r\n        userClosedTOC = true; \/\/ Set flag supaya tidak terbuka saat scroll\r\n      }\r\n      \r\n      if(window.innerWidth < 767){\r\n        tocTitle.textContent = 'Daftar Isi'; \r\n        toc.style.width = '150px';\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';\r\n      toc.style.backgroundColor = \"#FFF\";\r\n      tocTitle.textContent = 'Daftar isi'; \r\n\r\n      \/\/ Kembalikan panel jika user belum menutup manual\r\n      if(!userClosedTOC) {\r\n        panel2.style.height = panel2.scrollHeight + \"px\";\r\n        icon.style.transform = \"rotate(0deg)\";\r\n      }\r\n    }\r\n  }\r\n\r\n  window.addEventListener('scroll', handleScroll);\r\n  handleScroll();\r\n\r\n  \/\/ Toggle TOC saat user klik\r\n  const tocHeader = document.querySelector(\"#toc .header\");\r\n  tocHeader.addEventListener(\"click\", function() {\r\n    const panel = panel2;\r\n    if (panel.style.height !== '0px') {\r\n      panel.style.height = '0px';\r\n      icon.style.transform = \"rotate(180deg)\";\r\n      userClosedTOC = true;\r\n    } else {\r\n      panel.style.height = panel.scrollHeight + \"px\";\r\n      icon.style.transform = \"rotate(0deg)\";\r\n      userClosedTOC = false;\r\n    }\r\n  });\r\n\r\n  \/\/ Close TOC saat link diklik\r\n  document.querySelectorAll(\"#toc .list a\").forEach(link => {\r\n    link.addEventListener(\"click\", function() {\r\n      panel2.style.height = '0px';\r\n      icon.style.transform = \"rotate(180deg)\";\r\n      userClosedTOC = true;\r\n    });\r\n  });\r\n});\r\n\/\/ END new JS for ToC improvements\r\n\r\n\t\r\n\/\/ \tmake the heading at the center of the viewport\r\n\/\/ \tdocument.addEventListener('DOMContentLoaded', function() {\r\n\/\/     \/\/ Add click event listener to all links in the TOC list\r\n\/\/     document.querySelectorAll('#toc-list a').forEach(anchor => {\r\n\/\/         anchor.addEventListener('click', function (e) {\r\n\/\/             e.preventDefault(); \/\/ Prevent the default behavior of jumping to the anchor\r\n\/\/ \/\/ \t\t\tconsole.log(\"prevent default\");\r\n\/\/             const targetId = this.getAttribute('href').substring(1); \/\/ Get the ID of the target element\r\n\/\/             const targetElement = document.getElementById(targetId); \/\/ Get the target element\r\n\r\n\/\/             if (targetElement) {\r\n\/\/                 const headerHeight = document.querySelector('#toc .header').offsetHeight; \/\/ Get the height of the fixed header\r\n\/\/                 const windowHeight = window.innerHeight; \/\/ Get the height of the viewport\r\n\/\/                 const targetOffset = targetElement.offsetTop; \/\/ Get the top offset of the target element\r\n\/\/                 const scrollTo = targetOffset + (windowHeight \/ 2) + (headerHeight); \/\/ Calculate the scroll position to center the target element\r\n\r\n\/\/                 \/\/ Scroll to the calculated position smoothly\r\n\/\/                 window.scrollTo({\r\n\/\/                     top: scrollTo,\r\n\/\/                     behavior: 'smooth'\r\n\/\/                 });\r\n\/\/             }\r\n\/\/         });\r\n\/\/     });\r\n\/\/ });\r\n<\/script>\r\n\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        } \r\n\t\t  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']; \/\/ 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\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\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        \/\/ Mengambil semua elemen h2 dan h3\r\n\t\tconst elements = document.querySelectorAll('.td-post-content h2');\r\n\r\n\t\t\tfunction newFormatId(text) {\r\n\t\t\t\tif(text.toLowerCase() === \"key takeaways\") {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tconst result = text.toLowerCase()\r\n\t\t\t\t.trim()\r\n\t\t\t\t.replace(\/[^\\w\\s-]\/g, '')  \/\/ hapus tanda baca\r\n\t\t\t\t.replace(\/\\s+\/g, '-'); \/\/ ganti spasi jadi \"-\"\r\n\r\n\t\t\t\treturn result;\r\n\t\t\t}\r\n\t\r\n\t\telements.forEach(element => {\r\n\t\t\tif (element.tagName === 'H2') {\r\n\t\t\t\tconst id = newFormatId(element.textContent); \/\/ Hasilkan ID baru\r\n\t\t\t\telement.id = id; \/\/ Tetapkan ID ke elemen h2\r\n\t\t\t\tif (element.textContent.toLowerCase() === \"key takeaways\") {return;} \/\/ Kalau Key Takeaways, jangan dimasukin\r\n\t\t\t\theadings.push({ level: 'h2', id: id, title: element.textContent, children: [] });\r\n\t\t\t} else if (element.tagName === 'H3') {\r\n\t\t\t\tconst id = newFormatId(element.textContent); \/\/ Hasilkan ID baru\r\n\t\t\t\telement.id = id; \/\/ Tetapkan ID ke elemen h3\r\n\t\t\t\tif (headings.length > 0) {\r\n\t\t\t\t\theadings[headings.length - 1].children.push({ level: 'h3', id: id, title: element.textContent, children: [] });\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n       \/\/ Membuat list HTML dari objek headings\r\n\t\tconst ul = document.getElementById('list_toc');\r\n\t\tlet currentUl = ul;\r\n\t\theadings.forEach(heading => {\r\n\t\t\tconst li = document.createElement('li');\r\n\t\t\tconst a = document.createElement('a');\r\n\t\t\ta.textContent = heading.title;\r\n\t\t\ta.href = `#${heading.id}`; \/\/ Gunakan ID yang baru dihasilkan\r\n\t\t\tli.appendChild(a);\r\n\r\n\t\t\tif (heading.level === 'h2') {\r\n\t\t\t\tcurrentUl = li;\r\n\t\t\t\tul.appendChild(li);\r\n\t\t\t} else if (heading.level === 'h3') {\r\n\t\t\t\tif (!currentUl.lastElementChild || currentUl.lastElementChild.tagName !== 'UL') {\r\n\t\t\t\t\tconst nestedUl = document.createElement('ul');\r\n\t\t\t\t\tcurrentUl.appendChild(nestedUl);\r\n\t\t\t\t\tcurrentUl = nestedUl;\r\n\t\t\t\t}\r\n\t\t\t\tcurrentUl.appendChild(li);\r\n\t\t\t}\r\n\r\n\t\t\tcreateNestedList(li, heading.children);\r\n\t\t});\r\n\t\t\/\/ Dapatkan elemen ul dengan id 'list_toc'\r\n\t\tconst ulFloat = document.getElementById('list_toc');\r\n\r\n\t\t\/\/ Dapatkan isi (child elements) dari ul dengan id 'list_toc'\r\n\t\tconst clonedChildren = ulFloat.cloneNode(true).children;\r\n\r\n\t\t\/\/ Dapatkan elemen ul dengan id 'list_toc_float'\r\n\t\tconst ulToc = document.getElementById('list_toc_float');\r\n\r\n\t\t\/\/ Tambahkan isi yang telah didapatkan dari 'list_toc' ke ul dengan id 'list_toc_float'\r\n\t\tulToc.append(...clonedChildren);\r\n\r\n\r\n        \/\/ Fungsi untuk mengambil tinggi navbar\r\n\t\tfunction getNavbarHeight() {\r\n\t\t\tconst navbar = document.getElementById('tdi_34');\r\n\t\t\treturn navbar ? navbar.offsetHeight : 0;\r\n\t\t}\r\n\r\n\t\t\/\/ Fungsi untuk menambahkan offset posisi scroll\r\n\t\tfunction scrollToElementWithOffset(elementId) {\r\n\t\t\tconst element = document.getElementById(elementId);\r\n\t\t\tif (element) {\r\n\t\t\t\tconst offset = getNavbarHeight();\r\n\t\t\t\tconst elementPosition = element.getBoundingClientRect().top;\r\n\t\t\t\tconst offsetPosition = elementPosition - offset - 40;\r\n\r\n\t\t\t\twindow.scrollBy({\r\n\t\t\t\t\ttop: offsetPosition,\r\n\t\t\t\t\tbehavior: 'smooth'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t\/\/ Fungsi untuk menangani klik pada tautan judul\r\n\t\tfunction handleTitleClick(event) {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tconst href = event.target.getAttribute('href').substr(1);\r\n\t\t\tscrollToElementWithOffset(href);\r\n\t\t}\r\n\r\n\t\t\/\/ Tambahkan event listener untuk semua tautan judul\r\n\t\tconst titleLinks = document.querySelectorAll('a[href^=\"#\"]');\r\n\t\ttitleLinks.forEach(link => {\r\n\t\t\tlink.addEventListener('click', handleTitleClick);\r\n\t\t});\r\n\t\t\r\n\t});\r\n    <\/script> -->\r\n\n<h2>Apa Sebenarnya Aplikasi HR Analytics Itu?<\/h2>\n<p>Aplikasi HR analytics adalah perangkat lunak yang dirancang untuk mengumpulkan, memproses, dan menganalisis data sumber daya manusia (SDM) guna menghasilkan wawasan strategis. Tujuannya adalah untuk membantu para pemimpin bisnis memahami tren tenaga kerja, memprediksi hasil, dan membuat keputusan yang lebih baik terkait karyawan.<\/p>\n<p>Secara fungsional, platform ini mengubah data mentah seperti data absensi, histori gaji, penilaian kinerja, dan demografi karyawan menjadi metrik yang dapat ditindaklanjuti. Contohnya, data rekrutmen dapat diolah untuk mengukur metrik seperti <em>time-to-hire<\/em> atau <em>cost-per-hire<\/em>. Ini memberikan gambaran yang jelas tentang efektivitas proses dan di mana perbaikan dapat dilakukan.<\/p>\n<p>Perbedaan mendasar terletak pada kedalaman analisisnya. <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/hr-reporting\/\">Laporan HR tradisional<\/a> umumnya bersifat deskriptif, hanya menjawab &#8220;apa yang terjadi&#8221; (misalnya, jumlah karyawan yang resign bulan lalu). Sebaliknya, HR analytics bersifat prediktif (&#8220;siapa yang berisiko resign dalam tiga bulan ke depan&#8221;) dan preskriptif (&#8220;tindakan apa yang paling efektif untuk mempertahankan karyawan tersebut&#8221;), memberikan nilai strategis yang jauh lebih tinggi.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-178614\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/Dashboard-aplikasi-HR-analytics.webp\" alt=\"Dashboard aplikasi HR analytics yang menampilkan metrik-metrik utama karyawan.\" width=\"1200\" height=\"650\" srcset=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/Dashboard-aplikasi-HR-analytics.webp 1200w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/Dashboard-aplikasi-HR-analytics-300x163.webp 300w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/Dashboard-aplikasi-HR-analytics-1024x555.webp 1024w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/Dashboard-aplikasi-HR-analytics-768x416.webp 768w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/Dashboard-aplikasi-HR-analytics-775x420.webp 775w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/Dashboard-aplikasi-HR-analytics-150x81.webp 150w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/Dashboard-aplikasi-HR-analytics-696x377.webp 696w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/Dashboard-aplikasi-HR-analytics-1068x580.webp 1068w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/p>\n<h2>Mengapa Bisnis Anda Membutuhkan Aplikasi HR Analytics?<\/h2>\n<p>Bisnis membutuhkan aplikasi HR analytics untuk meningkatkan pengambilan keputusan strategis, mengoptimalkan biaya tenaga kerja, meningkatkan retensi talenta terbaik, dan membangun keunggulan kompetitif melalui manajemen SDM yang berbasis data. Tanpa analisis data, perusahaan berisiko kehilangan talenta berharga dan menghabiskan anggaran secara tidak efisien.<\/p>\n<p>Sebagai contoh, data dari aplikasi ini dapat mengungkap akar masalah dari tingkat <em>turnover<\/em> yang tinggi. Analisis mungkin menunjukkan bahwa karyawan yang meninggalkan perusahaan dalam enam bulan pertama seringkali berasal dari sumber rekrutmen tertentu atau memiliki manajer yang sama. Dengan <em>insight<\/em> ini, perusahaan dapat melakukan intervensi yang tepat sasaran, seperti memperbaiki proses seleksi atau memberikan pelatihan kepemimpinan kepada manajer terkait.<\/p>\n<p>Selain itu, peran HR analytics sangat vital dalam mengoptimalkan proses rekrutmen. Dengan menganalisis data kinerja karyawan yang ada, sistem dapat mengidentifikasi karakteristik, keterampilan, atau latar belakang dari karyawan berkinerja tinggi. Menurut <a href=\"https:\/\/www.shrm.org\/resourcesandtools\/tools-and-samples\/toolkits\/pages\/understanding-and-using-people-analytics.aspx\" target=\"_blank\" rel=\"noopener\">SHRM<\/a>, pendekatan ini membantu tim rekrutmen memfokuskan pencarian pada profil kandidat yang paling potensial, sehingga meningkatkan kualitas perekrutan di masa depan dan mengurangi risiko salah rekrut.<\/p>\n<h2>Kriteria Penting dalam Memilih Aplikasi HR Analytics<\/h2>\n<p>Kriteria utama dalam memilih aplikasi HR analytics meliputi kemampuan integrasi dengan sistem lain, kemudahan penggunaan (<em>user-friendliness<\/em>), skalabilitas untuk pertumbuhan bisnis, keamanan data yang terjamin, dan kemampuan kustomisasi laporan sesuai kebutuhan unik perusahaan.<\/p>\n<p>Kemampuan integrasi yang mulus dengan <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/apa-itu-hris-pengertian-fungsi-hrm-software\/\">sistem HRIS<\/a>, penggajian (*payroll*), dan platform bisnis lainnya adalah fondasi utama. Integrasi ini memastikan semua data terkumpul dalam satu sumber kebenaran yang akurat dan terpusat (*single source of truth*), menghilangkan entri data manual yang rentan kesalahan dan menghemat waktu tim HR.<\/p>\n<p>Selain itu, dasbor yang intuitif dan visualisasi data yang mudah dipahami sangat penting. <em>Insight<\/em> dari HR analytics tidak hanya untuk analis data, tetapi juga untuk manajer lini dan eksekutif. Platform yang baik harus mampu menyajikan data kompleks dalam bentuk grafik atau diagram yang sederhana, memungkinkan semua pemangku kepentingan untuk mengakses dan memahami informasi strategis dengan cepat.<\/p>\n<h2>15 Rekomendasi Aplikasi HR Analytics Terbaik di Tahun 2025<\/h2>\n<p>Berikut adalah daftar aplikasi HR terbaik yang kami susun berdasarkan riset mendalam terhadap fitur, ulasan pengguna, dan kemampuan masing-masing platform untuk memenuhi kebutuhan bisnis modern di tahun 2025.<\/p>\n<h3>1. HashMicro EVA HRIS Suite<\/h3>\n<p>HashMicro menawarkan solusi HRIS yang komprehensif dan dirancang khusus untuk memenuhi kebutuhan pasar Indonesia yang kompleks. Modul analitiknya terintegrasi penuh dengan manajemen absensi, penggajian, penilaian kinerja (KPI), dan manajemen rekrutmen. Keunggulan utamanya adalah kemampuan kustomisasi yang tinggi dan model lisensi <em>unlimited user<\/em>, menjadikannya solusi yang sangat skalabel untuk perusahaan yang sedang bertumbuh tanpa khawatir biaya tambahan per pengguna.<\/p>\n<h3>2. Gadjian<\/h3>\n<p>Gadjian adalah platform HR dan payroll online yang populer di kalangan UKM Indonesia. Meskipun fokus utamanya adalah otomatisasi penggajian dan administrasi PPh 21, Gadjian menyediakan dasbor analitik dasar yang menyajikan data demografi karyawan, tren kompensasi, dan tingkat kehadiran. Ini adalah pilihan yang solid untuk bisnis yang baru memulai perjalanan HR berbasis data.<\/p>\n<h3>3. Mekari Talenta<\/h3>\n<p>Sebagai salah satu pemain besar di pasar HR Tech Indonesia, Mekari Talenta menyediakan platform HRIS terintegrasi yang mencakup modul analitik yang kuat. Pengguna dapat melacak metrik penting seperti tingkat <em>turnover<\/em>, demografi tenaga kerja, hingga analisis kompensasi. Dasbornya yang visual dan interaktif memudahkan para pemimpin untuk mendapatkan wawasan cepat.<\/p>\n<h3>4. Visier<\/h3>\n<p>Visier adalah platform yang didedikasikan sepenuhnya untuk <em>people analytics<\/em>. Ini bukan sekadar modul dalam sistem HRIS, melainkan alat analisis canggih yang dirancang untuk menjawab pertanyaan bisnis strategis. Visier menggunakan AI untuk memberikan analisis prediktif, seperti memprediksi karyawan yang berisiko resign atau mengidentifikasi kesenjangan keterampilan. Platform ini paling cocok untuk perusahaan skala besar dengan tim HR yang matang.<\/p>\n<h3>5. Workday HCM<\/h3>\n<p>Workday Human Capital Management (HCM) adalah solusi enterprise yang menyatukan HR, keuangan, dan perencanaan dalam satu sistem. Kemampuan analitiknya tertanam di seluruh platform, memberikan laporan dan dasbor <em>real-time<\/em> yang dapat diakses dari mana saja. Workday unggul dalam memberikan pandangan holistik tentang tenaga kerja dalam konteks keuangan bisnis.<\/p>\n<h3>6. SAP SuccessFactors<\/h3>\n<p>SAP SuccessFactors HXM Suite adalah solusi manajemen sumber daya manusia berbasis cloud yang kuat, terutama dalam manajemen talenta. Platform analitiknya, SAP Analytics Cloud, menyediakan wawasan mendalam tentang perencanaan tenaga kerja, analisis suksesi, dan metrik kinerja. Ini sangat ideal untuk organisasi global yang mengelola tenaga kerja yang beragam.<\/p>\n<h3>7. Oracle Fusion Cloud HCM Analytics<\/h3>\n<p>Oracle HCM Analytics adalah bagian dari suite Oracle Fusion Cloud HCM yang memanfaatkan kecerdasan buatan (AI) dan <em>machine learning<\/em>. Platform ini menawarkan analisis prediktif untuk membantu manajer HR mengidentifikasi tren, seperti perbandingan gaji dengan pasar atau analisis risiko <em>turnover<\/em>. Integrasinya yang erat dengan produk Oracle lainnya menjadi nilai tambah bagi perusahaan yang sudah berada di ekosistem Oracle.<\/p>\n<h3>8. BambooHR<\/h3>\n<p>Dikenal dengan antarmukanya yang sangat ramah pengguna, BambooHR adalah pilihan populer untuk usaha kecil dan menengah (UKM). Meskipun tidak sekuat platform enterprise, BambooHR menyediakan laporan dan analitik HR esensial yang mudah diakses dan dipahami. Fitur-fitur seperti pelacakan <em>turnover<\/em>, data demografi, dan laporan cuti sudah lebih dari cukup untuk kebutuhan sebagian besar UKM.<\/p>\n<h3>9. HiBob<\/h3>\n<p>HiBob (dikenal sebagai Bob) adalah platform HR modern yang dirancang untuk perusahaan menengah yang dinamis. Selain fungsi HRIS standar, Bob sangat fokus pada analitik keterlibatan, budaya, dan kinerja. Dasbornya yang visual dan fitur &#8220;Club View&#8221; memungkinkan manajer untuk memahami dinamika tim dan sentimen karyawan secara <em>real-time<\/em>.<\/p>\n<h3>10. Lattice<\/h3>\n<p>Lattice adalah platform manajemen kinerja yang telah berkembang menjadi solusi <em>people success<\/em>. Kekuatan utamanya terletak pada analitik seputar kinerja, keterlibatan karyawan melalui survei, dan penetapan tujuan (OKR). Lattice sangat baik dalam menghubungkan data kinerja individu dengan hasil bisnis secara keseluruhan.<\/p>\n<h3>11. Personio<\/h3>\n<p>Personio adalah solusi HR all-in-one yang populer di pasar Eropa, dirancang untuk UKM. Platform ini menyediakan kemampuan pelaporan yang solid di seluruh siklus hidup karyawan, dari rekrutmen hingga <em>offboarding<\/em>. Pengguna dapat dengan mudah membuat laporan kustom untuk menganalisis metrik seperti biaya rekrutmen, absensi, dan data penggajian.<\/p>\n<h3>12. ChartHop<\/h3>\n<p>Berbeda dari yang lain, ChartHop berfokus pada visualisasi data untuk perencanaan organisasi dan strategis. Platform ini memungkinkan para pemimpin untuk melihat bagan organisasi, data demografi, dan proyeksi jumlah karyawan secara dinamis. Ini adalah alat yang sangat kuat untuk perencanaan skenario, seperti restrukturisasi atau ekspansi tim.<\/p>\n<h3>13. UKG Pro<\/h3>\n<p>UKG (Ultimate Kronos Group) Pro adalah solusi HCM yang kuat dengan kemampuan analitik dan intelijen bisnis yang canggih. Platform ini menawarkan analisis prediktif dan preskriptif untuk membantu organisasi memahami tren tenaga kerja, mengelola kepatuhan, dan membuat keputusan yang lebih cerdas terkait kompensasi dan manajemen talenta.<\/p>\n<h3>14. Paycor<\/h3>\n<p>Paycor adalah platform HCM yang dirancang untuk memberdayakan para pemimpin dengan data yang dapat ditindaklanjuti. Dasbor analitiknya memberikan wawasan tentang metrik tenaga kerja, penggajian, dan tunjangan. Paycor menekankan penyediaan data yang relevan bagi para manajer lini untuk membuat keputusan sehari-hari yang lebih baik.<\/p>\n<h3>15. Tableau<\/h3>\n<p>Tableau bukanlah aplikasi HR khusus, melainkan platform intelijen bisnis (BI) terkemuka. Namun, banyak tim HR menggunakannya untuk membuat dasbor analitik yang sangat kustom dan mendalam. Dengan menghubungkan Tableau ke berbagai sumber data HR (seperti HRIS atau sistem penggajian), perusahaan dapat membangun visualisasi data yang tidak terbatas sesuai kebutuhan spesifik mereka.<\/p>\n<h2>Kesimpulan<\/h2>\n<p data-start=\"0\" data-end=\"203\">Mengabaikan data SDM berarti melewatkan peluang strategis dalam <em data-start=\"82\" data-end=\"96\" data-is-only-node=\"\">HR analytics<\/em>. Pendekatan berbasis data membantu perusahaan memahami tenaga kerja dan mengoptimalkan keputusan bisnis.<\/p>\n<p data-start=\"205\" data-end=\"454\"><em data-start=\"223\" data-end=\"247\">Software HRM HashMicro<\/em> menawarkan solusi lengkap dan terintegrasi untuk meningkatkan efisiensi, retensi, dan kualitas pengambilan keputusan. Platform ini dirancang agar sesuai dengan kebutuhan dan skala perusahaan di Indonesia.<\/p>\n<p data-start=\"205\" data-end=\"454\">Mulai transformasi HR berbasis data dengan langkah yang tepat. Jadwalkan <em data-start=\"547\" data-end=\"560\" data-is-only-node=\"\">demo gratis<\/em> dan lihat bagaimana HashMicro mengubah data menjadi kekuatan strategis bagi bisnis Anda.<\/p>\n<h2><strong>Pertanyaan Seputar aplikasi hr analytics<\/strong><\/h2>\n<ul class=\"bottom_faq\">\n<li>\n<details>\n<summary><strong>Apa perbedaan utama antara HRIS dan aplikasi HR analytics?<\/strong><\/summary>\n<p>HRIS (Human Resource Information System) adalah sistem untuk mengelola dan menyimpan data karyawan secara operasional, seperti data pribadi, absensi, dan penggajian. Sementara itu, aplikasi HR analytics adalah platform yang menggunakan data dari HRIS (dan sumber lain) untuk dianalisis guna menemukan tren, membuat prediksi, dan mendukung pengambilan keputusan strategis.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Berapa biaya yang harus dianggarkan untuk aplikasi HR analytics?<\/strong><\/summary>\n<p>Biayanya sangat bervariasi. Untuk UKM, banyak solusi SaaS menawarkan model langganan bulanan per karyawan yang terjangkau. Untuk perusahaan besar, biayanya bisa menjadi investasi signifikan, tergantung pada kompleksitas, jumlah fitur, dan tingkat kustomisasi yang dibutuhkan.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Apa saja metrik HR paling penting yang harus dilacak?<\/strong><\/summary>\n<p>Beberapa metrik fundamental yang harus dilacak antara lain: Tingkat Turnover Karyawan (Employee Turnover Rate), Waktu untuk Merekrut (Time-to-Hire), Biaya per Rekrutmen (Cost-per-Hire), Tingkat Absensi (Absenteeism Rate), dan Skor Keterlibatan Karyawan (Employee Engagement Score).<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Bagaimana cara memulai implementasi HR analytics di perusahaan?<\/strong><\/summary>\n<p>Mulailah dengan mengidentifikasi satu atau dua masalah bisnis yang paling mendesak (misalnya, turnover tinggi di departemen tertentu). Kemudian, kumpulkan data yang relevan, pilih alat yang sesuai dengan anggaran dan kebutuhan Anda (bisa dimulai dengan spreadsheet jika perlu), analisis data untuk mencari pola, dan presentasikan temuan Anda kepada manajemen dengan rekomendasi tindakan yang jelas.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Bagaimana cara memulai implementasi HR analytics di perusahaan?<\/strong><\/summary>\n<p>Mulailah dengan mengidentifikasi satu atau dua masalah bisnis yang paling mendesak (misalnya, turnover tinggi di departemen tertentu). Kemudian, kumpulkan data yang relevan, pilih alat yang sesuai dengan anggaran dan kebutuhan Anda (bisa dimulai dengan spreadsheet jika perlu), analisis data untuk mencari pola, dan presentasikan temuan Anda kepada manajemen dengan rekomendasi tindakan yang jelas.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Apakah bisnis kecil bisa mendapatkan manfaat dari HR analytics?<\/strong><\/summary>\n<p>Tentu saja. Bisnis kecil dapat menggunakan HR analytics untuk hal-hal krusial seperti mengidentifikasi penyebab turnover, memahami profil kandidat yang paling cocok, dan memastikan kompensasi yang kompetitif. Memulai dari skala kecil dengan metrik dasar dapat memberikan dampak besar pada efisiensi dan profitabilitas.<\/p>\n<\/details>\n<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Pengambilan keputusan SDM yang hanya mengandalkan intuisi dapat menghambat efektivitas Succession Planning dan pertumbuhan perusahaan. Tanpa data yang jelas, banyak tren penting dalam manajemen talenta tidak terdeteksi. Dengan software HRM, perusahaan dapat mengubah data karyawan menjadi insight strategis yang akurat. Analisis berbasis data membantu memahami pola, memprediksi kebutuhan, dan merancang kebijakan SDM yang lebih tepat. [&hellip;]<\/p>\n","protected":false},"author":218,"featured_media":176313,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[6],"tags":[],"class_list":{"0":"post-176029","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-hrm"},"acf":{"post_reviewer":""},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.1 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Aplikasi HR Analytics: 15 Pilihan Terbaik untuk Keputusan Bisnis Berbasis Data &#187; HashMicro Indonesia<\/title>\n<meta name=\"description\" content=\"Temukan 15 aplikasi HR analytics terbaik untuk pengambilan keputusan berbasis data. Tingkatkan retensi &amp; produktivitas karyawan dengan software yang tepat.\" \/>\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\/id\/blog\/aplikasi-hr-analytics\/\" \/>\n<meta property=\"og:locale\" content=\"id_ID\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Aplikasi HR Analytics: 15 Pilihan Terbaik untuk Keputusan Bisnis Berbasis Data\" \/>\n<meta property=\"og:description\" content=\"Temukan 15 aplikasi HR analytics terbaik untuk pengambilan keputusan berbasis data. Tingkatkan retensi &amp; produktivitas karyawan dengan software yang tepat.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/aplikasi-hr-analytics\/\" \/>\n<meta property=\"og:site_name\" content=\"HashMicro Indonesia\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/hashmicro\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-12T04:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-09T00:48:02+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/HR-analytics.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"650\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Reno Wicaksana\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@hashmicro\" \/>\n<meta name=\"twitter:site\" content=\"@hashmicro\" \/>\n<meta name=\"twitter:label1\" content=\"Ditulis oleh\" \/>\n\t<meta name=\"twitter:data1\" content=\"Reno Wicaksana\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimasi waktu membaca\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 menit\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/aplikasi-hr-analytics\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/aplikasi-hr-analytics\\\/\"},\"author\":{\"name\":\"Reno Wicaksana\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#\\\/schema\\\/person\\\/0d3340f667908102d8894da18f80732e\"},\"headline\":\"Aplikasi HR Analytics: 15 Pilihan Terbaik untuk Keputusan Bisnis Berbasis Data\",\"datePublished\":\"2025-11-12T04:00:00+00:00\",\"dateModified\":\"2026-03-09T00:48:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/aplikasi-hr-analytics\\\/\"},\"wordCount\":1958,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/aplikasi-hr-analytics\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/HR-analytics.webp\",\"articleSection\":[\"HRM\"],\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/aplikasi-hr-analytics\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/aplikasi-hr-analytics\\\/\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/aplikasi-hr-analytics\\\/\",\"name\":\"Aplikasi HR Analytics: 15 Pilihan Terbaik untuk Keputusan Bisnis Berbasis Data &#187; HashMicro Indonesia\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/aplikasi-hr-analytics\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/aplikasi-hr-analytics\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/HR-analytics.webp\",\"datePublished\":\"2025-11-12T04:00:00+00:00\",\"dateModified\":\"2026-03-09T00:48:02+00:00\",\"description\":\"Temukan 15 aplikasi HR analytics terbaik untuk pengambilan keputusan berbasis data. Tingkatkan retensi & produktivitas karyawan dengan software yang tepat.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/aplikasi-hr-analytics\\\/#breadcrumb\"},\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/aplikasi-hr-analytics\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/aplikasi-hr-analytics\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/HR-analytics.webp\",\"contentUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/HR-analytics.webp\",\"width\":1200,\"height\":650,\"caption\":\"HR analytics\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/aplikasi-hr-analytics\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Aplikasi HR Analytics: 15 Pilihan Terbaik untuk Keputusan Bisnis Berbasis Data\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/\",\"name\":\"HashMicro Indonesia\",\"description\":\"Blog Software Manajemen Bisnis Indonesia #1\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"id\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#organization\",\"name\":\"HashMicro Indonesia\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/11\\\/hashmicro-logo-blog.webp\",\"contentUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/11\\\/hashmicro-logo-blog.webp\",\"width\":924,\"height\":121,\"caption\":\"HashMicro Indonesia\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/hashmicro\",\"https:\\\/\\\/x.com\\\/hashmicro\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/hashmicro\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#\\\/schema\\\/person\\\/0d3340f667908102d8894da18f80732e\",\"name\":\"Reno Wicaksana\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/Reno-Wicaksana-96x96.webp\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/Reno-Wicaksana-96x96.webp\",\"contentUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/Reno-Wicaksana-96x96.webp\",\"caption\":\"Reno Wicaksana\"},\"description\":\"Reno adalah HRM Specialist dan senior content writer dengan pengalaman lebih dari 5 tahun di industri teknologi dan manajemen sumber daya manusia. Secara konsisten mengangkat topik artikel seputar performance management, rekrutmen dan pengembangan SDM, manajemen talenta, dan sistem HRIS untuk pengelolaan karyawan.\",\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/in\\\/william-w-88353a262\\\/\"],\"gender\":\"Laki-laki\",\"knowsAbout\":[\"HRM\",\"HRIS\"],\"knowsLanguage\":[\"Inggris\",\"Indonesia\"],\"jobTitle\":\"Senior Content Writer on HRIS\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/author\\\/reno-wicaksana\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Aplikasi HR Analytics: 15 Pilihan Terbaik untuk Keputusan Bisnis Berbasis Data &#187; HashMicro Indonesia","description":"Temukan 15 aplikasi HR analytics terbaik untuk pengambilan keputusan berbasis data. Tingkatkan retensi & produktivitas karyawan dengan software yang tepat.","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\/id\/blog\/aplikasi-hr-analytics\/","og_locale":"id_ID","og_type":"article","og_title":"Aplikasi HR Analytics: 15 Pilihan Terbaik untuk Keputusan Bisnis Berbasis Data","og_description":"Temukan 15 aplikasi HR analytics terbaik untuk pengambilan keputusan berbasis data. Tingkatkan retensi & produktivitas karyawan dengan software yang tepat.","og_url":"https:\/\/www.hashmicro.com\/id\/blog\/aplikasi-hr-analytics\/","og_site_name":"HashMicro Indonesia","article_publisher":"https:\/\/www.facebook.com\/hashmicro","article_published_time":"2025-11-12T04:00:00+00:00","article_modified_time":"2026-03-09T00:48:02+00:00","og_image":[{"width":1200,"height":650,"url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/HR-analytics.webp","type":"image\/webp"}],"author":"Reno Wicaksana","twitter_card":"summary_large_image","twitter_creator":"@hashmicro","twitter_site":"@hashmicro","twitter_misc":{"Ditulis oleh":"Reno Wicaksana","Estimasi waktu membaca":"12 menit"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/id\/blog\/aplikasi-hr-analytics\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/aplikasi-hr-analytics\/"},"author":{"name":"Reno Wicaksana","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/0d3340f667908102d8894da18f80732e"},"headline":"Aplikasi HR Analytics: 15 Pilihan Terbaik untuk Keputusan Bisnis Berbasis Data","datePublished":"2025-11-12T04:00:00+00:00","dateModified":"2026-03-09T00:48:02+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/aplikasi-hr-analytics\/"},"wordCount":1958,"commentCount":0,"publisher":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/aplikasi-hr-analytics\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/HR-analytics.webp","articleSection":["HRM"],"inLanguage":"id","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.hashmicro.com\/id\/blog\/aplikasi-hr-analytics\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/id\/blog\/aplikasi-hr-analytics\/","url":"https:\/\/www.hashmicro.com\/id\/blog\/aplikasi-hr-analytics\/","name":"Aplikasi HR Analytics: 15 Pilihan Terbaik untuk Keputusan Bisnis Berbasis Data &#187; HashMicro Indonesia","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/aplikasi-hr-analytics\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/aplikasi-hr-analytics\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/HR-analytics.webp","datePublished":"2025-11-12T04:00:00+00:00","dateModified":"2026-03-09T00:48:02+00:00","description":"Temukan 15 aplikasi HR analytics terbaik untuk pengambilan keputusan berbasis data. Tingkatkan retensi & produktivitas karyawan dengan software yang tepat.","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/aplikasi-hr-analytics\/#breadcrumb"},"inLanguage":"id","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/id\/blog\/aplikasi-hr-analytics\/"]}]},{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/aplikasi-hr-analytics\/#primaryimage","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/HR-analytics.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/HR-analytics.webp","width":1200,"height":650,"caption":"HR analytics"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/id\/blog\/aplikasi-hr-analytics\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/id\/blog\/"},{"@type":"ListItem","position":2,"name":"Aplikasi HR Analytics: 15 Pilihan Terbaik untuk Keputusan Bisnis Berbasis Data"}]},{"@type":"WebSite","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#website","url":"https:\/\/www.hashmicro.com\/id\/blog\/","name":"HashMicro Indonesia","description":"Blog Software Manajemen Bisnis Indonesia #1","publisher":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.hashmicro.com\/id\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"id"},{"@type":"Organization","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization","name":"HashMicro Indonesia","url":"https:\/\/www.hashmicro.com\/id\/blog\/","logo":{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/11\/hashmicro-logo-blog.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/11\/hashmicro-logo-blog.webp","width":924,"height":121,"caption":"HashMicro Indonesia"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/hashmicro","https:\/\/x.com\/hashmicro","https:\/\/www.linkedin.com\/company\/hashmicro"]},{"@type":"Person","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/0d3340f667908102d8894da18f80732e","name":"Reno Wicaksana","image":{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Reno-Wicaksana-96x96.webp","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Reno-Wicaksana-96x96.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Reno-Wicaksana-96x96.webp","caption":"Reno Wicaksana"},"description":"Reno adalah HRM Specialist dan senior content writer dengan pengalaman lebih dari 5 tahun di industri teknologi dan manajemen sumber daya manusia. Secara konsisten mengangkat topik artikel seputar performance management, rekrutmen dan pengembangan SDM, manajemen talenta, dan sistem HRIS untuk pengelolaan karyawan.","sameAs":["https:\/\/www.linkedin.com\/in\/william-w-88353a262\/"],"gender":"Laki-laki","knowsAbout":["HRM","HRIS"],"knowsLanguage":["Inggris","Indonesia"],"jobTitle":"Senior Content Writer on HRIS","url":"https:\/\/www.hashmicro.com\/id\/blog\/author\/reno-wicaksana\/"}]}},"focus_keyword":"aplikasi hr analytics","order_j":"","_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/176029","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/users\/218"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/comments?post=176029"}],"version-history":[{"count":5,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/176029\/revisions"}],"predecessor-version":[{"id":190554,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/176029\/revisions\/190554"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media\/176313"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media?parent=176029"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/categories?post=176029"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/tags?post=176029"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}