CheckMate

Who Runs CheckMate, and by What Principles

Who builds and is responsible for it, how far you can trust the analysis results, and on what basis we correct our content.

Last updated: July 16, 2026

Operator

Name
Imagine (이매진)
Type
A free service built and run by one person
Contact
dlaudwls1203@gmail.com
Source code
https://github.com/thingineeer
Publicly available since
March 2026

Because there is no paid product yet, business registration details are not published. If a feature that accepts payment is added, the business details will be listed here together with the required e-commerce (mail-order business) registration.

Why was it built?

Many Instagram unfollower-checker apps require your account password or a persistent connection to your account, and I wanted to avoid that. So I chose an approach that reads the data export file Instagram provides at your own request, directly in your browser.

Planning, the TypeScript analyzer, the interface, deployment, and support replies are all handled by the single operator. When the actual export structure changes, the sample is re-checked and the parser and the explanations are updated together.

How does the analysis work?

  1. You request a data export in JSON format from Instagram yourself.
  2. CheckMate unpacks the ZIP or JSON in your browser's memory and locates the connections files.
  3. It compares followers and following to compute mutual follows, accounts that do not follow you back, and your fans.
  4. Username mismatches are reconciled only when the newer format includes a stable ID; everything else is shown as a possibility.

Here is the exact path a file takes. When you press the upload button, the browser loads the ZIP into memory and uses JSZip to extract only the JSON files under connections/followers_and_following/. The parsing function (src/lib/igFormat.ts) normalizes both the old and new formats into the same shape, and the analysis function (src/lib/analyzer.ts) cross-checks the two lists. No network request is made during this process. The four numbers on the results screen (I follow, follow me, mutual, not following me back) and the lists all come from that memory and disappear when you close the tab. The only thing sent to a server is general site analytics such as page views, and even that is never combined with what you uploaded. You can verify the code at the same paths in the public repository.

The scope of an export can vary by account and by when it was requested. CheckMate does not assume a universal 365-day limit; it uses the period actually observed in your file.

Accuracy and the limits of interpretation

The limits above are not an abstract disclaimer; they come from facts verified in a real file. Opening the operator's own account export from 2026-08-18, only two files, followers_1.json and following.json, lacked a unique account ID, while all of the remaining 8 files in the same ZIP contained one. That is why there is no way to confirm an account whose username changed from these two files alone, and CheckMate only goes as far as marking a "possible username change". The detailed figures are in the full breakdown of all 10 files. Conversely, the common claim that "followers only cover the most recent year" did not hold in the same file: of 543 entries, 86.4% were older than one year, and the oldest went back to 2018. That said, we do not conclude that this is true for every account, because the sample is a single account. The result and how to reproduce it are laid out in the 365-day limit measurement post.

The standards we follow when writing

The technical articles on this site rely on only three sources. First, the documentation and help pages Meta has published. Second, observations from export files obtained directly from the operator's own account. Third, what the public parser code actually does. Anything not confirmed by these three is labeled as an estimate, and we distinguish sentence by sentence where observation ends and interpretation begins.

That also makes clear what we do not write. Statistics aggregated from users' files do not exist, so we never cite them. We do not write as though the operator observed anything before March 2026, when the service began. We do not describe features the product does not show on screen as if they existed. These three rules are enforced by tests in the repository that check sentence patterns, and a violation fails the build.

The sample in our measurement articles is a single account. We do not guarantee that a different account or a different request date will produce the same result, and we publish a reproduction script alongside each article so readers can check their own file using the same procedure. If a counterexample is reported, we verify it, update the article, and keep a revision history.

These standards have actually been applied. On August 19, 2026, the entire blog was re-reviewed: every sentence that cited our own data from before the service opened as if it were a source, and every phrase that could be read as aggregated user data, was corrected, and four articles that described features the product does not have or whose evidence could not be restored were deleted rather than revised. In the articles that remained, unsourced figures were either marked as estimates next to the table or rewritten as qualitative statements. On the same day, wording in the site guide about features not on screen, such as "interest analysis", was removed as well. Measurement articles published since then follow the same three sources and the single-sample principle above.

Privacy and content review

The original ZIP, username lists, DM contents, and the other party's account names are never sent to a server. They disappear from the analysis memory when you refresh or close the tab. General site analytics is kept separate from any collection of upload results and is disclosed in the Privacy Policy.

Technical articles are written based on verified JSON keys and observations from real files. Unverified samples, operating periods, algorithm figures, or success rates are never published as if they were facts.

Contact the operator

For bug reproductions, privacy inquiries, and content correction requests, please email dlaudwls1203@gmail.com. The public development history is available on the GitHub profile.