Video sent in an X Direct Message has its own set of caps: X's developer documentation lists 140 seconds and 512 MB for a default account, and 10 minutes and 1 GB for a Premium or verified account. Those are not the same numbers X publishes for video on a Post, and they are not derived from them.
That distinction is the whole point of this page. If you searched for "X video size limit" and got 8 GB or 16 GB, you read the Post figures. A DM is a different media category with a different ceiling, and using the Post numbers to plan a DM upload is how people end up with a clip that finalizes and then refuses to send.
The DM limits, at a glance
X's media documentation organizes limits by media_category — a parameter that names what the file is going to be used for. Direct message media gets its own rows, quoted verbatim from X's chunked-upload category table:
| Category | Use for | Default account | X Premium / verified |
|---|---|---|---|
dm_video | Video in a Direct Message | 140 s / 512 MB | 10 min / 1 GB |
dm_image | Image in a Direct Message | 5 MB | 5 MB |
dm_gif | Animated GIF in a Direct Message | 15 MB | 15 MB |
X's best-practices page states the same video row with a lower bound attached: for default accounts, "Video in a DM dm_video 0.5–140 seconds 512 MB"; for Premium and verified accounts, "Video in a DM dm_video 0.5 seconds–10 minutes 1 GB". The introduction page spells out the free duration as "140 seconds (2 min 20 sec)".
For contrast, the same tables put video on a Post at 20 minutes and 8 GB by default, and 125 minutes and 16 GB for Premium.
One coincidence worth naming so it does not confuse you: 140 seconds and 512MB are also the figures X's help centre gives for free Post video — "you can still upload videos up to 140 seconds long with a maximum file size of 512MB" — while the developer docs give free Post video as 20 minutes and 8 GB. Those two official pages disagree about Posts; the DM row is quoted the same way on both developer pages. We cover that conflict in full in how long a video can be on X.
Why DMs get a separate cap at all
The mechanism is the media_category parameter, and X describes its job directly: "The Media Category parameter defines the use case of the media file to be uploaded, and can affect file size limits or other constraints enforced for media uploads. It's important to use the correct media category when uploading media to avoid problems when trying to use the media."
Two consequences follow, both stated by X rather than inferred.
First, the category is optional, and the default is a Post. X: "It is an optional value passed in the INIT request as part of the upload flow. If media category is not specified, the uploaded media is assumed to be media for a Post (tweet_image, tweet_video, or tweet_gif), depending on the content type."
Second, the upload and the send are checked separately. X: "Upload limits and Post-create limits are separately enforced. A media_id that finalized successfully can still be rejected by POST /2/tweets." And on the specific failure this causes: "Using the wrong category (for example a DM category on a Post) is a common reason an upload succeeds and Post create then fails."
That is the answer to the most frustrating version of this problem — the progress bar reaching 100% and the send failing anyway. The bytes went up fine. The second check, the one that knows where the media is going, is the one that said no.
X also notes whose limits apply, in the context of uploading through its API: "Limits follow the authenticated user (X Premium / verified status), not your developer API plan." The comparison X is drawing there is between the account and the developer plan — it says nothing about the web or mobile apps.
What to do when your DM video is over the cap
If the length is inside the ceiling and the file size is not, re-encoding at a lower bitrate is the direct fix, and X endorses that approach in its own upload troubleshooting: "Re-export your video file in a smaller size. An easy way to do this is to reduce the bitrate." The same page adds a caveat that explains otherwise-baffling failures: "Even if your file is under our maximum size, we may still have issues ingesting the file." (That guidance is written for X Ads uploads, but the advice is about your file, not X's uploader.)
Try it right here
Runs in your browser. Your file is not uploaded anywhere.
This runs entirely in your browser tab — the file is read from disk, re-encoded locally, and handed back. Nothing is uploaded to a server, which matters more than usual for DM content, since a direct message is by definition something you chose not to post publicly.
If your source is a QuickTime file from a Mac or an iPhone, MOV to MP4 converts the container in the same local way. Both video/mp4 and video/quicktime appear in the MIME type list X's upload API accepts at initialize.
Gotchas specific to DM media
There are hard encoding requirements in the API documentation. X's media best-practices page lists them under "Advanced", as constraints on media uploaded through the API. The page does not break them out by media_category, so it does not say whether a dm_video upload is judged against the same list — but the requirements are stated in absolute terms: pixel aspect ratio "must have 1:1"; "Only YUV 4:2:0 is supported"; audio "must be AAC with Low Complexity profile. (High-Efficiency AAC is not supported)"; audio "must be mono or stereo, not 5.1 or greater"; the file "Must not have open GOP" and "Must use progressive scan". X does not publish what error each violation produces, so treat these as a checklist rather than a diagnosis.
Large files are meant to be chunked. X's chunked upload guide says to "Keep each segment at or below 5 MB (the server maximum is 8 MB)", indexed from 0, and lists the benefits as improved reliability on slow networks, pausable and resumable uploads, and individually retryable chunks. Processing runs through the states pending to in_progress to succeeded or failed.
Videos you send in a DM may be downloadable. X: "Starting with version 10.24 of the Android and iOS apps, videos you send in a Direct Message will be downloadable unless you opt out by disabling the Allow video to be downloaded option while sending a Direct Message." Older app versions are covered too: "Videos sent with app versions < 10.24 will not be downloadable."
X Chat is not documented here. X's media docs index lists endpoints for chat media, but X has not published limit figures for them on the pages cited above — check the official documentation before assuming the DM numbers carry over.
FAQ
What is the video size limit for X DMs? 512 MB on a default account and 1 GB with X Premium or verified status, per X's developer media documentation. Duration is capped alongside it at 140 seconds and 10 minutes respectively.
Why is the DM limit so much smaller than the Post limit?
X does not explain the reasoning, but it does state the mechanism: the media_category you upload under determines which caps apply, and dm_video is a separate category from tweet_video. Post video is documented at 20 minutes / 8 GB default and 125 minutes / 16 GB for Premium.
My upload finished and then failed to send. What happened? X says upload limits and post-create limits are "separately enforced", and that a media file which finalized successfully can still be rejected at the next step — with the wrong media category named as a common cause. Finishing the upload is not confirmation that the media is usable where you intend to use it.
Does Premium raise the DM image or GIF limit?
No. X's tables list dm_image at 5 MB and dm_gif at 15 MB in both the default and the Premium column. Only video changes between tiers.
Can I send a longer video by uploading it a different way? The documented caps follow the account, not the tool: X states that limits "follow the authenticated user (X Premium / verified status), not your developer API plan." If a clip is longer than the DM ceiling, shortening or splitting it is the option; see X's video too long error for the Post-side version of the same wall.
How do I check the file size before sending? Look at the size on disk — that is the figure being measured. Compress it first if it is close to the cap, and browse all Clapr tools for format conversion and audio extraction.
Figures cited from X's media documentation and help centre, checked 16 September 2026. X publishes different numbers for different upload paths — more on that in X's file size limits and the rest of our platform limits guides.