Twitter (X) Direct Message Limit: the Daily DM Cap, Who Can Message You, and Why DMs Fail to Send

By TwitterAPI.io Team•16 min read
Diagram of the four gates an X direct message must clear: your daily cap, the recipient's message settings, the message requests inbox, and the XChat app
A DM has to clear four gates in order. Gate 2 numbers come from our lookup of 1,042 public profiles, collected in 2026.

This page is for the person whose DM just would not send, or who wants to know how many direct messages X lets them send before it stops them. It is not the guide to automated greetings for new followers: that is our page on the Twitter welcome message (/blog/twitter-welcome-message), which covers the welcome-message API's status and a one-message-per-follower bot. Here we cover the limits themselves, the settings on the other side, and the error messages.

"Twitter DM limit" means at least four different things to the people who search it: the daily number of messages you can send, the lower allowance on unverified accounts, the rule that someone you do not follow may not accept your message at all, and the size limits on group chats. X publishes some of these numbers and not others. Below, each one is sourced to X's help center, to posts by X and its staff that we read this session, or to docs.x.com, and where X has not published a number we say so instead of repeating a figure that circulates without a source.

We also measured the limit nobody publishes: how many accounts actually accept a DM from a stranger. Using the canDm field on 1,042 public X profiles, we found the share falls from 47.0% for accounts with 10,000 to 100,000 followers to 14.8% for accounts above 10 million.

01 — Section

Every X (Twitter) DM limit in one table

The table lists each limit, who it applies to, the number if X publishes one, and where it comes from. "Not published" means we could not find the number on any X page or post we read; figures that circulate on third-party sites without a source are left out.

LimitApplies toNumberSource
DMs sent per dayEvery account, all devices and apps500X help center, X limits page
DMs sent per day, unverifiedAccounts without a check markLower than 500, not published@TwitterSupport, July 2023
Temporary reductionsEvery account, at peak loadNot publishedX help center, X limits page
Who may message youSet by the recipientEveryone, verified, subscribers, or follows onlyX posts, help center
XChat group chat sizeGroup chats350, raised to 500; 1,000 is the stated targetPosts by X's head of product, April 2026
Official API DM sendsPer user token1,440 per 24 h, 15 per 15 mindocs.x.com rate limits
Official API DM block / unblockPer user token10 per 15 min, 400 per 24 hdocs.x.com rate limits

The 500-a-day figure. X's help center page on limits (help.x.com/en/rules-and-policies/x-limits) lists "Direct Messages (daily): The limit is 500 messages sent per day." The same page says the limits include actions from all devices, including web, mobile, phone and API, and that they may be temporarily reduced during periods of heavy site usage, in which case X posts an update on its status site. The help center blocks automated fetching, so we confirmed the wording through two independent reproductions of the page, including The Register's May 2026 article on X's tightened free-account limits, which quotes the same line.

What the page does not say. It gives no separate DM number for unverified accounts, no number for Premium tiers, and no character limit for a single message. Third-party guides fill these gaps with figures that do not trace back to X; we leave them out rather than repeat them.

Do not confuse it with the post limits. The same help page caps unverified accounts at 50 original posts and 200 replies a day, and follows at 400 a day. Those are separate counters; sending DMs does not use up your posts, and the reverse. If your problem is a post that will not publish, see our page on why a tweet fails to send (/blog/tweet-failed-to-send).

02 — Section

How many DMs can you send on Twitter a day? Verified vs unverified

Verified accounts (Premium, Business, Government): up to the 500-per-day ceiling, as far as X has published. X has never said that paid tiers get more than 500, and we found no X post that does.

Unverified accounts: less. The change was announced by X's support account in July 2023, quoted by Fortune at the time: "We'll soon be implementing some changes in our effort to reduce spam in Direct Messages. Unverified accounts will have daily limits on the number of DMs they can send. Subscribe today to send more messages." No number was given then, and none has been published since. In practice the limit is a moving target that X adjusts as part of its spam work.

The other half of the verification gap is reach, not count. In May 2026, Nikita Bier, X's head of product, replied to an unverified user: "You can't even DM half of the site without verification." That matches what message-request settings allow: a recipient can accept requests from verified accounts only, and an unverified sender cannot reach them at all, no matter how few messages it has sent that day.

