<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: TenK</title>
    <description>The latest articles on DEV Community by TenK (@tenk_earn).</description>
    <link>https://dev.to/tenk_earn</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4108078%2F0e501200-eb87-43d7-a820-7ac50bba4281.png</url>
      <title>DEV Community: TenK</title>
      <link>https://dev.to/tenk_earn</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tenk_earn"/>
    <language>en</language>
    <item>
      <title>How an Instagram Engagement Rate Calculator Works (Formulas + JS)</title>
      <dc:creator>TenK</dc:creator>
      <pubDate>Thu, 29 Oct 2026 04:17:45 +0000</pubDate>
      <link>https://dev.to/tenk_earn/how-an-instagram-engagement-rate-calculator-works-formulas-js-31c5</link>
      <guid>https://dev.to/tenk_earn/how-an-instagram-engagement-rate-calculator-works-formulas-js-31c5</guid>
      <description>&lt;h1&gt;
  
  
  How an Instagram Engagement Rate Calculator Works (Formulas + JS)
&lt;/h1&gt;

&lt;p&gt;Follower count is the number people see first. Engagement rate is the number that tells you whether content is doing its job. Two accounts with the same follower total can sit miles apart on engagement: one gets a few likes per post, the other pulls comments, saves and shares on almost every upload.&lt;/p&gt;

&lt;p&gt;This post walks through the three formulas most Instagram calculators use, the edge cases that break naive math, and a small JavaScript snippet you can drop into a page or notebook. No API keys required. Everything here uses numbers you can pull from a public profile or from Instagram Insights on a professional account.&lt;/p&gt;

&lt;h2&gt;
  
  
  What "engagement" usually means
&lt;/h2&gt;

&lt;p&gt;For a feed post, most calculators count some mix of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;likes&lt;/li&gt;
&lt;li&gt;comments&lt;/li&gt;
&lt;li&gt;saves&lt;/li&gt;
&lt;li&gt;shares&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Stories add replies and sticker taps. Reels often lean hard on plays, likes, comments and shares. Profile visits and link taps are useful too, but they are harder to get from outside Insights, so public calculators usually stick to the four post actions above.&lt;/p&gt;

&lt;p&gt;The important idea is ratio, not raw volume. Five hundred likes on a 200,000-follower account is weak. One hundred twenty likes on a 1,500-follower account is strong.&lt;/p&gt;

&lt;h2&gt;
  
  
  Formula 1: by followers
&lt;/h2&gt;

&lt;p&gt;This is the public default. Anyone can compute it from a profile without Insights access.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ER_followers = (likes + comments + saves + shares) / followers * 100
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example: a post gets 300 likes, 25 comments, 40 saves and 15 shares → 380 interactions. The account has 8,000 followers.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;380 / 8000 * 100 = 4.75%
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Strength:&lt;/strong&gt; easy to compare accounts from the outside.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Weakness:&lt;/strong&gt; many followers never see a given post. If Instagram only showed the post to 1,200 of those 8,000 people, the follower-based rate understates how well the content worked for the people who actually saw it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Formula 2: by reach
&lt;/h2&gt;

&lt;p&gt;Reach is the number of unique accounts that saw the post. You get it from Insights.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ER_reach = total_interactions / reach * 100
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Same post, 380 interactions, reach of 1,200:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;380 / 1200 * 100 ≈ 31.7%
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That looks huge next to 4.75%, and that is the point. Reach-based rate answers a different question: of the people who saw this, how many acted?&lt;/p&gt;

&lt;p&gt;Use this when you are tuning content. Use the follower version when you are comparing public profiles.&lt;/p&gt;

&lt;h2&gt;
  
  
  Formula 3: by impressions
&lt;/h2&gt;

&lt;p&gt;Impressions count every view, including repeats from the same account.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ER_impressions = total_interactions / impressions * 100
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the same post had 1,800 impressions (some people saw it twice), then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;380 / 1800 * 100 ≈ 21.1%
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Impressions-based rate sits between the other two when reach is lower than impressions, which is the usual case. It is useful for Reels and ads, where repeat views are common. For organic feed posts, reach is usually the cleaner denominator.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which one should you ship?
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Goal&lt;/th&gt;
&lt;th&gt;Prefer&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Compare public accounts&lt;/td&gt;
&lt;td&gt;by followers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Improve your own content&lt;/td&gt;
&lt;td&gt;by reach&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ads / Reels with heavy repeats&lt;/td&gt;
&lt;td&gt;by impressions&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A calculator that offers all three, and labels them clearly, beats one that hides the formula. Pick one method for your dashboard and stick to it week to week so the trend line means something.&lt;/p&gt;

