---
title: igstats
url: https://rone.dev/projects/igstats
description: Upload your own Instagram export and see who does not follow you back.
language: en-US
updated: 2026-09-27
translations:
  id: https://rone.dev/id/projects/igstats
---

# igstats

Upload your own Instagram export and see who does not follow you back.

[Projects](https://rone.dev/projects) / [Web](https://rone.dev/projects/category/web)

Live · Started 2025 · 4 GitHub stars · 0 Forks

<Frame>
  ![The igstats home page, with the upload form for an Instagram export](https://rone.dev/projects/igstats/home.webp)
</Frame>

igstats reads the followers and following files out of an Instagram data export — as JSON, as pasted text, or as the whole ZIP — and works out mutuals, accounts you follow that do not follow back, and followers you do not follow, each dated from the timestamp in the export. Nothing is kept: the application defines no database model, and the upload is read in memory and discarded with the request.

## Numbers

* **8** Interface languages
* **3** Input formats
* **0** Stored records

## Project facts

|          |                                                                                                                |
| -------- | -------------------------------------------------------------------------------------------------------------- |
| Status   | Live                                                                                                           |
| Category | Web                                                                                                            |
| Started  | 2025                                                                                                           |
| Role     | Design and build                                                                                               |
| Stack    | Python, Django, Tailwind CSS, WhiteNoise, Vercel                                                               |
| Licence  | MIT                                                                                                            |
| Links    | [Live site](https://igstats.rone.dev) · [Source](https://github.com/ridwaanhall/instagram-following-followers) |

## Overview

Instagram will hand you your own data, and then the export is two JSON files nobody wants to read. This does the set arithmetic: following minus followers, followers minus following, and the intersection, with the date each relationship began pulled from the timestamps the export includes.

You can hand it the ZIP straight from the export, the two JSON files individually, or paste their contents. The ZIP path searches the archive for the two filenames at any depth, because the folder layout has moved between export versions.

## Nothing is stored

The app defines no models. Not "the models are unused" — the models module is empty, so there is no table for an upload to land in. The archive is opened in memory, the two files are parsed, the result is rendered into the response, and the request ends. The only thing the session cookie carries is the chosen language.

For a tool whose entire input is a list of the people someone follows, that property is the product. It is also the kind of claim that is only worth making if a reader can check it, which is why the repository is public.

## Two export formats that both changed

Instagram has revised its export shape at least twice, and old exports still exist. In earlier files the username sits in a value field; in later ones that field is gone and the username is the entry title. When neither is present, it is still recoverable from the profile URL — and that URL has two forms of its own, one with a plain handle and one with an intermediate path segment.

Username extraction therefore tries four sources in order and returns the first that yields something. That is not elegant, but the alternative is telling a visitor their perfectly valid export is unreadable.

## Language

Eight languages, chosen by an explicit parameter, then the session, then the browser Accept-Language header, then the default. Regional variants are mapped down to the language actually translated, so a visitor asking for one Chinese or Spanish variant is not silently dropped back to English.

<CardGroup cols={2}>
  <Card title="Previous: Gempa" href="https://rone.dev/projects/gempa">
    Indonesia's earthquakes and tsunami warnings, live from BMKG, with an open JSON API.
  </Card>

  <Card title="Next: Follow Dragon" href="https://rone.dev/projects/follow-dragon">
    A WebGL globe tracking SpaceX Dragon and the ISS in real time.
  </Card>
</CardGroup>
