WEIR

Who Unfollowed Me on Twitter? How to Check (2026)

See who unfollowed you on Twitter: X keeps no list, so diff two snapshots of your follower ids with our tested script and spot deleted accounts.


Published · Updated · 7 min read

Cover image: Spot your unfollowers

X keeps no list of who unfollowed you on Twitter, so you compare two saved copies of your follower list.

This guide is for your own account on X (Twitter). You get a quick check for one person and a tested script that compares two snapshots. We run Weir, the API it calls.

Already have two files of follower ids, one per line? This prints who left:

old = set(open("followers-2026-11-03.txt").read().split())
new = set(open("followers-2026-11-10.txt").read().split())
gone = old - new
print(len(gone), "gone,", len(new - old), "new")
print(sorted(gone))
  1. Spot-check one accountLook for your handle in their Following list.
  2. Save today's follower idsGET /v1/x/users/{user}/followers.
  3. Save again next weekSame script, a new dated file.
  4. Diff the two filesGone ids versus new ids.
  5. Sort out who left XGET /v1/x/users?ids= and meta.notFound.

Step 1: Check if one person unfollowed you

X's Help Center says it "does not send a notification when you unfollow someone." So you get no alert when someone unfollows you.

For one account you wonder about, the check is free:

  • Open their profile and tap Following.
  • Look for your handle in that list. If it's not there, they don't follow you now.
  • Can't open the list? The account may be protected, suspended or gone.

Step 2: Save your follower ids today

To see every unfollow, keep your own record: save your follower ids now and again later.

Save ids, not usernames. A person can change their username, but their id stays the same.

You need Python 3, requests and a free Weir key in WEIR_API_KEY. The script starts here:

import datetime, os, sys, time, requests

API = "https://api.weirapp.io"
HEAD = {"Authorization": f"Bearer {os.environ['WEIR_API_KEY']}"}

Weir's followers endpoint returns about 70 accounts a page. This part pages until meta.nextCursor is null:

def snapshot(user, max_pages=40):
    ids, params = [], {}
    for _ in range(max_pages):
        r = requests.get(f"{API}/v1/x/users/{user}/followers",
                         params=params, headers=HEAD, timeout=60)
        if r.status_code == 429:  # too fast: wait, then retry the same page
            time.sleep(int(r.headers.get("Retry-After", "10")))
            continue
        r.raise_for_status()  # 404: protected or missing; 402: out of credits
        page = r.json()
        ids += [account["id"] for account in page["data"]]
        params["cursor"] = page["meta"]["nextCursor"]
        if not params["cursor"]:
            return ids
    sys.exit("Hit max_pages first: raise it, or the file is partial.")

Forty pages hold about 2,800 followers.

This part writes the ids to a file named for today:

def save(user):
    path = f"followers-{datetime.date.today()}.txt"
    with open(path, "w") as file:
        file.write("\n".join(snapshot(user)))
    print("saved", path)

Want names and bios too? See exporting Twitter followers to CSV.

Step 3: Compare the files to see who unfollowed you on Twitter

A week later, run the save again. You now hold two dated files, and the difference between them is your answer.

def compare(old_path, new_path):
    old = set(open(old_path).read().split())
    new = set(open(new_path).read().split())
    unfollowed, missing = check_gone(old - new)
    print(f"before: {len(old)}, now: {len(new)}, new followers: {len(new - old)}")
    print("unfollowed you:", len(unfollowed), unfollowed)
    print("suspended, deactivated, deleted or hidden:", len(missing), missing)

Ids in the old file but not the new one are gone. Ids only in the new file are new followers.

Step 4: Tell an unfollow from a suspended or deleted account

X's Help Center gives three reasons a follower vanishes. The account "was hidden for spam activity, unfollowed you, or deactivated their account."

A deactivated account also has 30 days to come back before X deletes it.

So the script looks up each gone id with Weir's bulk profile lookup, 100 ids per call:

def check_gone(gone):
    still_on_x, missing = [], []
    gone = sorted(gone)
    for i in range(0, len(gone), 100):
        r = requests.get(f"{API}/v1/x/users", params={"ids": ",".join(gone[i:i + 100])},
                         headers=HEAD, timeout=60)
        r.raise_for_status()
        page = r.json()
        still_on_x += [account["id"] for account in page["data"]]
        missing += page["meta"]["notFound"]
    return still_on_x, missing

