The Instagram unfollowers tracker ZIP file method, explained
Inside the Instagram ZIP file is everything an unfollowers tracker needs.
Almost every modern Instagram unfollowers tracker boils down to one trick: read the ZIP file Meta gives you, do a tiny bit of set math, render the results. The trick is well-known but rarely explained in detail, so this article walks through what’s actually inside the Instagram data export ZIP, how the Unfollowers Tracker reads it, and why this method is so much safer than the "log in with Instagram" alternative.
If you’d rather skip the engineering and just use the tool, jump to the free Instagram unfollowers tracker. If you want to know what your data looks like and what gets touched, read on.
TL;DR, the ZIP file method in one paragraph
When you request your Instagram data in JSON format, Meta packages your followers, following, pending follow requests, and recently unfollowed profiles into JSON files inside a ZIP. The Unfollowers Tracker uses JSZip to read those JSON files in your browser, builds two `Map<username, IgUser>` indexes, and computes set differences (unfollowers), set intersections (mutuals), one-way membership (fans), and a direct passthrough (ghost requests). All in under a second. All in your browser. No upload.
How to actually get the ZIP
Open Instagram → Settings → Account Center → Your information and permissions → Download your information. Pick "Some of your information" → tick Followers and Following → format JSON → submit. Meta emails the ZIP to you, usually within minutes. The full screenshot-by-screenshot tutorial is at how to download your Instagram ZIP file (19 real screenshots), or the short recap at /tutorial.
Critical detail: pick JSON, not HTML. The HTML format is human-readable but not machine-parseable; the Unfollowers Tracker and basically every other ZIP-based tool only handle JSON.
What’s actually inside the ZIP
The ZIP contains many files, but only a handful matter for unfollower analysis. They live under `connections/followers_and_following/` and look like this:
- `followers_1.json` (sometimes split across `followers_1.json`, `followers_2.json`, etc.)
- `following.json`
- `pending_follow_requests.json`
- `recently_unfollowed_profiles.json`
- `recent_follow_requests.json`
- `removed_suggestions.json`
- `restricted_profiles.json`
- `blocked_profiles.json`
For the unfollowers/ghosts/fans/mutuals views, the tool only needs the first four. The rest are ignored.
What each JSON file contains
The structure is consistent across files. Each entry looks roughly like this (simplified):
`{ "string_list_data": [ { "value": "username", "href": "https://www.instagram.com/username/", "timestamp": 1700000000 } ], "title": "...", "media_list_data": [] }`
The `value` is the username, the `href` is the profile URL, and the `timestamp` (where present) is when the relationship was created on Meta’s side. The Unfollowers Tracker uses the username as the primary key and the timestamp for sorting.
The math (it’s simpler than you think)
Once the JSON is loaded, the tracker builds two `Map<username, IgUser>` indexes, one for `followers`, one for `following`. From those, the four views fall out:
- Unfollowers = `following − followers` (people you follow who don’t follow back). Powers the unfollowers page.
- Fans = `followers − following` (people who follow you that you don’t follow back). Powers the fans page.
- Mutuals = `followers ∩ following` (people who follow you while you also follow them). Powers the mutuals page.
- Ghost requests = `pending_follow_requests` directly (no math). Powers the ghosts page.
On a follower set with 50,000 entries, the entire computation completes in well under a second on a mid-range phone, because Maps give you O(1) membership checks.
Why JSON, not HTML
Meta gives you a choice between JSON and HTML when you request the export. Always pick JSON for two reasons:
- Smaller and faster. JSON exports for follower data are tiny, usually a few hundred kilobytes even for big accounts.
- Machine-parseable. Every ZIP-based tracker (including the Unfollowers Tracker) parses JSON. None can read the HTML version reliably because the HTML structure changes between Meta UI revisions.
If you accidentally requested HTML, just request a fresh export with format set to JSON. There’s no limit on how many exports you can request.
Why this method is the safest
The ZIP file method is structurally safer than every alternative for three reasons:
- You already own the data. Meta hands it to you under the same data-portability laws (GDPR, CCPA, LGPD) that protect your right to access your own information. No third party is in the loop.
- The data is minimal. The ZIP contains usernames and timestamps, nothing else for follower analysis. There are no DMs, no media, no email addresses. The privacy surface is tiny.
- The processing happens locally. With a browser-based tool like ours, the file is read in JavaScript memory and never leaves the tab. We have no upload endpoint to send it to. The full statement is in our privacy policy.
Compare this to a "log in with Instagram" app, which has to (a) hold your credentials, (b) call Instagram’s API, and (c) store the result on a server. Three different attack surfaces, three different ways to fail.
What "your data never leaves your device" really means here
It means exactly what it sounds like. The ZIP file you upload to the Unfollowers Tracker is read into JavaScript memory inside your browser tab. The parsed JSON lives in JavaScript variables. The rendered table reads from those variables. There is no `fetch("/upload")` call, because there is no upload endpoint at all on the analyzer page.
You can prove it yourself: open browser DevTools → Network tab → drop in a ZIP → run the analysis → filter by Fetch/XHR → see zero outbound calls containing your data. Detailed instructions in is the Unfollowers Tracker safe?.
Edge cases worth knowing about
- Large accounts. Instagram splits the followers list across `followers_1.json`, `followers_2.json`, etc. once you cross a threshold. The tracker concatenates them automatically.
- Deactivated accounts. Sometimes Meta keeps usernames in your followers list even if the account was deleted. They show up as "deactivated" in some tools; we just include them in the count for honesty.
- Username changes. If a follower changed their handle since the export was generated, the new handle won’t appear. Re-request the ZIP for fresh data.
- Recently unfollowed profiles. This list is a separate JSON; we don’t surface it in the main UI by default but it’s available in the raw export if you want to dig.
How to verify the math yourself
Curious to do the diff manually? You can. Open the ZIP, find `following.json` and `followers_1.json`, extract the `string_list_data[0].value` from each entry, and compute the set difference in any tool you like, Python, Excel, command-line `comm`, and compare against what the Unfollowers Tracker shows. The numbers should match exactly.
The bottom line
The Instagram unfollowers tracker ZIP file method is simple, fast, accurate, and safe. It uses your own data, does ten lines of math, and never asks for your password. Anything more complicated than that, Chrome extensions, login apps, APKs, is solving the wrong problem.
Drop your ZIP into the free Unfollowers Tracker and you’ll have your unfollowers list before this article finishes loading on a slow connection. Or watch the animated demo first to see exactly what happens.
FAQ, Instagram ZIP file method
What exactly is inside the Instagram ZIP file?
A folder structure with JSON files. The ones we care about live in connections/followers_and_following/, followers_*.json, following.json, and pending_follow_requests.json. Each contains usernames and timestamps in a clean structured format.
Why JSON instead of HTML?
JSON is structured and machine-readable. The Unfollowers Tracker (and any analysis tool) needs to compute set differences across followers and following, that requires structured data, not human-formatted HTML pages.
How does the unfollowers math actually work?
It is set theory. Unfollowers = following - followers (people you follow that don't follow you back). Fans = followers - following. Mutuals = followers ∩ following. Ghost requests come straight from pending_follow_requests.json.
Is the ZIP file method accurate for huge accounts?
Yes. The same JSON structure works for accounts with 10 followers and accounts with 10 million. Parsing scales linearly and is still under 1 second for accounts with 50,000+ following.
Can I run the same math myself in Excel or Python?
Yes, the data is open. Extract string_list_data[0].value from each entry and compute the set differences in any tool you like. The Unfollowers Tracker just gives you a clean UI for the same math.
How often does Instagram change the ZIP format?
Rarely. The format has been stable for years; major changes get a blog post here when they happen so the parser can be updated.
Table of contents11
Related reads
All postsWhy Am I Getting Unfollows on Instagram? 7 Real Reasons and How to Fix Each
Lost followers overnight? Here are the seven real reasons people unfollow on Instagram in 2026 plus a simple fix for each.
How Instagram Sorts Your Following and Followers List (2026 Order Explained)
The order of your Instagram Followers and Following lists is not random, it is a 2026 algorithm based on interactions, recency, and profile visits.
Benefits of an Instagram Business Account (12 Reasons + 3 Trade-offs to Know in 2026)
Should you switch to a Business account? A no-fluff 2026 breakdown of the 12 real benefits, the 3 trade-offs, and how to decide in 5 minutes.