How to Tell Which of Your Twitter Followers Are Bots

10 min readSocialAPI Engineering

How to Tell Which of Your Twitter Followers Are Bots

Your follower count went up. Nothing else did — same likes, same replies, same reach.

That gap is the clearest symptom of bot followers, and it's worth understanding before you either panic about it or pay someone to "clean" it.

A note on what this article is and isn't. This is about identifying automated accounts among your followers using public signals. It is not about buying followers, and not about running follow bots. Both are against X's rules, both risk your account, and — as the last section covers — buying followers actively damages the number that matters. We're a read-only data API; we can't perform actions on accounts and wouldn't build for that.


Why it matters more than it looks

Bot followers aren't just cosmetic. They're actively harmful to the metric that determines your reach.

Engagement rate is interactions divided by reach. Bots inflate the denominator and contribute nothing to the numerator. Ten thousand bot followers make a genuinely well-performing post look mediocre.

★The perverse outcome: a larger follower count can make you look worse, because every ratio you're judged by gets a bigger, deader denominator.★

This is also why "we have 50,000 followers" means little without context. Anyone evaluating you seriously is looking at engagement per follower, and that's precisely the number bots destroy. More on computing it properly.

Auditing this yourself means pulling full profile data for every follower, not just handles — that's what our API returns.


The signals that actually indicate automation

No single signal is proof. Real people have sparse profiles; some bots are well-disguised. ★Require several signals before concluding anything.★

Strong signals:

Signal Why it indicates automation
Following ≫ followers Following 5,000 with 12 followers back is the classic mass-follow pattern
Zero posts, or all reposts An account that never writes anything original isn't participating
Created very recently, in a batch Many followers all created the same week is a purchased batch
Default avatar Weak alone — plenty of real people never set one — but meaningful combined with others
Handle with random digits @john82749163 — the pattern of automated handle generation

Weak signals — do not judge on these alone:

  • No bio. Many real people don't write one.
  • Low follower count. Everyone starts at zero.
  • Non-English content. Obviously not evidence of anything.
  • Recent account. New users exist.

⚠️ The mistake worth avoiding: building a filter aggressive enough that it flags real people. A quiet reader who follows 200 accounts, posts rarely, and has no bio is a completely normal user — and is also, on a naive filter, indistinguishable from a bot. If you're going to act on this, require multiple strong signals and accept that you'll never get to certainty.


Checking your own followers

Every signal above is in the public profile data, so this is a matter of pulling your follower list and scoring it.

import requests
from datetime import datetime, timezone

BASE = "https://api.socialapi.tech"
KEY  = "your_api_key"
HDRS = {"X-API-Key": KEY}

def get_followers(username, pages=5):
    """Page through a follower list."""
    out, cursor = [], None
    for _ in range(pages):
        params = {"username": username, "limit": 100}
        if cursor:
            params["cursor"] = cursor
        r = requests.get(f"{BASE}/v1/user/followers",
                         params=params, headers=HDRS, timeout=60)
        r.raise_for_status()
        body = r.json()
        batch = body["data"]
        if not batch:
            break
        out.extend(batch)
        cursor = body.get("meta", {}).get("next_cursor")
        if not cursor:
            break
    return out

def suspicion_score(acct):
    """Count strong signals. Higher = more likely automated."""
    score = 0

    followers = acct.get("followers_count", 0)
    following = acct.get("following_count", 0)
    posts     = acct.get("statuses_count", 0)

    # mass-follow pattern
    if following > 500 and followers > 0 and following / followers > 20:
        score += 2
    # never posts
    if posts == 0:
        score += 2
    elif posts < 5:
        score += 1
    # no bio
    if not acct.get("bio", "").strip():
        score += 1
    # trailing random digits in handle
    handle = acct.get("username", "")
    if len(handle) > 8 and handle[-6:].isdigit():
        score += 1

    return score

followers = get_followers("yourhandle", pages=5)
scored = [(a, suspicion_score(a)) for a in followers]

likely = [(a, s) for a, s in scored if s >= 4]
print(f"{len(likely)} of {len(followers)} scored 4+ ({len(likely)/max(len(followers),1):.1%})")

for acct, s in sorted(likely, key=lambda x: -x[1])[:15]:
    print(f"  [{s}] @{acct['username']:<22} "
          f"{acct['following_count']:>6} following / {acct['followers_count']:>6} followers, "
          f"{acct['statuses_count']:>5} posts")

Reading the output honestly: a threshold of 4 requires at least two strong signals. Lower it and you'll start flagging quiet real users. There's no threshold that's simultaneously complete and precise — pick based on whether a false positive or a false negative costs you more.

What a normal result looks like: most accounts of any size have some percentage here. A few percent is unremarkable — accounts get followed by bots without doing anything wrong. A sudden jump is the thing worth investigating.


Vetting someone else's account

The same scoring works on any public account, which is the useful version if you're evaluating an influencer, a partner, or a potential hire.