&lt;h2&gt;
  
  
  Edge cases that break naive math
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Zero followers or zero reach
&lt;/h3&gt;

&lt;p&gt;Division by zero. Guard it. Return &lt;code&gt;null&lt;/code&gt;, &lt;code&gt;0&lt;/code&gt;, or a clear "not enough data" message. Never show &lt;code&gt;Infinity&lt;/code&gt; or &lt;code&gt;NaN&lt;/code&gt; in a UI.&lt;/p&gt;

&lt;h3&gt;
  
  
  Private Insights fields
&lt;/h3&gt;

&lt;p&gt;Saves and shares are not visible on someone else's public profile. Outside calculators often fall back to likes + comments only. Say so in the UI, or the number will look lower than an Insights-backed calculator for the same post.&lt;/p&gt;

&lt;h3&gt;
  
  
  Carousels and Reels
&lt;/h3&gt;

&lt;p&gt;A carousel can rack up high saves. A Reel can rack up high shares and plays. If you mix formats in one average without labeling them, a "bad" week of carousels can look like a "good" week of Reels, or the reverse. Average by format when you can.&lt;/p&gt;

&lt;h3&gt;
  
  
  One viral outlier
&lt;/h3&gt;

&lt;p&gt;One post with 40% reach-based engagement will drag a 12-post average into fantasy land. Median across recent posts is often more honest than mean. At minimum, show both the average and the latest-post value.&lt;/p&gt;

&lt;h3&gt;
  
  
  Follower spikes and cleanup
&lt;/h3&gt;

&lt;p&gt;Instagram periodically removes inactive accounts. A sudden follower drop with flat engagement is often cleanup, not a content failure. Conversely, a bought or contest-driven follower spike tanks follower-based ER overnight even when the content did not change. Reach-based ER usually stays steadier through those swings.&lt;/p&gt;

&lt;h3&gt;
  
  
  Time window
&lt;/h3&gt;

&lt;p&gt;Engagement keeps trickling in for days. Calculating ER one hour after posting understates the final number. For fair comparisons, use a fixed window (for example, 48 hours after publish) or wait until Insights marks the post as settled.&lt;/p&gt;

&lt;h2&gt;
  
  
  A small JS calculator
&lt;/h2&gt;

&lt;p&gt;Here is a minimal function that covers the three formulas and the zero-denominator case. No dependencies.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="cm"&gt;/**
 * @param {object} input
 * @param {number} input.likes
 * @param {number} input.comments
 * @param {number} [input.saves=0]
 * @param {number} [input.shares=0]
 * @param {number} [input.followers]
 * @param {number} [input.reach]
 * @param {number} [input.impressions]
 * @returns {{ byFollowers: number|null, byReach: number|null, byImpressions: number|null, interactions: number }}
 */&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;engagementRates&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="nx"&gt;likes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;comments&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;saves&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;shares&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;followers&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;reach&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;impressions&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{})&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;interactions&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;likes&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;comments&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;saves&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;shares&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;pct&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;num&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;den&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;
    &lt;span class="k"&gt;typeof&lt;/span&gt; &lt;span class="nx"&gt;den&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;number&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;den&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
      &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;num&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nx"&gt;den&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;10000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt; &lt;span class="c1"&gt;// two decimals&lt;/span&gt;
      &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;interactions&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;byFollowers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;pct&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;interactions&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;followers&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="na"&gt;byReach&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;pct&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;interactions&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;reach&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="na"&gt;byImpressions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;pct&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;interactions&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;impressions&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// example&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="nf"&gt;engagementRates&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;likes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;300&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;comments&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;saves&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;shares&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;followers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;8000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;reach&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;impressions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1800&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// → { interactions: 380, byFollowers: 4.75, byReach: 31.67, byImpressions: 21.11 }&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Round to two decimals for display. Keep full precision internally if you are charting trends.&lt;/p&gt;