When does the DM limit reset? The help center says that for time-based limits such as DMs you can try again after the time limit has elapsed, and that X tells you with an error which limit you hit. It does not say whether the window is a rolling 24 hours from your first message or a fixed daily reset. If you hit it, the safe assumption is a full 24 hours from the burst that triggered it; sending more attempts in the meantime does not help and can look like the spam the limit exists to stop.

Replies inside an existing conversation count too. The limit is on messages sent, not on new conversations. A long back-and-forth with one person uses the same allowance as 500 first messages to 500 people, but the second pattern is the kind of DM spam X says its limits exist to curb.

03 — Section

Who can DM you: message requests, verified-only and subscriber settings

Every X account decides who may start a conversation with it. People you follow can always message you. For everyone else the recipient's settings decide; X's safety account pointed in 2023 to Settings, Privacy and safety, Direct Messages and the option "Allow message requests from everyone", and the inbox can also be limited to verified accounts. Since September 2023 creators can allow DMs only from their subscribers, which X announced as "creators now have the option to always (or only) allow DMs from subscribers". X's head of product suggested exactly that to a large account in 2025 as a defense against DM spam.

Message requests. A message from someone you do not follow does not land in your main inbox. It goes to Message Requests, where you accept, delete or report it. A message that was delivered but never answered usually sits there, which is why "I sent it but they never saw it" is so common. X's head of product said in 2026 that a redesigned Message Requests view was in testing.

Blocks and DM blocks. If someone blocked you, you cannot message them. Since September 2024 X also has a DM-only block (X's announcement: "DM block now live, for when you want to still hear someone's thoughts, just not directly"), so you can be able to see and reply to someone's posts and still be unable to DM them.

canDm is how this shows up in data. X's profile data carries a boolean that says whether the profile accepts DMs from accounts it does not follow. Our API returns it as canDm on /twitter/user/info and /twitter/user/batch_info_by_ids. X does not document the field, and it may be computed relative to the account doing the lookup rather than to you, so treat it as "open to strangers" and still expect your own send to fail if the account allows only verified senders and you are unverified.

04 — Section

The limit nobody publishes: 41.5% of public accounts accept DMs from strangers

We looked up 1,042 public profiles with at least 10,000 followers (median 64,899) that twelve organization accounts follow: @NASA, @nytimes, @Reuters, @BBCWorld, @NBA, @NFL, @premierleague, @UN, @Google, @Microsoft, @espn and @Spotify. These are the accounts people most often try to reach by DM: brands, teams, agencies, newsrooms, journalists and athletes. 432 of them, 41.5%, had canDm true.

VerificationProfilesAccept DMs from non-followers
Business (gold check)19838.9%
Government (gray check)12817.2%
Blue check only40046.0%
No check31647.2%
All1,04241.5%

Size matters more than the badge. Openness falls steadily with audience: 47.0% of accounts with 10,000 to 100,000 followers accept DMs, 39.9% at 100,000 to 1 million, 24.8% at 1 to 10 million and 14.8% (4 of 27) above 10 million. Within blue-check accounts the drop is sharper still: 52.0% open at 10,000 to 100,000 followers, 22.0% at 1 to 10 million.

Government accounts are the most closed. Only 17.2% of gray-check accounts accept DMs, and 4.2% of those with 1 to 10 million followers do. Agencies route contact through forms and press offices, and their DM settings reflect it. Accounts that carry an affiliate badge (a small logo of the organization they belong to) were open 28.7% of the time, against 43.8% without one.

Only 26 of the 1,042 profiles were protected and none carried the automated-account label, so the closed inboxes are a choice, not an artifact of private accounts.

Bar charts of the share of 1,042 X profiles that accept DMs from non-followers: Business 38.9%, Government 17.2%, Blue check only 46.0%, no check 47.2%; by followers from 47.0% down to 14.8%
Share of public profiles with canDm true by verification type and follower count. 1,042 profiles, collected in 2026.
05 — Section

Newsrooms keep DMs open, agencies close them

Split by the organization that follows them, the communities differ more than the tiers do. Profiles followed by @nytimes, mostly its reporters and editors, were open 72.6% of the time: journalists tend to want tips. Those followed by @Reuters were at 52.6%. At the other end, the agencies and missions followed by @UN (18.9%) and @NASA (21.1%) mostly do not take messages from strangers.

Followed byProfilesAccept DMs
@nytimes9572.6%
@Reuters9552.6%
@NFL9547.4%
@Microsoft9547.4%
@Google9540.0%
@espn9534.7%
@NASA9521.1%
@UN9518.9%

What this means for you. If the account you want to reach is a government body or has millions of followers, expect a closed inbox and use its published contact route. If it is a reporter, a mid-size creator or a team account, a DM has roughly even odds of being accepted as a request, and a short, specific first message is what decides whether it gets read.

Bar chart of the share of profiles accepting DMs by the organization that follows them, from 72.6% for @nytimes to 17.6% for @BBCWorld
canDm share among public profiles followed by each of 12 organization accounts, collected in 2026. @BBCWorld follows only 17 such profiles.
06 — Section

Message failed to send on Twitter (X): causes and fixes

"Message failed to send", "Message not sent" and a red exclamation mark next to a DM are the same family of failure. Work through the causes in this order; the first three explain most cases.

1. The recipient does not accept your message. They allow requests only from people they follow, only from verified accounts, or only from subscribers. Fix: none from your side, other than following the account and waiting for a follow back, or getting verified if their setting is verified-only. Check canDm on their profile before you write a long message.

2. You are blocked or DM-blocked. A full block or the DM-only block stops delivery. Fix: none; respect it and do not try from a second account.

3. You hit the daily limit. The 500 ceiling, or the lower unpublished one on unverified accounts. X says the error names the limit. Fix: stop and wait until the window has passed; repeated retries extend the problem.

4. The app is out of date or mid-migration. X moved DMs to the new encrypted XChat in late 2025 and asked users to update their apps to see Chat and legacy DMs in one inbox; an old app build can fail to send into converted conversations. Fix: update the X app or use the standalone XChat app, then try again.

5. Your account is limited. If X has temporarily restricted the account (a verification prompt, a locked-account screen, a spam warning), DMs are among the first features to fail. Fix: complete the verification X asks for, then send slowly. Our page on the "request looks like it might be automated" error (/blog/twitter-request-looks-like-it-might-be-automated-error-226) covers that screen.

6. X has lowered limits or is having trouble. The help center says limits may be temporarily reduced during heavy site usage and that X posts an update on its status site when it does. Fix: check the status site and try later.

7. Group chat full. Adding someone to a group fails once it reaches the member limit (see the next section).

07 — Section

XChat and encrypted DMs: what changed for the limits

X replaced its old direct messages with XChat, an encrypted messaging system with file transfers and audio and video calls. Elon Musk described it in November 2025 as "our new communications system that has replaced the old Twitter DMs". X announced the rollout on iOS and web the same month ("update your X app to access Chat and your legacy DMs in one unified inbox"), launched a standalone XChat app on iOS in April 2026 and on Android in June 2026. Nikita Bier said the migration to encrypted DMs took three months.

Group chats grew. On April 22, 2026, X announced joinable links for group chats "with support for 350 members per chat (and growing)" and said it would deprecate X Communities on May 6. A day later Bier wrote that group chat limits would rise to 500 members "tomorrow" and that X aimed to reach 1,000 within weeks. We did not find a later post confirming 1,000, so 500 is the last confirmed figure.

What did not change. None of X's XChat announcements we read mentions a new daily send cap, so the 500-per-day figure on the help center is still the published ceiling. X's head of product said in October 2025 that after purging reply-spam bots X would be "focusing on DM spam next"; tighter enforcement is more likely to show up as accounts being limited than as a new published number.

For developers. X's developer account announced in March 2026 that the X Activity API delivers events for XChat DMs. The official DM endpoints and their limits are covered below.

08 — Section

DM limits for developers: the official X API and twitterapi.io

If you send DMs from code, a second set of limits applies on top of the account's own. On the official X API (docs.x.com/x-api/fundamentals/rate-limits), each of the three send endpoints allows 15 requests per 15 minutes and 1,440 per 24 hours per user, and the app as a whole 1,440 per 24 hours. DM event lookups are 15 per 15 minutes. On the pay-per-usage rate card (docs.x.com/x-api/getting-started/pricing), a DM interaction create costs $0.015 per request and a DM event read $0.010 per resource. These limits do not raise the 500-a-day account limit; the help center counts API sends against it too.

Official X API (pay-per-usage card)twitterapi.io
Check who accepts DMsUser read $0.010 per user ($10 per 1,000)canDm on /twitter/user/batch_info_by_ids, $0.18 per 1,000 profiles; no X account needed
Send a DMPOST /2/dm_conversations/with/:participant_id/messages, $0.015 per DM interactionPOST /twitter/send_dm_to_user, 60 credits = $0.0006 per call, after a $0.10 login
Published send limit15 per 15 min, 1,440 per 24 h per usernone of its own; the account's X limits apply
Who is actingYour app, with a user tokenYour account itself, through its logged-in session

For reads the gap is the familiar one: $0.005 per post read on X's card is $5 per 1,000 tweets, against $0.15 per 1,000 on twitterapi.io, about 33x, and the profile lookups above are about 55x apart. Pay-per-usage on X is capped at 3 million post reads a month.

Sending through twitterapi.io. send_dm_to_user exists for replying to people who messaged you or for one-to-one conversations you would otherwise type by hand. You log in once with /twitter/user_login_v2 ($0.10, with a proxy you supply) to get login_cookies, then each send is $0.0006. The call acts as that account, so X can rate-limit, lock or suspend it; keep a human pace; the session can need a re-login; and every call that returns HTTP 200 is billed, including ones whose body says status: "error". The endpoint's own documentation says you can only send DMs to people who have enabled them. It is not a way around the 500-a-day limit, and it is not for messaging lists of people who never asked to hear from you.

The useful part is the read side. Before anyone writes to a list of partners, reporters or customers by hand, a canDm lookup tells them which inboxes are open. The script at the end of this page audits the accounts any handle follows and prints the open share by verification type, without sending anything.

bash
# Is this account open to DMs from non-followers? (18 credits)
curl -s "https://api.twitterapi.io/twitter/user/info?userName=nytimes" \
  -H "X-API-Key: $TWITTERAPI_IO_KEY" | jq '.data | {userName, canDm, protected, verifiedType, followers}'
09 — Section

How we collected this

Question. What share of public X accounts accept direct messages from accounts they do not follow, and how does it change with verification type and audience size?

Accounts. 1,042 public profiles with at least 10,000 followers, taken from the accounts followed by twelve organization accounts: @NASA, @nytimes, @Reuters, @BBCWorld, @NBA, @NFL, @premierleague, @UN, @Google, @Microsoft, @espn and @Spotify (up to 95 per organization; @BBCWorld follows only 17 qualifying accounts, @premierleague 75). Each profile is counted once, under the first organization it appeared for.

Method. GET /twitter/user/followings supplied the ids only, because that list's own DM field is a placeholder; every profile was then read with GET /twitter/user/batch_info_by_ids, 100 ids per request, for canDm, verifiedType, isBlueVerified, followers, protected, isAutomated and createdAt. Business and Government come from verifiedType; "Blue check only" is isBlueVerified without a type.

Window and size. A single snapshot, collected in 2026: 34 requests, 1,042 profiles.

What the sample cannot show. It is not a random sample of X: it covers accounts large organizations follow, which skew toward media, sports, tech and government. canDm reflects the account's setting as seen by the account doing the lookup, so a verified-only inbox can read as open to one viewer and closed to another. It says nothing about how many DMs any account sends, and X's daily DM limits cannot be measured from public data.

Privacy. Aggregates only. No individual profile is named here except the twelve organizations used as seeds; raw lookups were not published, and the de-identified rows keep only verification type, follower bucket, account-age bucket and the DM flag.

python
import requests

API_KEY = "YOUR_TWITTERAPI_IO_KEY"   # from https://twitterapi.io/dashboard
BASE = "https://api.twitterapi.io"
HEADERS = {"X-API-Key": API_KEY}


def followings(user_name, max_pages=5):
    """Accounts that user_name follows, ~200 per page. Used only as a source of ids:
    the list's own can_dm field is not reliable, so we re-read canDm on the profile."""
    cursor, ids = "", []
    for _ in range(max_pages):
        r = requests.get(f"{BASE}/twitter/user/followings", headers=HEADERS,
                         params={"userName": user_name, "pageSize": 200, "cursor": cursor}, timeout=30)
        r.raise_for_status()
        body = r.json()
        ids += [u["id"] for u in body.get("followings", [])]
        if not body.get("has_next_page"):
            break
        cursor = body.get("next_cursor") or ""
    return ids


def profiles(ids):
    """Full profiles, 100 ids per request, 18 credits per profile returned."""
    out = []
    for i in range(0, len(ids), 100):
        r = requests.get(f"{BASE}/twitter/user/batch_info_by_ids", headers=HEADERS,
                         params={"userIds": ",".join(ids[i:i + 100])}, timeout=30)
        r.raise_for_status()
        out += r.json().get("users", [])
    return out


def dm_audit(user_name):
    users = profiles(followings(user_name))
    open_dm = [u for u in users if u.get("canDm")]
    print(f"{len(open_dm)} of {len(users)} accounts @{user_name} follows accept DMs from non-followers")
    by_type = {}
    for u in users:
        t = u.get("verifiedType") or ("Blue" if u.get("isBlueVerified") else "none")
        n, k = by_type.get(t, (0, 0))
        by_type[t] = (n + 1, k + (1 if u.get("canDm") else 0))
    for t, (n, k) in sorted(by_type.items()):
        print(f"  {t:<12} {k}/{n} open ({k / n:.0%})")
    # Check one account before you write to it by hand:
    r = requests.get(f"{BASE}/twitter/user/info", headers=HEADERS, params={"userName": user_name}, timeout=30)
    data = r.json().get("data") or {}
    print(f"@{user_name} itself: canDm={data.get('canDm')} protected={data.get('protected')}")


if __name__ == "__main__":
    dm_audit("nytimes")
10 — Questions

Questions readers ask

How many DMs can you send on Twitter per day?

X's help center lists 500 direct messages sent per day as the account limit, counted across all devices and the API. Unverified accounts have had a lower daily limit since July 2023, and X does not publish that number. X may also lower limits temporarily when the site is under heavy load.

Do verified accounts get a higher DM limit?

Verified accounts are not subject to the lower unverified limit, but X has not published any DM allowance above 500 a day for Premium or Business. Verification mainly changes reach: many accounts accept message requests only from verified senders, which X's head of product summarized in 2026 as "you can't even DM half of the site without verification".

When does the Twitter DM limit reset?

X's help center says that for time-based limits like DMs you can try again after the time limit has elapsed, and that the error tells you which limit you hit. It does not say whether the window is a rolling 24 hours or a fixed reset time, so plan on a full 24 hours from the burst that triggered it and stop sending until then.

Why does my message say failed to send on X?

The most common causes are that the recipient only accepts messages from people they follow, from verified accounts or from subscribers; that you are blocked or DM-blocked; that you hit the daily limit; or that your app is out of date after the move to XChat. Less often your account is temporarily limited, a link in the message is rejected, or X has an outage.

Can I DM someone who does not follow me on Twitter?

Only if their settings allow message requests from you. The message then goes to their Message Requests folder until they accept it. In our 2026 lookup, 41.5% of public profiles with 10,000+ followers accepted DMs from accounts they do not follow, falling to 14.8% above 10 million followers.

How many people can be in an X group chat?

X announced group chat links with 350 members per chat in April 2026, and its head of product said the next day that the limit would rise to 500, with 1,000 as the goal. We found no later X post confirming 1,000, so 500 is the last confirmed figure.

What are the DM limits on the official X API?

Each DM send endpoint allows 15 requests per 15 minutes and 1,440 per 24 hours per user, per X's rate limit documentation, and a DM interaction costs $0.015 on the pay-per-usage card. The account's own 500-a-day limit still applies to messages sent through the API.

Can I check whether an account accepts DMs before messaging it?

Yes. The profile's canDm field says whether it accepts DMs from accounts it does not follow. twitterapi.io returns it on /twitter/user/info and /twitter/user/batch_info_by_ids for $0.18 per 1,000 profiles, with no X account needed. It reflects the setting as seen by the lookup, so a verified-only inbox can still reject an unverified sender.

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

Already building with TwitterAPI.io? Publish an honest tutorial or build log about it and earn up to $200 a month in API credits.