{"id":534,"date":"2026-10-18T12:52:20","date_gmt":"2026-10-18T12:52:20","guid":{"rendered":"https:\/\/ongroundmedia.com\/?page_id=534"},"modified":"2026-10-18T12:53:52","modified_gmt":"2026-10-18T12:53:52","slug":"planning-analytics-tools","status":"publish","type":"page","link":"https:\/\/ongroundmedia.com\/?page_id=534","title":{"rendered":"Planning &#038; Analytics Tools"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"534\" class=\"elementor elementor-534\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ecbb335 e-con e-atomic-element e-flexbox-base e-default-div e-1fb25ba \" data-id=\"ecbb335\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"ecbb335\">\n    \t\t<div class=\"elementor-element elementor-element-8af9583 elementor-widget elementor-widget-html\" data-id=\"8af9583\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n<meta charset=\"utf-8\">\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\r\n<title>Social Media Planning &amp; Analytics Tools | Free<\/title>\r\n<meta name=\"description\" content=\"Build a content calendar, find good posting times, and calculate engagement and growth. Free planning tools.\">\r\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\r\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Bricolage+Grotesque:wght@600;800&family=DM+Sans:wght@400;500;700&display=swap\" rel=\"stylesheet\">\r\n<style>\r\n:root{--bg:#EEF3F8;--surface:#fff;--ink:#14213D;--mute:#5B6783;--line:#D5DEEA;--accent:#0E9F8E;--accent-ink:#fff;--hot:#FFB547;--soft:#E2F5F2;--r:14px}\r\n@media (prefers-color-scheme:dark){:root{--bg:#0D1526;--surface:#16213A;--ink:#EAF0FA;--mute:#9AA9C6;--line:#2A3858;--accent:#2CC9B5;--accent-ink:#06201C;--hot:#FFB547;--soft:#12332F}}\r\n*{box-sizing:border-box}\r\nhtml{scroll-behavior:smooth}\r\nbody{margin:0;background:var(--bg);color:var(--ink);font:16px\/1.55 'DM Sans',system-ui,sans-serif}\r\n.wrap{max-width:1040px;margin:0 auto;padding:40px 20px 64px}\r\nh1,h2,h3{font-family:'Bricolage Grotesque',system-ui,sans-serif;line-height:1.1;margin:0}\r\nh1{font-size:clamp(2rem,5vw,3.2rem);font-weight:800;letter-spacing:-.02em;max-width:16ch}\r\n.intro{color:var(--mute);font-size:1.1rem;max-width:52ch;margin:14px 0 28px}\r\n.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-bottom:24px}\r\n.card{all:unset;box-sizing:border-box;cursor:pointer;background:var(--surface);border:2px solid var(--line);border-radius:var(--r);padding:16px;display:flex;flex-direction:column;gap:6px;transition:border-color .15s,transform .15s}\r\n.card:hover{border-color:var(--accent)}\r\n.card:focus-visible,.btn:focus-visible,select:focus-visible,input:focus-visible,textarea:focus-visible,.day:focus-visible{outline:3px solid var(--hot);outline-offset:2px}\r\n.card[aria-selected=true]{border-color:var(--accent);background:var(--soft)}\r\n.card b{font-family:'Bricolage Grotesque',sans-serif;font-size:1.05rem}\r\n.card span{font-size:.88rem;color:var(--mute)}\r\n.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:clamp(18px,3vw,32px)}\r\n.panel[hidden]{display:none}\r\n.panel h2{font-size:1.7rem;margin-bottom:6px}\r\n.sub{color:var(--mute);margin:0 0 22px}\r\nlabel{display:block;font-weight:700;font-size:.9rem;margin-bottom:5px}\r\ninput,select,textarea{width:100%;font:inherit;color:var(--ink);background:var(--bg);border:1.5px solid var(--line);border-radius:10px;padding:10px 12px}\r\n.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px}\r\n.btn{font:inherit;font-weight:700;background:var(--accent);color:var(--accent-ink);border:0;border-radius:10px;padding:11px 18px;cursor:pointer}\r\n.btn.ghost{background:transparent;color:var(--ink);border:1.5px solid var(--line)}\r\n.row{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px;align-items:center}\r\n.result{margin-top:22px;background:var(--soft);border-radius:var(--r);padding:20px;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:16px}\r\n.big{font-family:'Bricolage Grotesque',sans-serif;font-size:2.4rem;font-weight:800;line-height:1}\r\n.lbl{font-size:.85rem;color:var(--mute)}\r\n.note{font-size:.85rem;color:var(--mute);margin-top:14px}\r\n.err{color:#C0392B;font-weight:700;margin-top:12px}\r\n\/* calendar *\/\r\n.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:5px;margin-top:16px}\r\n.dow{font-size:.78rem;color:var(--mute);text-align:center;font-weight:700}\r\n.day{all:unset;box-sizing:border-box;cursor:pointer;min-height:68px;background:var(--bg);border:1.5px solid var(--line);border-radius:9px;padding:5px;display:flex;flex-direction:column;gap:3px;overflow:hidden}\r\n.day:hover{border-color:var(--accent)}\r\n.day.sel{border-color:var(--accent);background:var(--soft)}\r\n.day small{font-weight:700;font-size:.75rem;color:var(--mute)}\r\n.dot{height:6px;border-radius:3px}\r\n.pl{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:6px}\r\n.post{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line)}\r\n.post button{background:none;border:0;color:var(--mute);cursor:pointer;font:inherit}\r\n.editor{margin-top:18px;border-top:2px dashed var(--line);padding-top:16px}\r\n\/* heatmap *\/\r\n.heat{display:grid;grid-template-columns:70px repeat(4,1fr);gap:5px;margin-top:16px;font-size:.85rem}\r\n.heat div{padding:12px 6px;text-align:center;border-radius:8px}\r\n.heat .h{font-weight:700;color:var(--mute);padding:4px}\r\n.heat .d{font-weight:700;text-align:left}\r\n.s0{background:var(--bg)}.s1{background:color-mix(in srgb,var(--accent) 22%,var(--bg))}.s2{background:color-mix(in srgb,var(--accent) 55%,var(--bg))}.s3{background:var(--accent);color:var(--accent-ink);font-weight:700}\r\n.pills{display:flex;gap:8px;flex-wrap:wrap}\r\n.pills button{font:inherit;font-weight:700;padding:8px 14px;border-radius:99px;border:1.5px solid var(--line);background:var(--bg);color:var(--ink);cursor:pointer}\r\n.pills button[aria-pressed=true]{background:var(--ink);color:var(--bg);border-color:var(--ink)}\r\nul.tips{padding-left:20px;margin:10px 0 0}\r\n\/* audit *\/\r\n.grp{margin-top:20px}.grp h3{font-size:1.15rem;margin-bottom:6px}\r\n.chk{display:flex;gap:10px;align-items:flex-start;padding:7px 0;font-weight:400}\r\n.chk input{width:20px;height:20px;margin-top:2px;flex:none;accent-color:var(--accent)}\r\n.bar{height:12px;border-radius:6px;background:var(--bg);overflow:hidden;margin-top:6px;border:1px solid var(--line)}\r\n.bar i{display:block;height:100%;background:var(--accent);width:0;transition:width .25s}\r\n@media (max-width:560px){.day{min-height:52px}.heat{grid-template-columns:48px repeat(4,1fr);font-size:.72rem}}\r\n@media print{.cards,.row,.note{display:none}.panel[hidden]{display:none}}\r\n<\/style>\r\n<\/head>\r\n<body>\r\n<!--\r\nSEO per tool (used by the script below when a tool is opened; copy to each tool's own page if you split them):\r\n#8  content-calendar-planner      | Free Content Calendar & 30-Day Social Media Planner | Plan a month of social media posts with a simple content calendar. Add ideas, dates and platforms. Free planner.\r\n#31 best-time-to-post             | Best Time to Post on Social Media | Free Guide | Find good posting times for Instagram, Facebook, LinkedIn and YouTube. Free guide with tips to test your own best times.\r\n#5  engagement-rate-calculator    | Free Engagement Rate Calculator | Instagram & More | Calculate engagement rate from likes, comments, shares and followers or reach. Free and instant.\r\n#30 follower-growth-calculator    | Follower Growth Calculator | Growth Rate & Forecast | Calculate your follower growth rate and forecast your future follower count. Free social media growth calculator.\r\n#34 social-media-audit-template   | Free Social Media Audit Template | Checklist | Audit your social media accounts with a simple template covering profile, content, engagement and goals. Free.\r\n-->\r\n<main class=\"wrap\">\r\n  <h1>Social Media Planning &amp; Analytics Tools<\/h1>\r\n  <p class=\"intro\">Plan your month, post at the right time and track how your accounts are growing.<\/p>\r\n\r\n  <div class=\"cards\" role=\"tablist\" aria-label=\"Tools\">\r\n    <button class=\"card\" role=\"tab\" id=\"t-content-calendar-planner\" data-tool=\"content-calendar-planner\" aria-selected=\"true\"><b>Content Calendar<\/b><span>Plan a full month of posts in one view.<\/span><\/button>\r\n    <button class=\"card\" role=\"tab\" id=\"t-best-time-to-post\" data-tool=\"best-time-to-post\" aria-selected=\"false\"><b>Best Time to Post<\/b><span>See good posting times for each platform.<\/span><\/button>\r\n    <button class=\"card\" role=\"tab\" id=\"t-engagement-rate-calculator\" data-tool=\"engagement-rate-calculator\" aria-selected=\"false\"><b>Engagement Rate<\/b><span>Work out your engagement rate from likes, comments and shares.<\/span><\/button>\r\n    <button class=\"card\" role=\"tab\" id=\"t-follower-growth-calculator\" data-tool=\"follower-growth-calculator\" aria-selected=\"false\"><b>Follower Growth<\/b><span>See your growth rate and where you could be next month.<\/span><\/button>\r\n    <button class=\"card\" role=\"tab\" id=\"t-social-media-audit-template\" data-tool=\"social-media-audit-template\" aria-selected=\"false\"><b>Social Media Audit<\/b><span>Review your account step by step with a ready checklist.<\/span><\/button>\r\n  <\/div>\r\n\r\n  <!-- 1. CONTENT CALENDAR -->\r\n  <section class=\"panel\" id=\"content-calendar-planner\" role=\"tabpanel\">\r\n    <h2>30-Day Content Calendar<\/h2>\r\n    <p class=\"sub\">Pick a start date, select a day, then add a post idea and platform.<\/p>\r\n    <div class=\"grid\"><div><label for=\"cStart\">Start date<\/label><input type=\"date\" id=\"cStart\"><\/div><\/div>\r\n    <div class=\"cal\" id=\"calGrid\" aria-label=\"30-day calendar\"><\/div>\r\n    <div class=\"editor\" id=\"editor\"><\/div>\r\n    <div class=\"row\"><button class=\"btn ghost\" id=\"cClear\">Clear calendar<\/button><button class=\"btn ghost\" onclick=\"window.print()\">Print calendar<\/button><\/div>\r\n    <p class=\"note\">Your plan is saved in this browser only.<\/p>\r\n  <\/section>\r\n\r\n  <!-- 2. BEST TIME -->\r\n  <section class=\"panel\" id=\"best-time-to-post\" role=\"tabpanel\" hidden>\r\n    <h2>Best Time to Post<\/h2>\r\n    <p class=\"sub\">Choose a platform. Darker boxes are usually stronger starting points, in your audience&rsquo;s local time.<\/p>\r\n    <div class=\"pills\" id=\"btPills\"><\/div>\r\n    <div class=\"heat\" id=\"btHeat\"><\/div>\r\n    <ul class=\"tips\" id=\"btTips\"><\/ul>\r\n    <h3 style=\"margin-top:24px;font-size:1.15rem\">Find your own best times<\/h3>\r\n    <ul class=\"tips\">\r\n      <li>Post at the same two or three time slots for two weeks.<\/li>\r\n      <li>Compare reach and engagement for each post in your account insights.<\/li>\r\n      <li>Keep the winning slots, swap the weakest, and repeat each month.<\/li>\r\n    <\/ul>\r\n    <p class=\"note\">These are general patterns, not data from your account. Your audience&rsquo;s habits matter more.<\/p>\r\n  <\/section>\r\n\r\n  <!-- 3. ENGAGEMENT -->\r\n  <section class=\"panel\" id=\"engagement-rate-calculator\" role=\"tabpanel\" hidden>\r\n    <h2>Engagement Rate Calculator<\/h2>\r\n    <p class=\"sub\">Enter your numbers for a post or a period.<\/p>\r\n    <div class=\"grid\">\r\n      <div><label for=\"eL\">Likes<\/label><input type=\"number\" id=\"eL\" min=\"0\" inputmode=\"numeric\"><\/div>\r\n      <div><label for=\"eC\">Comments<\/label><input type=\"number\" id=\"eC\" min=\"0\" inputmode=\"numeric\"><\/div>\r\n      <div><label for=\"eS\">Shares<\/label><input type=\"number\" id=\"eS\" min=\"0\" inputmode=\"numeric\"><\/div>\r\n      <div><label for=\"eV\">Saves (optional)<\/label><input type=\"number\" id=\"eV\" min=\"0\" inputmode=\"numeric\"><\/div>\r\n      <div><label for=\"eB\">Calculate against<\/label><select id=\"eBase\"><option value=\"followers\">Followers<\/option><option value=\"reach\">Reach<\/option><\/select><\/div>\r\n      <div><label for=\"eB\" id=\"eBl\">Followers<\/label><input type=\"number\" id=\"eB\" min=\"1\" inputmode=\"numeric\"><\/div>\r\n    <\/div>\r\n    <div class=\"row\"><button class=\"btn\" id=\"eGo\">Calculate<\/button><\/div>\r\n    <div id=\"eOut\"><\/div>\r\n  <\/section>\r\n\r\n  <!-- 4. GROWTH -->\r\n  <section class=\"panel\" id=\"follower-growth-calculator\" role=\"tabpanel\" hidden>\r\n    <h2>Follower Growth Calculator<\/h2>\r\n    <p class=\"sub\">Compare two points in time to see your rate and a simple forecast.<\/p>\r\n    <div class=\"grid\">\r\n      <div><label for=\"gS\">Followers at start<\/label><input type=\"number\" id=\"gS\" min=\"1\" inputmode=\"numeric\"><\/div>\r\n      <div><label for=\"gE\">Followers now<\/label><input type=\"number\" id=\"gE\" min=\"0\" inputmode=\"numeric\"><\/div>\r\n      <div><label for=\"gD\">Days between<\/label><input type=\"number\" id=\"gD\" min=\"1\" value=\"30\" inputmode=\"numeric\"><\/div>\r\n    <\/div>\r\n    <div class=\"row\"><button class=\"btn\" id=\"gGo\">Calculate<\/button><\/div>\r\n    <div id=\"gOut\"><\/div>\r\n  <\/section>\r\n\r\n  <!-- 5. AUDIT -->\r\n  <section class=\"panel\" id=\"social-media-audit-template\" role=\"tabpanel\" hidden>\r\n    <h2>Social Media Audit Template<\/h2>\r\n    <p class=\"sub\">Tick what you already do well. Anything unticked is your to-do list.<\/p>\r\n    <div><b id=\"aScore\">0 of 0 done<\/b><div class=\"bar\"><i id=\"aBar\"><\/i><\/div><\/div>\r\n    <div id=\"aList\"><\/div>\r\n    <div class=\"grp\"><label for=\"aNotes\">Notes and next steps<\/label><textarea id=\"aNotes\" rows=\"4\" placeholder=\"What will you fix first?\"><\/textarea><\/div>\r\n    <div class=\"row\"><button class=\"btn ghost\" id=\"aReset\">Reset checklist<\/button><button class=\"btn\" onclick=\"window.print()\">Print audit<\/button><\/div>\r\n  <\/section>\r\n<\/main>\r\n\r\n<script>\r\n(function(){\r\nvar $=function(s){return document.querySelector(s)};\r\nvar store={get:function(k,d){try{var v=localStorage.getItem(k);return v?JSON.parse(v):d}catch(e){return d}},set:function(k,v){try{localStorage.setItem(k,JSON.stringify(v))}catch(e){}}};\r\nvar fmt=function(n,d){return Number(n).toLocaleString(undefined,{maximumFractionDigits:d==null?0:d})};\r\nfunction esc(s){return String(s).replace(\/[&<>\"]\/g,function(c){return{'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;'}[c]})}\r\n\r\n\/* ---- tabs + SEO ---- *\/\r\nvar SEO={\r\n'content-calendar-planner':['Free Content Calendar & 30-Day Social Media Planner','Plan a month of social media posts with a simple content calendar. Add ideas, dates and platforms. Free planner.'],\r\n'best-time-to-post':['Best Time to Post on Social Media | Free Guide','Find good posting times for Instagram, Facebook, LinkedIn and YouTube. Free guide with tips to test your own best times.'],\r\n'engagement-rate-calculator':['Free Engagement Rate Calculator | Instagram & More','Calculate engagement rate from likes, comments, shares and followers or reach. Free and instant.'],\r\n'follower-growth-calculator':['Follower Growth Calculator | Growth Rate & Forecast','Calculate your follower growth rate and forecast your future follower count. Free social media growth calculator.'],\r\n'social-media-audit-template':['Free Social Media Audit Template | Checklist','Audit your social media accounts with a simple template covering profile, content, engagement and goals. Free.']};\r\nvar cards=document.querySelectorAll('.card');\r\nfunction show(id,push){\r\n  cards.forEach(function(c){c.setAttribute('aria-selected',c.dataset.tool===id)});\r\n  document.querySelectorAll('.panel').forEach(function(p){p.hidden=p.id!==id});\r\n  document.title=SEO[id][0];\r\n  $('meta[name=description]').setAttribute('content',SEO[id][1]);\r\n  if(push){try{history.replaceState(null,'','#'+id)}catch(e){}}\r\n}\r\ncards.forEach(function(c){c.addEventListener('click',function(){show(c.dataset.tool,true)})});\r\nvar h=location.hash.slice(1); if(SEO[h]) show(h,false);\r\n\r\n\/* ---- 1. calendar ---- *\/\r\nvar PL={Instagram:'#D6336C',Facebook:'#2F6FDE',LinkedIn:'#0A7AA8',YouTube:'#D93025',TikTok:'#6B5B95'};\r\nvar cal=store.get('cal',{start:'',posts:{}});\r\nif(!cal.start){cal.start=new Date().toISOString().slice(0,10)}\r\nvar sel=0;\r\n$('#cStart').value=cal.start;\r\n$('#cStart').addEventListener('change',function(e){if(e.target.value){cal.start=e.target.value;store.set('cal',cal);sel=0;drawCal()}});\r\nfunction drawCal(){\r\n  var g=$('#calGrid'),d0=new Date(cal.start+'T00:00:00'),off=d0.getDay(),html='';\r\n  ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'].forEach(function(n){html+='<div class=\"dow\">'+n+'<\/div>'});\r\n  for(var i=0;i<off;i++)html+='<div><\/div>';\r\n  for(var i=0;i<30;i++){\r\n    var d=new Date(d0);d.setDate(d.getDate()+i);\r\n    var ps=cal.posts[i]||[],dots=ps.map(function(p){return'<span class=\"dot\" style=\"background:'+PL[p.p]+'\"><\/span>'}).join('');\r\n    html+='<button class=\"day'+(i===sel?' sel':'')+'\" data-i=\"'+i+'\" aria-label=\"'+d.toDateString()+', '+ps.length+' posts\"><small>'+d.getDate()+' '+d.toLocaleString(undefined,{month:'short'})+'<\/small>'+dots+'<\/button>';\r\n  }\r\n  g.innerHTML=html;\r\n  g.querySelectorAll('.day').forEach(function(b){b.addEventListener('click',function(){sel=+b.dataset.i;drawCal()})});\r\n  drawEditor();\r\n}\r\nfunction drawEditor(){\r\n  var d=new Date(cal.start+'T00:00:00');d.setDate(d.getDate()+sel);\r\n  var ps=cal.posts[sel]||[];\r\n  var list=ps.length?ps.map(function(p,j){return'<div class=\"post\"><span><i class=\"pl\" style=\"background:'+PL[p.p]+'\"><\/i><b>'+p.p+'<\/b> &ndash; '+esc(p.t)+'<\/span><button data-j=\"'+j+'\" aria-label=\"Remove post\">Remove<\/button><\/div>'}).join(''):'<p class=\"sub\">No posts planned for this day yet.<\/p>';\r\n  $('#editor').innerHTML='<h3>'+d.toLocaleDateString(undefined,{weekday:'long',day:'numeric',month:'long'})+'<\/h3>'+list+\r\n   '<div class=\"grid\" style=\"margin-top:14px\"><div><label for=\"pT\">Post idea<\/label><input id=\"pT\" placeholder=\"e.g. Behind-the-scenes reel\"><\/div><div><label for=\"pP\">Platform<\/label><select id=\"pP\">'+Object.keys(PL).map(function(k){return'<option>'+k+'<\/option>'}).join('')+'<\/select><\/div><\/div><div class=\"row\"><button class=\"btn\" id=\"pAdd\">Add post<\/button><\/div>';\r\n  $('#editor').querySelectorAll('.post button').forEach(function(b){b.addEventListener('click',function(){cal.posts[sel].splice(+b.dataset.j,1);store.set('cal',cal);drawCal()})});\r\n  function add(){var t=$('#pT').value.trim();if(!t){$('#pT').focus();return}(cal.posts[sel]=cal.posts[sel]||[]).push({t:t,p:$('#pP').value});store.set('cal',cal);drawCal()}\r\n  $('#pAdd').addEventListener('click',add);\r\n  $('#pT').addEventListener('keydown',function(e){if(e.key==='Enter')add()});\r\n}\r\n$('#cClear').addEventListener('click',function(){if(confirm('Clear all planned posts?')){cal.posts={};store.set('cal',cal);drawCal()}});\r\ndrawCal();\r\n\r\n\/* ---- 2. best time ---- *\/\r\nvar SL=['Morning','Midday','Afternoon','Evening'],DY=['Mon','Tue','Wed','Thu','Fri','Sat','Sun'];\r\nvar BT={\r\nInstagram:{m:[[2,3,2,1],[2,3,2,2],[2,3,3,2],[2,3,2,1],[2,2,1,1],[1,2,1,1],[1,2,1,2]],t:['Late morning to early afternoon on weekdays is a reliable window.','Reels often get a second wave in the evening.','Post when you can reply to comments in the first hour.']},\r\nFacebook:{m:[[2,3,2,1],[3,3,2,1],[3,3,2,1],[2,3,2,1],[2,2,1,0],[1,2,1,1],[1,2,1,1]],t:['Weekday mornings and midday tend to work best.','Late evenings and Fridays are usually quieter.','Groups and Pages can behave differently, so test both.']},\r\nLinkedIn:{m:[[2,2,1,0],[3,3,2,0],[3,3,2,0],[3,3,2,0],[2,1,0,0],[0,1,0,0],[0,0,0,1]],t:['Tuesday to Thursday, before and around lunch, is the sweet spot.','Weekends are quiet, which can help niche posts stand out.','Post when your audience is at their desk, not commuting home.']},\r\nYouTube:{m:[[0,1,2,2],[0,1,2,2],[0,1,2,2],[0,1,3,2],[0,1,3,2],[2,3,2,1],[2,3,2,1]],t:['Publish 2 to 3 hours before your audience usually watches.','Weekend mornings suit longer videos.','Keep a steady schedule so viewers know when to expect you.']}};\r\nvar cur='Instagram';\r\nfunction drawBT(){\r\n  $('#btPills').innerHTML=Object.keys(BT).map(function(k){return'<button aria-pressed=\"'+(k===cur)+'\" data-k=\"'+k+'\">'+k+'<\/button>'}).join('');\r\n  $('#btPills').querySelectorAll('button').forEach(function(b){b.addEventListener('click',function(){cur=b.dataset.k;drawBT()})});\r\n  var m=BT[cur].m,L=['None','OK','Good','Best'],h='<div class=\"h\"><\/div>'+SL.map(function(s){return'<div class=\"h\">'+s+'<\/div>'}).join('');\r\n  DY.forEach(function(d,i){h+='<div class=\"d\">'+d+'<\/div>'+m[i].map(function(v){return'<div class=\"s'+v+'\">'+L[v]+'<\/div>'}).join('')});\r\n  $('#btHeat').innerHTML=h;\r\n  $('#btTips').innerHTML=BT[cur].t.map(function(t){return'<li>'+t+'<\/li>'}).join('');\r\n}\r\ndrawBT();\r\n\r\n\/* ---- 3. engagement ---- *\/\r\n$('#eBase').addEventListener('change',function(){var r=this.value==='reach';$('#eBl').textContent=r?'Reach':'Followers'});\r\n$('#eGo').addEventListener('click',function(){\r\n  var n=function(id){return Math.max(0,parseFloat($(id).value)||0)},\r\n  tot=n('#eL')+n('#eC')+n('#eS')+n('#eV'),base=n('#eB'),o=$('#eOut');\r\n  if(base<=0){o.innerHTML='<p class=\"err\">Enter your '+$('#eBl').textContent.toLowerCase()+' (more than 0) to continue.<\/p>';return}\r\n  var r=tot\/base*100,lvl=r<1?'Low':r<3?'Average':r<6?'Good':'Excellent';\r\n  o.innerHTML='<div class=\"result\"><div><div class=\"big\">'+fmt(r,2)+'%<\/div><div class=\"lbl\">Engagement rate<\/div><\/div><div><div class=\"big\">'+fmt(tot)+'<\/div><div class=\"lbl\">Total interactions<\/div><\/div><div><div class=\"big\">'+lvl+'<\/div><div class=\"lbl\">General guide level<\/div><\/div><\/div><p class=\"note\">Formula: (likes + comments + shares + saves) &divide; '+$('#eBl').textContent.toLowerCase()+' &times; 100. Levels are rough guides: under 1% low, 1&ndash;3% average, 3&ndash;6% good, above 6% excellent. Rates vary by platform and account size.<\/p>';\r\n});\r\n\r\n\/* ---- 4. growth ---- *\/\r\n$('#gGo').addEventListener('click',function(){\r\n  var s=parseFloat($('#gS').value),e=parseFloat($('#gE').value),d=parseFloat($('#gD').value),o=$('#gOut');\r\n  if(!(s>0)||!(e>=0)||!(d>0)){o.innerHTML='<p class=\"err\">Enter starting followers, current followers and the number of days (all above 0).<\/p>';return}\r\n  var gain=e-s,rate=gain\/s*100,perDay=gain\/d,g=Math.pow(e\/s,1\/d),f=function(days){return Math.round(e*Math.pow(g,days))};\r\n  o.innerHTML='<div class=\"result\"><div><div class=\"big\">'+fmt(rate,2)+'%<\/div><div class=\"lbl\">Growth over '+fmt(d)+' days<\/div><\/div><div><div class=\"big\">'+(gain>=0?'+':'')+fmt(gain)+'<\/div><div class=\"lbl\">Net followers ('+fmt(perDay,1)+' a day)<\/div><\/div><div><div class=\"big\">'+fmt(f(30))+'<\/div><div class=\"lbl\">Forecast in 30 days<\/div><\/div><div><div class=\"big\">'+fmt(f(90))+'<\/div><div class=\"lbl\">Forecast in 90 days<\/div><\/div><\/div><p class=\"note\">The forecast repeats your current daily growth rate ('+fmt((g-1)*100,2)+'% a day). Real growth rarely stays constant, so treat it as a guide.<\/p>';\r\n});\r\n\r\n\/* ---- 5. audit ---- *\/\r\nvar AU={'Profile':['Profile photo and name match across platforms','Bio says who you help and what you offer','Link in bio works and goes to the right page','Contact details or call-to-action button added'],\r\n'Content':['Posts follow 3 to 5 clear themes','Mix of formats: images, video, text, stories','Posting schedule is consistent','Captions have a clear hook and call to action','Visual style looks consistent'],\r\n'Engagement':['You reply to comments and messages within 24 hours','You track engagement rate each month','You know your top 3 posts and why they worked','You interact with other accounts in your niche'],\r\n'Goals':['One main goal is set (reach, leads, sales or community)','Targets have numbers and dates','Competitors or peers reviewed for ideas','Next month&rsquo;s plan is written down']};\r\nvar au=store.get('audit',{c:{},n:''}),A=$('#aList'),all=[];\r\nObject.keys(AU).forEach(function(g){\r\n  var h='<div class=\"grp\"><h3>'+g+'<\/h3>';\r\n  AU[g].forEach(function(t,i){var id=g+i;all.push(id);h+='<label class=\"chk\"><input type=\"checkbox\" data-id=\"'+id+'\"'+(au.c[id]?' checked':'')+'><span>'+t+'<\/span><\/label>'});\r\n  A.insertAdjacentHTML('beforeend',h+'<\/div>');\r\n});\r\nfunction score(){var n=all.filter(function(id){return au.c[id]}).length;$('#aScore').textContent=n+' of '+all.length+' done';$('#aBar').style.width=(n\/all.length*100)+'%'}\r\nA.addEventListener('change',function(e){au.c[e.target.dataset.id]=e.target.checked;store.set('audit',au);score()});\r\n$('#aNotes').value=au.n;$('#aNotes').addEventListener('input',function(){au.n=this.value;store.set('audit',au)});\r\n$('#aReset').addEventListener('click',function(){au={c:{},n:''};store.set('audit',au);A.querySelectorAll('input').forEach(function(i){i.checked=false});$('#aNotes').value='';score()});\r\nscore();\r\n})();\r\n<\/script>\r\n<\/body>\r\n<\/html>\r\n\t\t\t\t<\/div>\n\t\t\n<\/div>\n\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Social Media Planning &amp; Analytics Tools | Free Social Media Planning &amp; Analytics Tools Plan your month, post at the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-534","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/ongroundmedia.com\/index.php?rest_route=\/wp\/v2\/pages\/534","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ongroundmedia.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ongroundmedia.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ongroundmedia.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ongroundmedia.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=534"}],"version-history":[{"count":4,"href":"https:\/\/ongroundmedia.com\/index.php?rest_route=\/wp\/v2\/pages\/534\/revisions"}],"predecessor-version":[{"id":538,"href":"https:\/\/ongroundmedia.com\/index.php?rest_route=\/wp\/v2\/pages\/534\/revisions\/538"}],"wp:attachment":[{"href":"https:\/\/ongroundmedia.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=534"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}