Firefox extension for reviewing an Instagram account's followers and the accounts they follow, saving snapshots locally, comparing changes over time, and running guarded unfollow actions from the browser session you already have open. Privacy comes first: data stays on your device, and the extension does not connect to any external server.
- Why this exists
- What it does
- Screenshots
- How the workflow fits together
- Privacy and data handling
- Install for local use
- Use it carefully
- Project layout
- Development
- License
Instagram gives you a followers list and a following list, but no real way to track changes over time or manage anything in bulk.
Most third-party tools only solve part of that. Some scrape data. Some bulk-unfollow. Few do both well, and even fewer give you useful snapshot diffs. A lot of them also are not free, or they give you a weak free tier that cuts out the features you actually want.
The bigger problem is trust. Most of them want you to make an account with their service and hand over your email. Some go further and ask for your Instagram credentials through their own UI, which means handing your login to someone else's server.
FollowTrace keeps the whole workflow in your browser. It uses the session you already have open, stores snapshots locally, and gives you follower tracking, diffs, and guarded unfollow actions without sending your data anywhere.
- Scans
followersandfollowingthrough your active Instagram session in Firefox. - Finds non-followers after a live scan.
- Saves snapshots locally so you can export, import, and compare states later.
- Includes a diff workspace with presets like
New Follows,New Followers, andNot Following Back Now. - Lets you review and trim a result set before running unfollow actions.
- Adds guardrails like confirmation delays, stale-target rechecks, progress feedback, and stop-on-failure limits.
- Keeps data local to your browser profile instead of sending it to a remote backend.
| Home | Account search |
|---|---|
![]() |
![]() |
| Diff review | Settings |
|---|---|
![]() |
![]() |
At a high level:
- Open Instagram in Firefox and keep your normal logged-in session active.
- Use the sidepanel to select an account and run a scan.
- Save that result locally or compare it against an older snapshot.
- Review the diff output before you even think about unfollowing anything.
The extension does not ask you to log in through a separate popup. It works against the session already open in Firefox.
flowchart LR
A["Firefox sidepanel UI"] --> B["Content script on instagram.com"]
B --> C["Authenticated Instagram requests"]
C --> D["Normalized followers and following data"]
D --> E["Local snapshot storage"]
E --> F["Diff workspace and presets"]
F --> G["Optional unfollow runner"]
- The extension is privacy-first and local-only.
- Follower data, following data, and saved snapshots stay on your device.
- The extension does not upload your snapshots, account lists, or diff results to an external server.
- It works through the Instagram session already open in Firefox instead of asking you to hand credentials to a separate service.
If you just want to load the extension locally for a quick check, you can do it directly in Firefox without installing Node.js.
- Open
about:debugging#/runtime/this-firefoxin Firefox. - Click
Load Temporary Add-on.... - Select manifest.json.
Firefox will load the extension from this repo as a temporary add-on for the current browser session.
- Firefox
- An active Instagram login in Firefox
- Node.js
npm installnpm run start:firefoxThis starts the extension with web-ext and points Firefox at the current source tree.
The runner uses a dedicated development profile at tmp/firefox-profile, pre-creates that path before launching web-ext, and keeps profile changes between sessions.
Log into Instagram in that Firefox window once, then reuse the same command for later runs.
npm run packageThe packaged build is written to web-ext-artifacts/.
This project can perform destructive actions. Assume that anything involving unfollow is worth double-checking.
- Unfollow actions are API-based.
- The extension uses a confirmation countdown before execution.
- Diff-based unfollow checks that selected users are still part of
current.followingbefore the run starts. - Stale entries are skipped instead of forced through.
- The runner stops after too many consecutive failures.
manifest.json
src/
background/ extension background script
content/ Instagram session bridge and page-side session hooks
lib/
diff/ snapshot comparison and selection logic
instagram/ request and normalization helpers
shared/ shared errors and message contracts
storage/ local persistence and import/export
unfollow/ guarded unfollow runner
ui/
popup.* popup markup, styles, and logic
sidepanel/ main workflow UI
scripts/
assets/
icons/ extension runtime icons
readme/ public README visuals
Useful commands:
npm run lint:manifest
npm run packageThe local development entry point is the Firefox runner:
npm run start:firefoxThe first run pre-creates tmp/firefox-profile before web-ext starts.
Because the script uses --keep-profile-changes, login state and other profile changes persist in that dedicated development profile.
This project is licensed under the GNU General Public License v3.0. See LICENSE for the full text.