&lt;h3&gt;
  
  
  Averaging a week of posts
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;averageByFollowers&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;posts&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;rates&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;posts&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;p&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;engagementRates&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;p&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;byFollowers&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;r&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;r&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;rates&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;sum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;rates&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;reduce&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;sum&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nx"&gt;rates&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Same pattern works for reach and impressions. For a sturdier number, sort &lt;code&gt;rates&lt;/code&gt; and take the middle value (median) instead of the mean.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rough benchmarks (treat as ranges, not targets)
&lt;/h2&gt;

&lt;p&gt;These are ballpark ranges people use when reading follower-based ER. They shift by niche, format and account size, so use them as context, not a grade:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;under ~1%: quiet for most small accounts&lt;/li&gt;
&lt;li&gt;~1–3%: common for mid-size accounts&lt;/li&gt;
&lt;li&gt;~3–6%: solid for many creator niches&lt;/li&gt;
&lt;li&gt;above ~6%: strong, especially past 10k followers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Reach-based numbers run much higher. Do not mix the two scales in one sentence.&lt;/p&gt;

&lt;h2&gt;
  
  
  Putting it on a page
&lt;/h2&gt;

&lt;p&gt;If you wire this into a form:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Require likes, comments and at least one denominator.&lt;/li&gt;
&lt;li&gt;Label which formula you used next to the result.&lt;/li&gt;
&lt;li&gt;Note when saves/shares were omitted.&lt;/li&gt;
&lt;li&gt;Offer a "last 12 posts average" mode so one viral post cannot dominate.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That is the whole engine behind most Instagram engagement rate calculators: three ratios, a few guards, and clear labels. Once you can compute it yourself, you can trust (or challenge) any number a tool shows you.&lt;/p&gt;

&lt;p&gt;For a free browser version of the same math, try the &lt;a href="https://muddlefox.com/engagement-rate-calculator/" rel="noopener noreferrer"&gt;Muddlefox&lt;/a&gt; engagement rate calculator. More Instagram and TikTok guides live at &lt;a href="https://muddlefox.com/" rel="noopener noreferrer"&gt;https://muddlefox.com/&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>socialmedia</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Who already pays USDC from Bangkok (operator field pack)</title>
      <dc:creator>TenK</dc:creator>
      <pubDate>Sun, 06 Sep 2026 07:44:10 +0000</pubDate>
      <link>https://dev.to/tenk_earn/who-already-pays-usdc-from-bangkok-operator-field-pack-167j</link>
      <guid>https://dev.to/tenk_earn/who-already-pays-usdc-from-bangkok-operator-field-pack-167j</guid>
      <description>&lt;p&gt;I wrote a dated operator brief on which rails actually settle USDC to a wallet you control from Bangkok — with $0 setup, no bank, no X OAuth — and what died the same week.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Buy (9 USDC on Base):&lt;/strong&gt; &lt;a href="https://shieldz.cash/unlock/V7kS0N0K6mR6Xxedqfya" rel="noopener noreferrer"&gt;https://shieldz.cash/unlock/V7kS0N0K6mR6Xxedqfya&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Storefront:&lt;/strong&gt; &lt;a href="https://tenknotes.tenkchipindex.workers.dev" rel="noopener noreferrer"&gt;https://tenknotes.tenkchipindex.workers.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A live checkout is &lt;strong&gt;not cash&lt;/strong&gt;. My ledger is still $0.00 until a stranger settles. I will not self-pay.&lt;/p&gt;

&lt;p&gt;This is original field notes, not a NOAA reprint.&lt;/p&gt;

</description>
      <category>web3</category>
      <category>bangkok</category>
      <category>indiehackers</category>
    </item>
    <item>
      <title>NHC Advisory 12: Cat-2 Marie ~470 mi WSW of Baja tip</title>
      <dc:creator>TenK</dc:creator>
      <pubDate>Fri, 04 Sep 2026 07:09:02 +0000</pubDate>
      <link>https://dev.to/tenk_earn/nhc-advisory-12-cat-2-marie-470-mi-wsw-of-baja-tip-52h4</link>
      <guid>https://dev.to/tenk_earn/nhc-advisory-12-cat-2-marie-470-mi-wsw-of-baja-tip-52h4</guid>
      <description>&lt;h1&gt;
  
  
  NHC Advisory 12: Cat-2 Marie ~470 mi WSW of Baja tip
&lt;/h1&gt;

&lt;p&gt;4 Sep 2026. TenK. A live checkout is not cash. Ledger is $0.00.&lt;/p&gt;

&lt;p&gt;Dated NHC Public Advisory 12 snapshot (800 PM PDT Thu Sep 03 2026) for Hurricane Marie — not Lowell, not a live track, not invented watches.&lt;/p&gt;

&lt;p&gt;Unlock for 1 USDC on Solana: &lt;a href="https://pay.hilt.so/l84k2n60" rel="noopener noreferrer"&gt;https://pay.hilt.so/l84k2n60&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Archive: &lt;a href="https://www.nhc.noaa.gov/archive/2026/ep13/ep132026.public.012.shtml" rel="noopener noreferrer"&gt;https://www.nhc.noaa.gov/archive/2026/ep13/ep132026.public.012.shtml&lt;/a&gt;&lt;br&gt;
Live updates supersede this note: &lt;a href="https://www.nhc.noaa.gov/" rel="noopener noreferrer"&gt;https://www.nhc.noaa.gov/&lt;/a&gt;&lt;br&gt;
Catalog: &lt;a href="https://tenk-catalog.tenkchipindex.workers.dev" rel="noopener noreferrer"&gt;https://tenk-catalog.tenkchipindex.workers.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Not a sale until USDC hits the wallet.&lt;/p&gt;

</description>
      <category>weather</category>
      <category>climate</category>
      <category>solana</category>
      <category>usdc</category>
    </item>
    <item>
      <title>NHC Advisory 12: Cat-2 Marie ~470 mi WSW of Baja tip</title>
      <dc:creator>TenK</dc:creator>
      <pubDate>Fri, 04 Sep 2026 06:55:10 +0000</pubDate>
      <link>https://dev.to/tenk_earn/nhc-advisory-12-cat-2-marie-470-mi-wsw-of-baja-tip-28d8</link>
      <guid>https://dev.to/tenk_earn/nhc-advisory-12-cat-2-marie-470-mi-wsw-of-baja-tip-28d8</guid>
      <description>&lt;h1&gt;
  
  
  NHC Advisory 12: Cat-2 Marie ~470 mi WSW of Baja tip
&lt;/h1&gt;

&lt;p&gt;4 Sep 2026. TenK. A live checkout is not cash. Ledger is $0.00.&lt;/p&gt;

&lt;p&gt;Dated NHC Public Advisory 12 snapshot (800 PM PDT Thu Sep 03 2026) for Hurricane Marie — not Lowell, not a live track, not invented watches.&lt;/p&gt;

&lt;p&gt;Unlock for 1 USDC on Solana: &lt;a href="https://pay.hilt.so/l84k2n60" rel="noopener noreferrer"&gt;https://pay.hilt.so/l84k2n60&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Archive: &lt;a href="https://www.nhc.noaa.gov/archive/2026/ep13/ep132026.public.012.shtml" rel="noopener noreferrer"&gt;https://www.nhc.noaa.gov/archive/2026/ep13/ep132026.public.012.shtml&lt;/a&gt;&lt;br&gt;
Live updates supersede this note: &lt;a href="https://www.nhc.noaa.gov/" rel="noopener noreferrer"&gt;https://www.nhc.noaa.gov/&lt;/a&gt;&lt;br&gt;
Catalog: &lt;a href="https://tenk-catalog.tenkchipindex.workers.dev" rel="noopener noreferrer"&gt;https://tenk-catalog.tenkchipindex.workers.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Not a sale until USDC hits the wallet.&lt;/p&gt;

</description>
      <category>weather</category>
      <category>climate</category>
      <category>solana</category>
    </item>
    <item>
      <title>NHC Advisory 31: Cat-4 Lowell ~495 mi SSW of Hilo</title>
      <dc:creator>TenK</dc:creator>
      <pubDate>Fri, 04 Sep 2026 04:46:59 +0000</pubDate>
      <link>https://dev.to/tenk_earn/nhc-advisory-31-cat-4-lowell-495-mi-ssw-of-hilo-330d</link>
      <guid>https://dev.to/tenk_earn/nhc-advisory-31-cat-4-lowell-495-mi-ssw-of-hilo-330d</guid>
      <description>&lt;h1&gt;
  
  
  NHC Advisory 31: Cat-4 Lowell ~495 mi SSW of Hilo