An account that comes back in data still exists, so it most likely unfollowed you. An id that can't be returned lands in meta.notFound and costs nothing. Weir's reference says that covers deleted, suspended, protected and withheld accounts.

End the script with these lines, then save all six parts as unfollowers.py:

if sys.argv[1] == "save":
    save(sys.argv[2])
else:
    compare(sys.argv[2], sys.argv[3])

We tested it on 22 October 2026 without using anyone's followers. Two small files held ids of public brand accounts, plus one id we made up to stand in for a deleted account:

python unfollowers.py compare last_week.txt this_week.txt
before: 4, now: 3, new followers: 1
unfollowed you: 1 ['13334762']
suspended, deactivated, deleted or hidden: 1 ['9000000000000000001']

The lookup was one real call. It cost 3 credits: 1 for the call, 2 for the account found.

{
  "data": [{ "id": "13334762", "protected": false }],
  "meta": { "notFound": ["9000000000000000001"] }
}

What does a Twitter unfollower tracker cost?

Your follower count sets the bill, because each snapshot reads every follower. On Weir, 1,000 followers take about 1,020 credits.

So the 5,000 free monthly credits cover four checks a month for about 1,200 followers.

Past that, you pay per follower read. Here is a month of weekly checks for 5,000 followers, as of October 2026:

Four weekly snapshots of 5,000 followers
Official X API, Owned Reads$20
Weir, $5 pack$4.06
TwitterAPI.iofrom $0.20
  • X's own API bills your own followers at $0.001 each under Owned Reads, if you own the developer app.
  • TwitterAPI.io lists follower lists from $0.01 per 1,000, about a twentieth of our rate.
  • Weir charges 1 credit per follower plus 1 per page, as our billing docs show.

Sorting the gone ids is cheap: 1 credit per lookup call, plus 2 for each account still on X.

Are Twitter unfollower apps safe?

Unfollower apps run the same snapshot and compare for you. You sign in with X, the app reads your followers on a schedule, and it lists who dropped off since the last read.

So no app can show unfollows from before you joined it.

The risk is the access you grant. X's Help Center says what each permission lets an app do:

  • Read lets it see your followers, your timeline with protected posts, and who you follow, mute and block.
  • Read and write adds posting for you, editing your profile, and "follow and unfollow accounts for you."
  • Direct Messages adds reading, sending and deleting your DMs.

A list of unfollowers needs read access only. If an app asks for more, ask why first.

Bulk "unfollow them back" buttons carry a second risk. X's automation rules say you "may not follow or unfollow X accounts in a bulk, aggressive, or indiscriminate manner."

Never type your X password into one of these apps. X's Help Center says a password gives "complete control" of your account. To review apps you already let in, open Settings and privacy, then Apps and sessions.

If the numbers don't add up

  • Your count fell, but you can't see who left. X removes locked accounts from follower counts, its Help Center says.
  • A follower is missing in the app. X's quality filter hides suspected spam; turn it off in your settings to see every follower.
  • Hundreds look gone at once. One file is probably partial. Take two snapshots minutes apart; they should match.
  • You get a 402. You're out of credits; a 429 only means wait, which the script does.

When not to use Weir

  • You only wonder about a few people. Their Following lists answer that for free.
  • Your account is protected. Weir reads public accounts only and returns a 404.
  • You have a big audience. TwitterAPI.io's follower rate is far lower than ours.
  • You want X's own terms. X's API reads your own followers under Owned Reads.

X's Terms of Service say you "cannot scrape the Services without X's express written permission," so check what applies to you. This isn't legal advice.

FAQ

How do I see who unfollowed me on Twitter?

Save your follower ids now and again in a week, then compare the two files. Ids missing from the new file left you. Look them up to split real unfollows from suspended or deleted accounts. For one person, check their Following list.

Does Twitter notify you when someone unfollows you?

No. X's Help Center says it "does not send a notification when you unfollow someone," so nobody is told about an unfollow. By default, X emails you when someone new follows you instead.

Can I see who unfollowed me before I started tracking?

No. Every method, apps included, compares a saved list with a newer one. With no older list, there's nothing to compare. Save a snapshot today, and your first answer comes with the second file.

How do I check unfollowers on Twitter for free?

Check one account by hand for nothing. For your whole list, Weir's 5,000 free monthly credits cover weekly snapshots of about 1,200 followers. For your posts' reach instead, see Twitter analytics without Premium.

Sources

All checked on 22 October 2026, in the latest Wayback Machine copies of X's help pages, from June to October 2026: