Is X.com (Twitter) Down Right Now, or Is It Just You?

By TwitterAPI.io Team•17 min read
Decision flow: Is X (Twitter) down, or is it just you? Question 1, other people: an outage-tracker spike plus fresh 'is X down' posts means a platform outage. Question 2, other devices: if only one fails, it is your device or network. Question 3, other accounts: if only yours fails, it is account-level (rate limit, locked, suspended, flagged as automated).
Three questions separate a platform outage from a device, network or account problem.

This page answers one question: is X.com down for everyone, or only for you? It is not a fix-it guide for posts that will not load on your phone (that is our guide to Twitter posts not loading), and it is not about the API's HTTP 429 errors (see rate limit exceeded on the Twitter API). Here you get the official status sources that still work, the signals that separate a real outage from a problem with your device, network or account, and a check you can run yourself.

One honest limit first: this page is static. Nothing here can tell you whether X is down at this exact minute, and any page that claims a live status without probing X is guessing. What we can give you is a method that takes about a minute, plus first-hand numbers on what outage reports actually look like on X, so you can read the signals instead of trusting a single counter.

The numbers come from our own study: hour-by-hour searches for "twitter down", "x down" and similar phrases on a quiet recent day, on a quiet Monday, and across the June 22, 2026 outage, plus a hand-labeled sample of what those posts are really about.

01 — Section

The 60-second check: is X down for everyone?

Work through these in order. Each step either confirms an outage or narrows the problem to your side, and none needs more than a few seconds.

1. Look at an outage tracker. Downdetector (downdetector.com) and similar sites chart user reports. A real outage is a cliff, not a bump: on June 22, 2026, X went "from a small handful of issues to almost 30,000" Downdetector reports at about 9 a.m. Eastern, according to LongIsland.com's live report. A gentle rise of a few dozen reports is normal background noise.

2. Search X for fresh reports. If X loads at all, search is x down and switch to the Latest tab. During an outage new posts arrive several a minute; on a quiet day you will see one or two an hour, and most will not be about an outage (see the study below). If search itself will not load, that is a signal too.

3. Switch device and network. Turn Wi-Fi off and try mobile data, or open x.com in a private browser window on another device. If X works there, X is up and the problem is your app, browser, DNS, VPN or network.

4. Sign out, or look at someone else's profile. If X loads but your own timeline, posting or profile fails while other people's profiles load, the problem is account-level: a read limit, a lock, a suspension or an automation flag.

5. For developers: check the API status page. developer.x.com/status reports X API endpoint health. If your integration fails while that page is green, look at your credentials, rate limits and request code first.

SignalPlatform outageJust you
Outage trackerSharp spike, thousands of reportsFlat or a small bump
Fresh "is X down" postsSeveral a minuteOne or two an hour, mostly unrelated
Second device or networkFails tooWorks
Other accounts' profilesFail tooLoad fine
Error text"Something went wrong", blank timeline everywhere"Rate limit exceeded", "account locked", "suspended"
02 — Section

X's official status pages: which ones still work

X does not run a consumer status page for the app or website. The official sources are written for developers, and one widely linked address no longer works. We checked each URL this session:

AddressWhat it isState when we checked
developer.x.com/statusX Developer Platform status: success rate per X API endpoint, Operational / Degraded / OutageLive; refreshes every 60 seconds
docs.x.com/statusRedirectPermanent redirect to developer.x.com/status
docs.x.com/incidentsIncident history for the X API, Enterprise APIs, Ads API and streamingLive; lists past incidents with UTC times
api.twitterstat.usThe old API status pageRedirects to a Statuspage that reports "Your page is inactive"
status.x.com(often guessed)Did not respond

What developer.x.com/status actually measures. The page's own front-end code fetches a status feed every 60 seconds and shows, for each X API v2 route (for example GET /2/tweets/search/recent, GET /2/users/me, POST /2/tweets) and Ads API route, a current success rate and a short history, grouped by data center. An endpoint at 99% or above shows green; lower rates show as degraded, and the overall banner moves to Degraded or Outage. That makes it the best official signal for developers. For consumers it is a partial signal: a broad outage can show up there (X's incident log titled the June 22, 2026 event "X site-wide outage: API endpoint degradation"), but an outage that only breaks the iOS app or the web timeline may never appear.