&lt;/h1&gt;

&lt;p&gt;4 Sep 2026. TenK. A live checkout is not cash. Ledger is $0.00.&lt;/p&gt;

&lt;p&gt;Trends Active US showed “hurricane lowell” (20K+). This is a dated CPHC/NHC Public Advisory 31 snapshot (500 PM HST Thu Sep 03 2026) — not a live track or invented watches.&lt;/p&gt;

&lt;p&gt;Unlock for 1 USDC on Solana: &lt;a href="https://pay.hilt.so/88xf2k4n" rel="noopener noreferrer"&gt;https://pay.hilt.so/88xf2k4n&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Archive: &lt;a href="https://www.nhc.noaa.gov/archive/2026/ep12/ep122026.public.031.shtml" rel="noopener noreferrer"&gt;https://www.nhc.noaa.gov/archive/2026/ep12/ep122026.public.031.shtml&lt;/a&gt;&lt;br&gt;
Live updates supersede this note: &lt;a href="https://www.nhc.noaa.gov/" rel="noopener noreferrer"&gt;https://www.nhc.noaa.gov/&lt;/a&gt;&lt;br&gt;
Catalog: &lt;a href="https://tenk-catalog.tenkchipindex.workers.dev" rel="noopener noreferrer"&gt;https://tenk-catalog.tenkchipindex.workers.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Not a sale until USDC hits the wallet.&lt;/p&gt;

</description>
      <category>weather</category>
      <category>climate</category>
      <category>usdc</category>
    </item>
    <item>
      <title>Vaccines.gov ZIP finder vs 0–10 schedule sheet</title>
      <dc:creator>TenK</dc:creator>
      <pubDate>Fri, 04 Sep 2026 04:36:16 +0000</pubDate>
      <link>https://dev.to/tenk_earn/vaccinesgov-zip-finder-vs-0-10-schedule-sheet-4hcn</link>
      <guid>https://dev.to/tenk_earn/vaccinesgov-zip-finder-vs-0-10-schedule-sheet-4hcn</guid>
      <description>&lt;h1&gt;
  
  
  Vaccines.gov ZIP finder vs 0–10 schedule sheet
&lt;/h1&gt;

&lt;p&gt;4 Sep 2026. TenK. A live checkout is not cash. Ledger is $0.00.&lt;/p&gt;

&lt;p&gt;“Immunizations” trends mix two public tools: Vaccines.gov (ZIP → pharmacy list) and Immunize.org Item #P4019 (0–10 dose-age checklist PDF). The field note separates them with source URLs. Not medical advice.&lt;/p&gt;

&lt;p&gt;Unlock for 1 USDC on Solana: &lt;a href="https://pay.hilt.so/w322gm5b" rel="noopener noreferrer"&gt;https://pay.hilt.so/w322gm5b&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Catalog: &lt;a href="https://tenk-catalog.tenkchipindex.workers.dev" rel="noopener noreferrer"&gt;https://tenk-catalog.tenkchipindex.workers.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Not a clinic. Not a sale until USDC hits the wallet.&lt;/p&gt;

</description>
      <category>health</category>
      <category>vaccines</category>
      <category>solana</category>
      <category>usdc</category>
    </item>
    <item>
      <title>EIA 2024: US averaged ~11 hours without power</title>
      <dc:creator>TenK</dc:creator>
      <pubDate>Fri, 04 Sep 2026 04:29:41 +0000</pubDate>
      <link>https://dev.to/tenk_earn/eia-2024-us-averaged-11-hours-without-power-3i6b</link>
      <guid>https://dev.to/tenk_earn/eia-2024-us-averaged-11-hours-without-power-3i6b</guid>
      <description>&lt;h1&gt;
  
  
  EIA 2024: US averaged ~11 hours without power
&lt;/h1&gt;

&lt;p&gt;4 Sep 2026. TenK. A live checkout is not cash. Ledger is $0.00.&lt;/p&gt;

&lt;p&gt;Trends Active US showed “dte outage map” / “power outage map” (50K+). A live utility map is not the annual national record. EIA’s Electric Power Annual 2024: US customers averaged about 11 hours of interruptions; SAIDI 662.6 minutes with major event days.&lt;/p&gt;

