<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Nehrosh Jadoon]]></title><description><![CDATA[Nehrosh Jadoon]]></description><link>https://nehroshjadoon.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Sun, 01 Nov 2026 07:21:30 GMT</lastBuildDate><atom:link href="https://nehroshjadoon.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Building a privacy-first unfollower checker that runs 100% in the browser]]></title><description><![CDATA[Every "who unfollowed me" app asks for the same thing: your Instagram username and password. Handing your credentials to a random third-party app is how…]]></description><link>https://nehroshjadoon.hashnode.dev/building-a-privacy-first-unfollower-checker-that-runs-100-in-the-browser</link><guid isPermaLink="true">https://nehroshjadoon.hashnode.dev/building-a-privacy-first-unfollower-checker-that-runs-100-in-the-browser</guid><category><![CDATA[instagram]]></category><category><![CDATA[privacy]]></category><category><![CDATA[JavaScript]]></category><category><![CDATA[Web Development]]></category><dc:creator><![CDATA[Nehrosh Jadoon]]></dc:creator><pubDate>Thu, 22 Oct 2026 13:36:30 GMT</pubDate><content:encoded><![CDATA[<p>Every "who unfollowed me" app asks for the same thing: your Instagram username and password. Handing your credentials to a random third-party app is how accounts get stolen, shadow-banned, or quietly farmed for data. I didn't want that for myself, so I built the opposite: a checker that never asks for a password at all.</p>
<p>It lives at <a href="https://igunfollowed.com/">igunfollowed.com</a> and runs entirely in the visitor's browser.</p>
<h2>The trick: Instagram already gives you the data</h2>
<p>Instagram lets you download your own data (Settings → Accounts Centre → Your information and permissions → Download your information). Inside that export there's a <code>followers_and_following</code> folder with two files:</p>
<ul>
<li><code>followers_1.html</code> (or JSON) — everyone who follows you</li>
<li><code>following.html</code> (or JSON) — everyone you follow</li>
</ul>
<p>Anyone in list B who isn't in list A doesn't follow you back. That's the whole analysis. No scraping, no login, no API keys.</p>
<h2>Doing it locally, in the browser</h2>
<p>The manual way is painful: two long HTML files and a generic list-diff tool. So the tool automates exactly that, client-side:</p>
<ol>
<li>The user drops the official export ZIP (or the two files) onto the page.</li>
<li>JavaScript unzips and parses them <strong>in the browser</strong> — the files never leave the device.</li>
<li>A set difference produces the non-followers, mutuals, and fans lists, with snapshot comparison and CSV export.</li>
</ol>
<p>Because nothing is uploaded, the architecture is simple: a static site, zero backend, zero database, zero credentials to leak. Privacy isn't a policy page here — it's the fact that there's no server to send data to.</p>
<h2>What I'd do differently</h2>
<ul>
<li>The export format changes occasionally (HTML vs JSON, file naming), so the parser has to be forgiving.</li>
<li>Explaining "request your data from Instagram" to non-technical users is the biggest UX hurdle — most people have never opened that settings screen.</li>
</ul>
<p>If you try it, I'd genuinely like feedback on the parsing edge cases: <a href="https://igunfollowed.com/">igunfollowed.com</a></p>
]]></content:encoded></item></channel></rss>