What docs.x.com/incidents adds. It is the after-the-fact record. The most recent entries when we checked included "X site-wide outage: API endpoint degradation" on June 22, 2026 from 12:00 to 15:41 UTC, a Recent Search outage on June 17, 2026 from 02:20 to 03:45 UTC, and an OAuth 2.0 login and /2/users/me outage from 23:00 UTC on June 30 to 01:00 UTC on July 1, 2026. Use it to confirm, after the fact, that the failure you saw was X's.

Third-party trackers. Downdetector, IsItDownRightNow and similar sites count user reports. They count reports as they arrive, so they move quickly, but they measure complaints, not failures: a viral post asking "is X down?" can produce a bump without an outage. Use them for step 1 above, never as the only signal.

03 — Section

What "is X down" posts really look like: our measurement

Searching X for "twitter down" is the oldest outage check there is. We measured how useful it is. We ran the same search, ("twitter down" OR "x down" OR "is x down" OR "is twitter down" OR "x is down" OR "twitter is down" OR "x.com down") -filter:retweets, one query per UTC hour, over three windows: the 24 most recent hours at collection time, a quiet Monday (06:00 to 20:00 UTC, one week before the outage), and the same hours on Monday, June 22, 2026, the day X's own incident log records a site-wide outage.

WindowMatching postsPer hourBusiest hour
Recent quiet day (24 h)401.7 average, 1.5 median5
Quiet Monday (14 h)120.93
June 22, 2026 outage (14 h)2127 hours with zero, then 47 / 86 / 40+86 at 14:00 UTC

The burst is sudden. The search returned nothing from 06:00 UTC until 13:52 UTC on the outage day, then 111 posts in the 15 minutes from 13:52 to 14:07, about 7.4 a minute. The busiest five minutes (14:00 to 14:05) held 53 posts. The peak hour, 86 posts, is about 52 times an average quiet hour. Then it faded: 11, 15, 4 and 9 posts in the four hours after 16:00 UTC.

The timing is not perfect. News reports put the start of the outage at about 9 a.m. Eastern (13:00 UTC), and X's incident log puts API degradation from 12:00 UTC. The posts our search returned start at 13:52. Either people were slow to post about it (they could not, if X was down), or the search index for that window is incomplete; we cannot tell which from this data. Either way, "is X down" chatter is a lagging signal: it confirms an outage, it does not announce it first.

Most quiet-day matches are noise. We read and labeled all 52 posts from the two quiet windows and a random 100 from the outage window:

What the post is aboutQuiet hours (52)Outage hours (100)
Real outage report or question about X21%64%
Joke or meme about X being down2%20%
News, link-bait or spam2%13%
Account, regional or ISP-specific X problem6%1%
Another service down (an ISP or a game)8%0%
Unrelated phrase match62%2%

On a quiet day, the most common match is a phrase that has nothing to do with an outage: people telling themselves to "put twitter down", reply-guys writing "@X down to connect", "Gen X down". The real quiet-day reports were scattered single questions ("is X down?") with no wave behind them, alongside a few local problems: a country-level block, one ISP, one person who could not post. During the outage, real reports dominate, and jokes become the second-largest group within minutes. Nine of the 100 outage posts explicitly asked the question this page is about: is it X, or just me, my network, or my account?

How to use this. Two or three "is X down" posts in the last hour mean nothing. Dozens in the last 15 minutes, several a minute, mean an outage. The script further down turns that rule into a number you can check.

Bar chart of matching 'is X down' posts per UTC hour. A quiet Monday shows 0 to 3 posts an hour. On June 22, 2026 the search returns zero posts from 06:00 to 12:00 UTC, then 47 at 13:00, 86 at 14:00 and at least 40 at 15:00, falling to 11, 15, 4 and 9. A dashed line marks the recent quiet-day average of 1.7 posts an hour.
Matching posts per UTC hour returned by X search, outage day against a quiet Monday one week earlier, collected in 2026. The 15:00 bar is a lower bound.
04 — Section

Reading the labels: why a few "X down" posts prove nothing

Outage trackers and X search share a weakness: they count people saying something, not X failing. Our labeled sample shows how far apart those can be.

The phrase is ambiguous. "Twitter down" is also what people say when they mean "put Twitter down" (stop scrolling), "shut Twitter down" (hyperbole), or, since the rename, "@X down to connect" in networking replies. On a quiet day these made up 62% of matches. Any outage detector that counts the phrase without context inherits that noise.

Other services borrow the words. 8% of quiet-day matches were about a different service with "X" in the name, such as a fiber internet provider, or a list of several services going down at once.

Local failures look like outages to the person having them. Three quiet-day posts were from users who could not reach X because of their country or their ISP, and two said they had switched to a VPN to get back on. For them X was down; for everyone else it was up.

During an outage, people joke fast. 20% of the outage sample were jokes ("Twitter is down so I guess I'll go outside"), and 13% were news write-ups, link-bait or spam riding the trend. They still count as a signal, because jokes about X being down rarely appear in volume unless it is.

Stacked bar chart of what 'twitter down' and 'x down' posts are about. Quiet hours (52 posts): 21% real outage reports, 2% jokes, 2% news or spam, 6% account, regional or ISP problems, 8% another service down, 62% unrelated phrases. Outage hours (100 posts): 64% real reports, 20% jokes, 13% news or spam, 1% account-level, 2% unrelated.
Hand-labeled, de-identified sample from the same searches, collected in 2026.
05 — Section

Not an outage? Account-level problems that look like one

If X works on another device or for another account, the problem is yours alone. These are the account-level causes that most often get mistaken for an outage, and how each one shows itself.

CauseWhat you seeWhat to do
Read limit"Rate limit exceeded" or posts that stop loading after heavy scrollingWait; the cap resets over time
Locked accountPrompt to verify a phone number or email, or pass a challengeComplete the unlock steps X shows you
Suspended account"Account suspended" banner; your profile shows as suspended to othersAppeal through X's form
Flagged as automatedError 226: "This request looks like it might be automated"Slow down, sign in again, avoid scripted actions
Regional or ISP blockX fails on one network, works on mobile data or elsewhereDifferent network; contact the ISP

Read limits are real and have caught millions at once. On July 1, 2023, Elon Musk announced temporary daily reading limits (first 6,000 posts for verified accounts, 600 for unverified and 300 for new unverified accounts, raised the same day to 10,000 / 1,000 / 500), and users who hit them saw "Rate limit exceeded", as ABC13 reported. Because so many people hit the cap the same afternoon, it looked like an outage. The lesson holds: if the error says "rate limit", it is about your session, not X's servers.