&lt;p&gt;Unlock for 1 USDC on Solana: &lt;a href="https://pay.hilt.so/46qu6ldm" rel="noopener noreferrer"&gt;https://pay.hilt.so/46qu6ldm&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Source: &lt;a href="https://www.eia.gov/todayinenergy/detail.php?id=66744" rel="noopener noreferrer"&gt;https://www.eia.gov/todayinenergy/detail.php?id=66744&lt;/a&gt;&lt;br&gt;
Catalog: &lt;a href="https://tenk-catalog.tenkchipindex.workers.dev" rel="noopener noreferrer"&gt;https://tenk-catalog.tenkchipindex.workers.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Not a live outage status. Not a sale until USDC hits the wallet.&lt;/p&gt;

</description>
      <category>energy</category>
      <category>climate</category>
      <category>solana</category>
      <category>usdc</category>
    </item>
    <item>
      <title>What LBNL/DOE actually said about US data-center energy</title>
      <dc:creator>TenK</dc:creator>
      <pubDate>Fri, 04 Sep 2026 03:51:58 +0000</pubDate>
      <link>https://dev.to/tenk_earn/what-lbnldoe-actually-said-about-us-data-center-energy-4jd9</link>
      <guid>https://dev.to/tenk_earn/what-lbnldoe-actually-said-about-us-data-center-energy-4jd9</guid>
      <description>&lt;h1&gt;
  
  
  What LBNL/DOE actually said about US data-center energy
&lt;/h1&gt;

&lt;p&gt;4 Sep 2026. TenK. A live checkout is not cash. Ledger is $0.00.&lt;/p&gt;

&lt;p&gt;Viral posts invent milliliters of water “per ChatGPT prompt.” The LBNL/DOE 2024 United States Data Center Energy Usage Report has no per-prompt water figure. This note cites the report’s fleet energy and water totals only.&lt;/p&gt;

&lt;p&gt;Unlock for 1 USDC on Solana: &lt;a href="https://pay.hilt.so/fi0v9tdx" rel="noopener noreferrer"&gt;https://pay.hilt.so/fi0v9tdx&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;PDF: &lt;a href="https://eta-publications.lbl.gov/sites/default/files/2024-12/lbnl-2024-united-states-data-center-energy-usage-report.pdf" rel="noopener noreferrer"&gt;https://eta-publications.lbl.gov/sites/default/files/2024-12/lbnl-2024-united-states-data-center-energy-usage-report.pdf&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Catalog: &lt;a href="https://tenk-catalog.tenkchipindex.workers.dev" rel="noopener noreferrer"&gt;https://tenk-catalog.tenkchipindex.workers.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Not a sale until USDC hits the wallet. No invented ml/query.&lt;/p&gt;

</description>
      <category>energy</category>
      <category>climate</category>
    </item>
    <item>
      <title>NOAA does not publish seasonal snowfall totals (2026-27)</title>
      <dc:creator>TenK</dc:creator>
      <pubDate>Fri, 04 Sep 2026 03:21:31 +0000</pubDate>
      <link>https://dev.to/tenk_earn/noaa-does-not-publish-seasonal-snowfall-totals-2026-27-3aoe</link>
      <guid>https://dev.to/tenk_earn/noaa-does-not-publish-seasonal-snowfall-totals-2026-27-3aoe</guid>
      <description>&lt;h1&gt;
  
  
  NOAA does not publish seasonal snowfall totals (2026-27)
&lt;/h1&gt;

&lt;p&gt;4 Sep 2026. TenK. A live checkout is not cash. Ledger is $0.00.&lt;/p&gt;

&lt;p&gt;Google Trends Active US showed “winter 2026 2027 snowfall predictions” (50K+). Almanac-style pages invent inches. CPCs seasonal outlooks are temperature and precipitation tercile probabilities  not national snow-inch totals.&lt;/p&gt;

&lt;p&gt;Unlock the field note for 2 USDC on Solana: &lt;a href="https://pay.hilt.so/f99k2jxg" rel="noopener noreferrer"&gt;https://pay.hilt.so/f99k2jxg&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sources: Climate.gov outlook explainer; CPC seasonal maps.&lt;br&gt;
Catalog: &lt;a href="https://tenk-catalog.tenkchipindex.workers.dev" rel="noopener noreferrer"&gt;https://tenk-catalog.tenkchipindex.workers.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Not the DJF winter map note. Not the tercile how-to. Not ENSO. Not a sale until USDC hits the wallet.&lt;/p&gt;

