WEIR

Check If a Twitter Username Is Available (2026)

How to check if a Twitter username is available: X's own rules, why names of suspended and deactivated accounts stay held, and a script for a whole list.


Published · Updated · 7 min read

Cover image: Taken, held or free?

To check if a Twitter username is available, type it into X's username setting, and X tells you at once if it's taken.

This guide is for founders and brand teams picking a handle on X (Twitter). You get X's own rules, why a name with no profile can still be held, and a script that checks a whole list. We run Weir, the API in the script.

Check one name from a terminal. A 200 means taken, and a 404 means no active account:

curl -s -o /dev/null -w "%{http_code}\n" \
  https://api.weirapp.io/v1/x/users/acmerocketsapp \
  -H "Authorization: Bearer $WEIR_API_KEY"
  1. Check X's rules15 characters at most: letters, numbers, underscores.
  2. Open x.com/nameA profile means the name is taken.
  3. Try it in SettingsX's own yes or no, before you commit.
  4. Check a list by API200 is taken, 404 is worth a try.

Step 1: Check the name against X's username rules

A name that breaks X's rules is never available, so check these first. Here is what X's Help Center said in September and October 2026:

  • Length: "more than 4 characters" and up to 15. Your display name can run to 50.
  • Characters: letters A to Z, numbers 0 to 9 and underscores. No spaces, dashes or dots.
  • Reserved words: "Admin" is blocked unless the account is an official X account. So is the platform's name: "Twitter" in the page's 2024 copy, "X" in its 2026 copy.

So acme-rockets fails on the dash.

If your first pick is taken, X suggests adding an underscore, as in @lindsay_ or @_lindsay.

Step 2: Open x.com/name to see if a Twitter handle is taken

The fastest look is the profile address. Type x.com/ and the name into your browser:

  • A profile loads: the name is taken. Protected accounts still show their profile.
  • A suspension or deactivation notice: the name is held. X says you'll see "a message indicating suspension or deactivation."
  • No account at all: the name may be free. Step 3 settles it.

Step 3: Check if the Twitter username is available in Settings

X's own username field gives the only final answer. In the app, open Settings and privacy, then Account, then Username, and type the name.

X's Help Center says that "if the username is taken, you'll be prompted to choose another one." No prompt means X will let you save it.

Before you save, know two things:

  • Your old name is freed at once. X says it "will immediately be available for use by someone else."
  • Your followers stay. Followers, Direct Messages and replies move with you, per X.

Why is a Twitter name taken when no one uses it?

X holds names for accounts you can't see. Here is what its Help Center says about each case, as of October 2026:

Account state What x.com/name shows Can you claim the name?
Active or protected The profile No
Suspended A suspension notice Not right away
Deactivated A notice, for 30 days After the account is gone
Inactive The old profile No: X doesn't release them
Renamed No account at that name Yes, at once

The deactivated row is the one to watch. X deactivates an account for 30 days, then deletes it. After that, X says, the username "will be available for registration by other X accounts."

Inactive names stay put. X may remove long-idle accounts, but its policy page says "we cannot release inactive usernames at this time."

Step 4: Check many Twitter usernames at once with a script

For a shortlist of ten or a hundred names, check Twitter handle availability by API. Weir's GET /v1/x/users/{user} returns the profile if an account holds the name, and a 404 if X shows none.

The function checks X's rules first, then asks the API:

import os, re, time, requests
API = "https://api.weirapp.io/v1/x/users/"
HEADERS = {"Authorization": f"Bearer {os.environ['WEIR_API_KEY']}"}

def check(name):
    if not re.fullmatch(r"[A-Za-z0-9_]{5,15}", name):  # X: more than 4, at most 15
        return "breaks X's username rules"
    r = requests.get(API + name, headers=HEADERS, timeout=60)
    if r.status_code == 429:  # too fast: wait, then ask again
        time.sleep(int(r.headers.get("Retry-After", "5")))
        return check(name)
    if r.status_code == 404:
        return "no active account (X may still hold it)"
    r.raise_for_status()
    return "taken by @" + r.json()["data"]["username"]

Then loop over your list:

names = ["acmerockets", "acme_rockets", "acme-rockets", "acmerocketsapp", "github"]
for name in names:
    print(f"@{name}: {check(name)}")
    time.sleep(2)  # the free tier allows 30 lookups a minute

We checked one made-up name, acmerocketsapp, on 22 October 2026. Weir answered 404, and our credit balance didn't move:

{
  "error": {
    "code": "not_found",
    "message": "X user not found.",
    "retryable": false
  }
}

Here is what a list costs, from Weir's billing docs as of October 2026:

3credits per taken name: 1 for the call, 2 for the profile
0credits per 404, because failed calls are free
30lookups a minute on the free tier

So 100 names cost 300 credits at most, inside the 5,000 free credits each month.

Once you claim a name, save the account's numeric ID. Our Twitter user ID lookup guide shows how, and Twitter username history explains why.

If the check gives the wrong answer

  • Digits only: Weir reads the name as a user ID, so check it in Settings instead.
  • Over 15 characters: X won't let you register it, even if the lookup finds nothing. check() skips it.
  • 404 in the script, taken in Settings: a suspended or deactivated account holds it.
  • Free yesterday, gone today: freed names go straight back into circulation, so claim yours fast.

When not to use Weir

  • You're checking one or two names. The profile address and Settings cost nothing.
  • You want X's own terms. X's API looks up 100 usernames per request at $0.010 per user returned, as of October 2026.
  • Price per profile matters most. TwitterAPI.io lists 18 of its credits per profile, about $0.00018. Weir's 3 credits cost $0.0006 at the $5 pack.
  • The name you want is held. No API can free it. X points trademark owners to its trademark policy.

Weir reads public data only and can't change a username. It isn't licensed by X, so access can change.

FAQ

How do I check if a Twitter username is available?

Type it into Settings and privacy, then Account, then Username on X. If it's taken, X asks you to pick another. For a quick look, open x.com/ plus the name. For a list, use the Step 4 script.

Is this Twitter name taken if the account is suspended?

Yes, for now. X's Help Center says suspended and deactivated usernames "are not immediately available for use." You'll see a suspension notice at the profile address. Pick a variation, such as one with an underscore.

How long until a deactivated X username is free?

About 30 days. X deletes a deactivated account after 30 days, and then, X says, the username "will be available for registration by other X accounts." Someone else may claim it first.

Can I get an inactive Twitter username?

Not through the normal settings. X says it "cannot release inactive usernames at this time." Premium+ and Premium Business subscribers can request some inactive handles on X's Handle Marketplace, and trademark owners can use X's trademark policy.

Are X username checker sites accurate?

Most only test whether a profile exists, so they share the same blind spot. A name held by a suspended or deactivated account can look free. Confirm any "available" result in X's Settings before you print it on anything.

Sources

X Help Center pages were read in Wayback Machine copies, dated below. The rest was checked on 22 October 2026.