Locked and suspended are different states. A locked account is usually a security hold that you can clear yourself by verifying a phone or email (X's unlock form is at help.x.com/en/forms/account-restoration/locked). A suspension is an enforcement action; X explains the types and the appeal route at help.x.com/en/managing-your-account/suspended-x-accounts. Either one can make X feel down, because your timeline, posting and notifications stop while everyone else carries on.

One quick test settles it. Open x.com/Support in a private window without signing in, or ask a friend to load your profile. If X's own support account loads and yours shows a suspension notice or nothing at all, the problem is the account. If neither loads, go back to the outage check. To check whether your replies are being hidden rather than blocked outright, use our free shadowban checker (linked in the related guides below).

06 — Section

For developers: is the X API down, or is it your code?

Developers face the same question with different symptoms: a job that ran yesterday now returns errors. X's API reference (docs.x.com/x-api/fundamentals/response-codes-and-errors) separates the cases cleanly by HTTP status, and the split is the same one this page uses for consumers:

HTTP statusX's descriptionWhose problem
401Invalid or missing authentication credentialsYours: key, token or signature
403Valid auth but no permission for this resource or actionYours: access level or app permissions
429Rate limit or usage cap exceededYours: back off, read x-rate-limit-reset
500 / 502 / 504Wait and retryX's, usually short-lived
503X is overloaded; wait and retryX's

X's own guidance is to check the HTTP status before parsing the body and to "use exponential backoff for 429 and 5xx errors". A burst of 5xx responses across several endpoints, matching a degraded row on developer.x.com/status, is an outage. A 401, 403 or 429 is not, however many times you retry it. Our Twitter API error-handling guide (linked below) covers retry code in depth.

A second path helps you tell the two apart. If your official X API integration fails, the fastest way to separate "X is broken" from "my app, keys or quota are broken" is to ask X the same question through a path that does not use your credentials or your quota. twitterapi.io reads public X data with an API key and no X account or developer-app approval. The snippet below counts "is X down" posts from the last 15 minutes; compare the result with the quiet-day baseline of 1.7 an hour from our study.

python
import os, time, requests

BASE = "https://api.twitterapi.io"
HEADERS = {"X-API-Key": os.environ["TWITTERAPI_IO_KEY"]}
query = ('("twitter down" OR "x down" OR "is x down" OR "is twitter down" '
         'OR "x is down" OR "twitter is down" OR "x.com down") -filter:retweets')
since = int(time.time()) - 900          # last 15 minutes

r = requests.get(f"{BASE}/twitter/tweet/advanced_search",
                 headers=HEADERS,
                 params={"query": f"{query} since_time:{since}", "queryType": "Latest"},
                 timeout=20)
body = r.json()
print(r.status_code, len(body.get("tweets", [])), "posts; more pages:", body.get("has_next_page"))
07 — Section

The check script: probe X yourself in under a minute

The full script at the bottom of this page combines the three checks into one verdict. It never touches your phone, browser or X session, so it isolates X itself from everything on your side.

Control accounts. It asks for the profiles of @Support and @XDevelopers with GET /twitter/user/info. When X is up, both come back with status: "success" and a data object (when we checked, @Support had about 6.3 million followers). If those fail, X is not serving even its own accounts.

Your account. It asks for your handle the same way and for its latest posts with GET /twitter/user/last_tweets (posts are in data.tweets, newest first). An unknown or unavailable handle comes back as HTTP 200 with status: "error" and msg: "user not found", not a 404, so the script reads the status field rather than the HTTP code. Controls fine but your handle not served means the account was renamed, deactivated, locked or suspended.

Chatter. It counts matching posts from the last 15 minutes with GET /twitter/tweet/advanced_search, following has_next_page and next_cursor for up to three pages. The threshold, 20 posts in 15 minutes, sits far above a quiet hour (1.7 posts) and far below the first 15 minutes of the June 22 outage (111 posts). It is calibrated on one outage, so treat it as a starting point and tune it.

The verdict. Controls failing or chatter above the threshold: likely platform-wide. Controls fine but your handle failing: account-level. Everything fine: X is up and the problem is on your device, network or session, so go to our guide to Twitter posts not loading.

One caveat matters: during a deep outage, every route to X data can fail at once, including this one. That is still an answer. If the control probes fail with gateway errors across several retries, X is down.

08 — Section

What the check costs, against the official X API

A diagnostic you run a few times a year should cost close to nothing. On twitterapi.io, profile lookups cost $0.18 per 1,000 profiles (18 credits each), and tweet reads cost $0.15 per 1,000 tweets, with a 15-credit minimum ($0.00015) per request. One run of the script makes three or four profile lookups, one timeline page and one to three search pages, so it costs a fraction of a cent: a quiet-day search that finds nothing is billed at the $0.00015 minimum, and a full 20-post page costs $0.003.

Readtwitterapi.ioOfficial X API pay-per-usage
1,000 posts$0.15$5.00 ($0.005 per post read)
1,000 profiles$0.18$10.00 ($0.010 per user read)
SetupAPI key, no X account neededDeveloper account and app

The X figures come from X's pay-per-usage rate card at docs.x.com/x-api/getting-started/pricing; per 1,000 posts the ratio is $5.00 / $0.15, about 33x. If you wanted to run the check continuously, the polling floor is the number to know: one empty search every 5 minutes for a month is about $1.30, every 60 seconds about $6.48. New accounts that pass the automatic bot check get up to $1 of free credits (at most 100,000 credits, no card, one per person or network, expiring after 31 days), which covers thousands of runs; see the pricing page for subscriptions.

09 — Section

How we collected this

Question. How do people report an X outage on X itself, how does an outage day compare with a quiet one, and how much of the "X is down" chatter is a real outage report?

Query. ("twitter down" OR "x down" OR "is x down" OR "is twitter down" OR "x is down" OR "twitter is down" OR "x.com down") -filter:retweets through /twitter/tweet/advanced_search with queryType=Latest, one query per UTC clock hour using since_time: and until_time:, up to two pages per hour, and to the end of the results for the two outage hours that filled two pages.

Windows and sample. The 24 most recent complete hours at collection time (40 posts); a quiet Monday one week before the outage, 06:00 to 20:00 UTC (12 posts); and June 22, 2026, 06:00 to 20:00 UTC (212 posts). All 52 quiet-window posts and a random 100 outage-window posts were read and labeled by hand into six mutually exclusive categories. Collected in 2026, 105 requests in total including query tests and the control-account probes, about $0.08.

What it cannot show. Counts are the posts the search returned, not every post on X; search completeness for older windows is not guaranteed, and the 15:00 UTC outage hour hit our page limit, so it is a lower bound. One outage is one example: outages that start at night in the US, or that break only one app, will look different. Labels are one reader's judgment on a small sample. The threshold in the script is a heuristic, not a detector.

Privacy. The search authors are mostly private individuals. Raw search results were not kept with the study; the published sample holds only de-identified rows (period, hour, language, reply flag, text length, label) with no post IDs, links, text or handles. Only X's own organization accounts are named.

python
"""is_x_down.py - is X (Twitter) down for everyone, or just for you / your account?

Three probes through twitterapi.io, none of which touch your phone, browser, cookies or X session:
  1. control accounts: can X serve @Support and @XDevelopers profiles right now?
  2. your account(s): does X serve the handle you care about, and its latest posts?
  3. chatter: how many "is X down" style posts appeared in the last 15 minutes?
Prints a verdict: platform-wide, account-level, or local (device / network).

    pip install requests
    export TWITTERAPI_IO_KEY=...   # from twitterapi.io/dashboard
    python is_x_down.py yourhandle
"""
import os
import sys
import time

import requests

BASE = "https://api.twitterapi.io"
HEADERS = {"X-API-Key": os.environ["TWITTERAPI_IO_KEY"]}
CONTROLS = ["Support", "XDevelopers"]
CHATTER = ('("twitter down" OR "x down" OR "is x down" OR "is twitter down" '
           'OR "x is down" OR "twitter is down" OR "x.com down") -filter:retweets')
# Calibrated on our own sample (collected in 2026): about 1.7 matching posts an hour on a
# quiet day, 111 in the first 15 minutes of the June 22, 2026 outage. Tune for your use.
SPIKE_15_MIN = 20


def get(path_url, params, tries=3):
    """GET with a short backoff on 429 / 5xx. Returns (http_status, json_or_None)."""
    for attempt in range(tries):
        try:
            r = requests.get(path_url, headers=HEADERS, params=params, timeout=20)
        except requests.RequestException:
            status, body = 0, None
        else:
            status = r.status_code
            body = r.json() if "json" in r.headers.get("content-type", "") else None
            if status == 200:
                return status, body
        if status not in (0, 429, 500, 502, 503, 504):
            return status, body
        time.sleep(2 ** attempt)
    return status, body


def profile(handle):
    status, body = get(f"{BASE}/twitter/user/info", {"userName": handle})
    if status != 200 or body is None:
        return "unreachable", status
    if body.get("status") != "success" or not body.get("data"):
        return "not_served", body.get("msg")   # e.g. "user not found"
    return "ok", body["data"].get("statusesCount")


def latest_post(handle):
    status, body = get(f"{BASE}/twitter/user/last_tweets", {"userName": handle})
    if status != 200 or body is None or body.get("status") != "success":
        return None
    tweets = (body.get("data") or {}).get("tweets") or []
    return tweets[0]["createdAt"] if tweets else "no recent original posts"


def chatter_last_15_min(max_pages=3):
    since = int(time.time()) - 900
    params = {"query": f"{CHATTER} since_time:{since}", "queryType": "Latest"}
    count, cursor = 0, None
    for _ in range(max_pages):
        if cursor:
            params["cursor"] = cursor
        status, body = get(f"{BASE}/twitter/tweet/advanced_search", params)
        if status != 200 or body is None:
            return None
        count += len(body.get("tweets", []))
        if not body.get("has_next_page"):
            break
        cursor = body.get("next_cursor")
    return count


def main(handles):
    controls = {h: profile(h) for h in CONTROLS}
    yours = {h: profile(h) for h in handles}
    chatter = chatter_last_15_min()

    for h, (state, detail) in {**controls, **yours}.items():
        print(f"@{h:<15} {state:<12} {detail}")
    for h in handles:
        print(f"@{h:<15} latest post: {latest_post(h)}")
    print(f"'X is down' posts in the last 15 min: {chatter if chatter is not None else 'search failed'}")

    controls_ok = all(state == "ok" for state, _ in controls.values())
    if not controls_ok or (chatter is not None and chatter >= SPIKE_15_MIN):
        print("VERDICT: likely platform-wide. Check developer.x.com/status (API) and wait.")
    elif any(state != "ok" for state, _ in yours.values()):
        print("VERDICT: X is up, but not serving that account: rename, lock, suspension or deactivation.")
    else:
        print("VERDICT: X is serving these accounts. The problem is local: app, browser, network, or your session.")


if __name__ == "__main__":
    main(sys.argv[1:] or ["XDevelopers"])
10 — Questions

Questions readers ask

Is X.com down right now?

This page is static, so it cannot say. Check three things: an outage tracker such as Downdetector for a sharp spike, X search (Latest tab) for several fresh "is X down" posts a minute, and X on a second device and network. For the X API, developer.x.com/status shows endpoint success rates refreshed every 60 seconds.

Does X have an official status page?

Only for developers. developer.x.com/status shows the success rate of each X API endpoint, and docs.x.com/incidents lists past incidents with UTC times. There is no consumer status page for the app or website, and the old api.twitterstat.us address now redirects to a retired page.

Why does X work for my friends but not for me?

Then X is up and the problem is yours: your app or browser, your network or ISP, or your account. Try mobile data instead of Wi-Fi, a private browser window, or another device. If X works there, it is local. If your own account fails everywhere while other profiles load, it is account-level: a read limit, a lock or a suspension.

Does "Rate limit exceeded" mean X is down?

No. It means your session hit a cap. X introduced daily reading limits on July 1, 2023, and users who hit them saw "Rate limit exceeded"; because many hit them at once, it looked like an outage. For the X API, HTTP 429 means "Rate limit or usage cap exceeded" on your credentials.

How can I tell if my X account is suspended or just X being down?

Open x.com/Support in a private window without signing in, or ask someone to load your profile. If X's support account loads and yours shows a suspension notice, it is your account; X explains appeals at help.x.com/en/managing-your-account/suspended-x-accounts. If nothing loads, check for an outage.

How long do X outages usually last?

It varies. X's incident log records, for example, a site-wide API degradation on June 22, 2026 from 12:00 to 15:41 UTC and a Recent Search outage on June 17, 2026 from 02:20 to 03:45 UTC. In our measurement of the June 22 outage, the burst of "is X down" posts peaked within about 15 minutes and faded within roughly two hours.

Is Downdetector accurate for X?

It is fast and useful for spotting a spike, but it counts user reports, not failures. Our sample shows how noisy the underlying chatter is: on a quiet day only 21% of "twitter down" / "x down" posts were real outage reports. Use a tracker together with a second device or network, not alone.

How do I check if the Twitter (X) API is down?

Look at developer.x.com/status for degraded endpoints, then look at your HTTP codes: 500, 502, 503 and 504 point to X, while 401, 403 and 429 point to your credentials, access level or rate limits. A second path such as twitterapi.io, which needs only an API key, lets you check whether X data is reachable independently of your own app.

11 — Further reading

Continue

Sources & further reading
More from this series
Build it

Stop reading. Start building.

Starter credits cover real testing on real data. Google sign-in, no card, no application queue.

Get an API key