X’s limits split cleanly in two. Text and media limits differ by whether the account has Premium. API limits differ by which access tier the app is on. The 280-character post is the number everyone knows, and it is the least interesting one on this page.
X media and upload limits
These are from X’s own API documentation for chunked media upload, which is the most precise first-party source available for the figures.
| Limit | Default account | Premium / verified |
|---|---|---|
| Video duration | 20 minutes | 125 minutes |
| Video file size | 8 GB | 16 GB |
| Image file size | 5 MB | 5 MB |
| GIF file size | 15 MB | 15 MB |
| Upload chunk size | 5 MB per segment | 5 MB per segment |
Note: Figures here were verified against X’s developer documentation (docs.x.com media upload guide) as of September 2026. Platforms change these without notice.
An upload that passes the media endpoint can still be rejected when you attach it to a post, because X validates the posting account’s entitlements at that point. So a video accepted by the uploader is not proof the post will succeed. This is worth knowing if you are debugging a scheduler: the failure surfaces one step later than the cause.
X post length limits
The standard post limit is 280 characters, and Premium raises it substantially. The full breakdown, including what counts (links, emoji, mentions) and what does not, is in X character limit. The X character counter counts the way X does rather than the way a word processor does, which matters for emoji and non-Latin scripts.
X API posting limits
| Endpoint | Limit |
|---|---|
| POST /2/tweets, per user | 100 requests per 15 minutes |
| POST /2/tweets, per app | 10,000 per 24 hours |
Note: Figures here were verified against X’s API rate limit documentation as of September 2026. Platforms change these without notice.
These are the ceilings on the endpoint, not an entitlement you are guaranteed. What an app can actually do depends on its access tier, and the paid tiers on X’s developer platform have differed sharply in what they allow. Read the per-tier limits for your own app rather than assuming the endpoint maximum applies to you.
For how these compare across networks, see social media API rate limits.
X action limits: the daily read and write caps
X is unusual in that it has, at times, publicly announced blunt daily caps (on posts read per day, for example) through official accounts rather than documentation. That makes them real but also unstable: they were announced as temporary measures and adjusted repeatedly.
Beyond announced caps, the everyday limits on follows, unfollows, likes, and DMs are not documented. X’s help pages describe the existence of limits and the consequences of hitting them without publishing the thresholds. As on every large platform, the enforcement is adaptive rather than a fixed counter:
- Account age and verification status shift the ceiling, and Premium accounts are treated differently from free ones.
- Follow ratio and follower count have historically fed into follow limits, so a small account cannot follow at the pace a large one can.
- Complaint rate from blocks, mutes, and reports reduces headroom, and it does so faster for DMs than for anything else.
- Burst speed matters independently of daily volume.
Numbers circulate widely for all of these. They are unofficial, they are years old in most cases, and X has changed its enforcement more often than any other major platform since 2023. We are not going to restate them as fact.
The short version
- Post text: 280 characters standard, more with Premium.
- Video: up to 20 minutes and 8 GB by default, up to 125 minutes and 16 GB for Premium and verified accounts.
- Images 5 MB, GIFs 15 MB.
- API posting: 100 per 15 minutes per user, 10,000 per 24 hours per app, subject to your access tier.
- Follow, like, and DM limits are not published. Announced daily caps have existed and have changed repeatedly.
Scheduling X posts within these limits
BulkPublish posts to X through the v2 API, so the media and entitlement rules above are enforced by X itself at publish time. Where we can catch a problem earlier we do: the composer counts characters the way X counts them, and rejects an over-length post before it is queued rather than after it fails.
If you publish the same thread to more than one short-form network, cross-posting X to Bluesky covers the differences between the two limits, which are close enough (280 against 300) to catch people out.