What to compare: their engagement rate against accounts of similar size in the same niche. An account with 100,000 followers and 20 likes per post has a story that needs explaining. Sometimes that story is innocent — an old account whose audience moved on. Often it isn't.

★The tell isn't the follower count, it's the mismatch between follower count and engagement.★ That's a single division and it's harder to fake than any individual profile signal.


On buying followers

Since these searches often come from people considering it, the straight version:

It doesn't work, and the reason is arithmetic. Purchased followers don't engage. Engagement rate is what determines both algorithmic reach and how you look to anyone evaluating you seriously. Buying followers makes your denominator bigger and your numerator flat — so it makes the number that matters worse, permanently and visibly.

It's also against X's rules, with account penalties as a possible outcome. And purchased accounts get purged in waves, so the count you paid for erodes anyway.

On "cleaning" services: anything that removes followers on your behalf needs write access to your account, which means handing over credentials or an authorised session. That's a meaningful risk for a cosmetic gain. If you want to remove specific followers, X's own remove-follower function does it without giving anyone access.


Questions people ask

How do I know if my followers are fake? Check for accounts that follow thousands while having few followers, never post, and have no bio. Several signals together, not one.

Why did I suddenly gain a lot of followers? Could be organic — a post travelled. Could be a bot wave, which is unfortunately common and usually not something you did. Check whether engagement rose proportionally.

Do bot followers hurt my account? They damage your engagement rate, which affects both reach and how you look to anyone evaluating you. They don't usually cause penalties if you didn't buy them.

Can I remove bot followers? You can remove specific followers manually. There's no bulk removal in X's interface, and third-party bulk tools need account access.

How many fake followers is normal? A few percent is unremarkable for most accounts. Large accounts often carry more. A sudden spike is the signal, not the baseline.

What percentage of Twitter is bots? Estimates vary widely and none is authoritative. Treat any specific figure with scepticism, including ones presented confidently.

Can I check someone else's fake followers? Yes — the same public signals apply to any public account. Their engagement-to-follower ratio is the fastest check.

Do fake followers get removed automatically? X purges automated accounts periodically, which is why bought counts decay. It's not on a schedule you can predict.

Is buying Twitter followers illegal? Not illegal, but against X's terms, with account penalties possible. And it makes your engagement rate worse, which is usually the opposite of the goal.

How do I get real followers instead? Post consistently about something specific, engage genuinely, and give people a reason to follow. No shortcut here beats it.

What's a good follower-to-following ratio? For real accounts it varies enormously — there's no target number. The extreme cases (following thousands, followed by dozens) are what indicate automation.

Can bots see my tweets? They technically receive them in a timeline. They don't read or act on them meaningfully, which is why they don't help reach.

Do bots affect my engagement rate? Yes, directly and negatively. They enlarge the denominator without touching the numerator.

How do I report a bot account? Use X's report function on the profile and select the spam or fake account option.

Can I block bot followers in bulk? Not through the interface. Bulk tools require account access, which is its own risk.

Why do bots follow me? Automated follow-back farming — they follow broadly hoping for reciprocal follows. It's rarely about you specifically.

Do bot followers unfollow later? Often. Follow-then-unfollow is a standard pattern, which is one reason unfollow tracking shows so much churn.

Can I tell if a specific account is a bot? You can build reasonable confidence from several signals. You can't be certain from public data alone, and anyone claiming certainty is overstating.

How do I audit my followers programmatically? Pull the follower list, score each profile against the signals above, and look at the distribution. The code earlier in this article is a working starting point.

Does verification prevent bots? No. Verification indicates a paid subscription, not that the account is a genuine person.

How do I audit my Twitter followers? Pull the list with full profiles and score each one — ★no single signal is conclusive, so combine several★ and rank rather than label.

Is there a free Twitter audit tool? They apply heuristics to public profile data. ★Treat any percentage they give you as an estimate★ — nobody can verify who is real.

How do I check for fake followers? Look at ratios, not counts — ★follower-to-following, post count against account age, and default profile fields★ together tell you more than any one of them.

How do I find inactive followers? Check last-post recency across the list. ★Inactive is not the same as fake★ — an abandoned real account is still a real person who left.

Can I track inactive followers over time? Yes — snapshot the list on a schedule and watch which accounts stop posting. ★That requires starting now★; the history does not exist retroactively.

Do fake followers hurt my account? Followers you did not buy are not your fault and carry no penalty. ★What they distort is your own engagement-rate maths★ — the denominator gets inflated.


If you're building follower auditing

The scoring is straightforward. The work is in the collection: paging through a follower list without truncating, storing snapshots so you can see when a wave arrived, and getting full profile data for each follower rather than just handles.

That's what our API provides — follower lists with complete profile objects on every entry, including follower and following counts, post count, bio, and account age. Cursor-based paging, flat price per call, no rate limit of your own to manage.

★It is read-only by design.★ It can tell you which followers look automated. It cannot remove them, follow anyone, or act on your account in any way — and that's deliberate: an API key that leaks costs you quota, not your account.

Related reading: measuring engagement rate properly · tracking followers and unfollows · removing a follower without blocking.