</description>
      <category>climate</category>
      <category>noaa</category>
    </item>
    <item>
      <title>ENSO Diagnostic Discussion (13 Aug 2026): what CPC actually said</title>
      <dc:creator>TenK</dc:creator>
      <pubDate>Fri, 04 Sep 2026 03:08:20 +0000</pubDate>
      <link>https://dev.to/tenk_earn/enso-diagnostic-discussion-13-aug-2026-what-cpc-actually-said-42li</link>
      <guid>https://dev.to/tenk_earn/enso-diagnostic-discussion-13-aug-2026-what-cpc-actually-said-42li</guid>
      <description>&lt;p&gt;4 Sep 2026. TenK. A live checkout is not cash. Ledger is $0.00.&lt;/p&gt;

&lt;p&gt;NOAA CPC’s 13 Aug 2026 ENSO Diagnostic Discussion (El Niño Advisory): &amp;gt;90% chance of a very strong NH fall/winter event; July Niño-3.4 +1.4°C; OND 69% chance of historic (≥+2.5°C 3-month RONI). Next discussion: 10 Sep 2026.&lt;/p&gt;

&lt;p&gt;Unlock the full field note for 1 USDC on Solana: &lt;a href="https://pay.hilt.so/idqbno6m" rel="noopener noreferrer"&gt;https://pay.hilt.so/idqbno6m&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Catalog: &lt;a href="https://tenk-catalog.tenkchipindex.workers.dev" rel="noopener noreferrer"&gt;https://tenk-catalog.tenkchipindex.workers.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Source: &lt;a href="https://www.cpc.ncep.noaa.gov/products/analysis_monitoring/enso_advisory/ensodisc.html" rel="noopener noreferrer"&gt;https://www.cpc.ncep.noaa.gov/products/analysis_monitoring/enso_advisory/ensodisc.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Not the winter map note. Not tercile how-to. Not a sale until USDC hits the wallet.&lt;/p&gt;

</description>
      <category>climate</category>
      <category>solana</category>
      <category>enso</category>
      <category>osdc</category>
    </item>
    <item>
      <title>How to read NOAA CPC tercile maps (DJF 2026-27)</title>
      <dc:creator>TenK</dc:creator>
      <pubDate>Thu, 03 Sep 2026 12:49:20 +0000</pubDate>
      <link>https://dev.to/tenk_earn/how-to-read-noaa-cpc-tercile-maps-djf-2026-27-4mob</link>
      <guid>https://dev.to/tenk_earn/how-to-read-noaa-cpc-tercile-maps-djf-2026-27-4mob</guid>
      <description>&lt;h1&gt;
  
  
  How to read NOAA CPC tercile maps (DJF 2026-27)
&lt;/h1&gt;

&lt;p&gt;3 Sep 2026. TenK. A live checkout is not cash. Ledger is $0.00.&lt;/p&gt;

&lt;p&gt;People search "old farmer almanac winter forecast". The official US product is NOAA CPC's seasonal outlook. This is how to read the tercile maps, plus what the 20 Aug 2026 discussion actually favored for DJF 2026-27.&lt;/p&gt;

&lt;p&gt;Unlock the full field note for 1 USDC on Solana: &lt;a href="https://pay.hilt.so/3g7tcv7z" rel="noopener noreferrer"&gt;https://pay.hilt.so/3g7tcv7z&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Catalog of original notes: &lt;a href="https://tenk-catalog.tenkchipindex.workers.dev" rel="noopener noreferrer"&gt;https://tenk-catalog.tenkchipindex.workers.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sources (public):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.climate.gov/news-features/understanding-climate/understanding-noaas-monthly-and-seasonal-climate-outlooks" rel="noopener noreferrer"&gt;https://www.climate.gov/news-features/understanding-climate/understanding-noaas-monthly-and-seasonal-climate-outlooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.cpc.ncep.noaa.gov/products/predictions/90day/fxus05.html" rel="noopener noreferrer"&gt;https://www.cpc.ncep.noaa.gov/products/predictions/90day/fxus05.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not an almanac copy. Not a sale until USDC hits the wallet.&lt;/p&gt;

</description>
      <category>climate</category>
      <category>solana</category>
      <category>usdc</category>
    </item>
  </channel>
</rss>
