Privacy-first Instagram follower analysis. Upload your own data export, see who doesn't follow back. No password, no server.
See the codeSee who doesn't follow you back on Instagram. Open source, so you can check that for yourself.
Upload the data export Instagram already gives you. Your browser reads it locally and shows the full picture in seconds. No password, no server, no login.
Most Instagram follower trackers ask for your password. That breaks Instagram's terms of service, puts your account at risk, and hands your credentials to a stranger.
WhoUnfollowed takes a different path. Instagram's Download Your Information feature (mandated by GDPR) gives you a ZIP of your own follower and following data. WhoUnfollowed reads that file entirely inside your browser. There is no upload, no server round trip, and no account required on the free plan.
You export data you already own. We just read it. And unlike every closed-source tracker in this space, you don't have to take that claim on faith: the web app is AGPL-3.0 and the parser that touches your data is MPL-2.0, both public in this repository. Read the code instead of trusting a privacy policy.
| Typical parse time | ~2 seconds |
| Data sent to a server (free plan) | 0 bytes |
| Instagram API calls | 0 |
| Passwords required | 0 |
Step-by-step export guide: How to export your Instagram data.
A TypeScript monorepo managed with Turborepo and pnpm workspaces.
| Layer | Technology |
|---|---|
| Framework | Next.js 15 (App Router, Turbopack) |
| Language | TypeScript 5 (strict) |
| UI | React 19, Tailwind CSS v4, Framer Motion |
| Components | Base UI, Lucide, Recharts |
| Client state | Zustand |
| Local storage | Dexie (IndexedDB) |
| Tooling | Turborepo, pnpm, ESLint, Prettier, Husky |
| Infrastructure | Hetzner Cloud, Docker, Caddy, PostgreSQL 16 |
Requires Node ≥ 20 and pnpm ≥ 9.
WhoUnfollowed/
├── apps/
│ └── web/ # Next.js 15 web app (AGPL-3.0)
├── packages/
│ ├── core/ # ZIP parsing and follower-diff engine (MPL-2.0)
│ └── ui/ # Shared component library
├── docs/ # Format notes and architecture docs
├── turbo.json # Turborepo pipeline
└── pnpm-workspace.yaml # Workspace definition
npm install -g pnpm)git clone https://github.com/al-kilic/WhoUnfollowed.git
cd WhoUnfollowed
pnpm install
# Start every app in dev mode (Turbopack)
pnpm dev
# Web app: http://localhost:3000
pnpm build # Build all packages and apps
pnpm typecheck # Type-check the workspace
pnpm lint # Lint
pnpm test # Run the test suite (Vitest)
pnpm clean # Remove build artifacts
The privacy model is short enough to fit here in full:
The parsing engine lives in packages/core under the MPL-2.0 license, so anyone can read exactly what happens to their data.
Full policy: whounfollowed.co/privacy.
The full web app is open source. Clone the repo, copy the variables from .env.example, and run pnpm dev (or build the Docker image for production).
Included out of the box: the entire free tier, plus Radar, snapshot comparison, the triage workflow, and CSV export, all running locally.
Requires backend infrastructure: Pro features depend on a server by design. Cross-device snapshot history, email alerts on new unfollowers, and long-term trend charts store data server-side and will not work in a purely local build unless you run the backend yourself.
Release notes: whounfollowed.co/changelog.
The project is under active development. Issues for bugs and feature requests are welcome, and so are pull requests. For anything substantial, please open an issue first so we can align on direction.
This repository uses an open-core model:
apps/web): AGPL-3.0. If you run a modified version as a network service, you must publish your source.packages/core): MPL-2.0. Use it freely in any project. Modifications to the licensed files stay open, the rest of your code does not have to.Built by Alan Kılıç · aekilicc@gmail.com
Not affiliated with Instagram or Meta.
TypeScript
98.8%
Privacy-first Instagram follower analysis. Upload your own data export, see who doesn't follow back. No password, no server.
See the codeSee who doesn't follow you back on Instagram. Open source, so you can check that for yourself.
Upload the data export Instagram already gives you. Your browser reads it locally and shows the full picture in seconds. No password, no server, no login.
Most Instagram follower trackers ask for your password. That breaks Instagram's terms of service, puts your account at risk, and hands your credentials to a stranger.
WhoUnfollowed takes a different path. Instagram's Download Your Information feature (mandated by GDPR) gives you a ZIP of your own follower and following data. WhoUnfollowed reads that file entirely inside your browser. There is no upload, no server round trip, and no account required on the free plan.
You export data you already own. We just read it. And unlike every closed-source tracker in this space, you don't have to take that claim on faith: the web app is AGPL-3.0 and the parser that touches your data is MPL-2.0, both public in this repository. Read the code instead of trusting a privacy policy.
| Typical parse time | ~2 seconds |
| Data sent to a server (free plan) | 0 bytes |
| Instagram API calls | 0 |
| Passwords required | 0 |
Step-by-step export guide: How to export your Instagram data.
A TypeScript monorepo managed with Turborepo and pnpm workspaces.
| Layer | Technology |
|---|---|
| Framework | Next.js 15 (App Router, Turbopack) |
| Language | TypeScript 5 (strict) |
| UI | React 19, Tailwind CSS v4, Framer Motion |
| Components | Base UI, Lucide, Recharts |
| Client state | Zustand |
| Local storage | Dexie (IndexedDB) |
| Tooling | Turborepo, pnpm, ESLint, Prettier, Husky |
| Infrastructure | Hetzner Cloud, Docker, Caddy, PostgreSQL 16 |
Requires Node ≥ 20 and pnpm ≥ 9.
WhoUnfollowed/
├── apps/
│ └── web/ # Next.js 15 web app (AGPL-3.0)
├── packages/
│ ├── core/ # ZIP parsing and follower-diff engine (MPL-2.0)
│ └── ui/ # Shared component library
├── docs/ # Format notes and architecture docs
├── turbo.json # Turborepo pipeline
└── pnpm-workspace.yaml # Workspace definition
npm install -g pnpm)git clone https://github.com/al-kilic/WhoUnfollowed.git
cd WhoUnfollowed
pnpm install
# Start every app in dev mode (Turbopack)
pnpm dev
# Web app: http://localhost:3000
pnpm build # Build all packages and apps
pnpm typecheck # Type-check the workspace
pnpm lint # Lint
pnpm test # Run the test suite (Vitest)
pnpm clean # Remove build artifacts
The privacy model is short enough to fit here in full:
The parsing engine lives in packages/core under the MPL-2.0 license, so anyone can read exactly what happens to their data.
Full policy: whounfollowed.co/privacy.
The full web app is open source. Clone the repo, copy the variables from .env.example, and run pnpm dev (or build the Docker image for production).
Included out of the box: the entire free tier, plus Radar, snapshot comparison, the triage workflow, and CSV export, all running locally.
Requires backend infrastructure: Pro features depend on a server by design. Cross-device snapshot history, email alerts on new unfollowers, and long-term trend charts store data server-side and will not work in a purely local build unless you run the backend yourself.
Release notes: whounfollowed.co/changelog.
The project is under active development. Issues for bugs and feature requests are welcome, and so are pull requests. For anything substantial, please open an issue first so we can align on direction.
This repository uses an open-core model:
apps/web): AGPL-3.0. If you run a modified version as a network service, you must publish your source.packages/core): MPL-2.0. Use it freely in any project. Modifications to the licensed files stay open, the rest of your code does not have to.Built by Alan Kılıç · aekilicc@gmail.com
Not affiliated with Instagram or Meta.
TypeScript
98.8%