Messenger error 100: Video upload timed out or corrupted
Last verified against Meta for Developers - Messenger Platform error codes
Video upload timed out or video is corrupted. Note that if the video can't be fetched within 75 seconds, it will time out.What error 100 means
Code 100 with subcode 2018294 is the video-specific failure, and its message contains the number that matters: "Note that if the video can't be fetched within 75 seconds, it will time out." Two distinct conditions share the subcode: Meta's fetcher could not finish downloading your video inside 75 seconds, or it downloaded something it could not process, a corrupted or unreadable file.
The timeout arithmetic is worth doing explicitly. 25 MB (the attachment cap) in 75 seconds needs a sustained ~2.7 Mbps from your origin to Meta's fetchers; a 24 MB video on a throttled origin, a cold serverless function, or an origin an ocean away from the fetcher will lose that race even though every individual requirement looks satisfied. This is why 2018294 is flaky in the way its siblings are not: the same URL can succeed at 3 a.m. and fail at peak.
The corruption half covers truncated uploads (a file whose transfer to your storage was cut short), exotic codecs in an MP4 container, and files whose moov atom sits at the end so that nothing is playable until the last byte arrives, re-encoding with fast-start fixes that. Sitting behind both halves is the same architectural remedy as for 2018008: upload the video once through the Attachment Upload API, let the slow transfer happen out-of-band, and send the reusable attachment_id at conversation speed.
What it looks like
{
"error": {
"message": "(#100) Video upload timed out or video is corrupted.",
"type": "OAuthException",
"code": 100,
"error_subcode": 2018294,
"fbtrace_id": "BLBz/WZt8dN"
}
}Why it happens
- Video fetch exceeding 75 seconds due to file size, slow origin, or cross-region latency.
- Cold starts or rate-limited egress on the video host at fetch time.
- Corrupted files: truncated transfers, damaged uploads from users.
- Unsupported codecs inside a nominally fine container.
- Non-fast-start MP4s requiring the full file before processing can begin.
How to fix Messenger error 100
- 1Time the download yourself: curl -o /dev/null -w "%{time_total}" from a cloud host; over ~60 seconds means the fetch will be flaky or fail.
- 2Transcode to H.264/AAC MP4 with fast-start (moov atom up front) at conversational bitrate.
- 3Shrink the file: resolution and bitrate reductions buy seconds linearly.
- 4Serve video from a CDN close to Meta's fetchers rather than a single-region origin.
- 5Move to the Attachment Upload API for anything over a few MB and send attachment_id instead of url.
How to stop it recurring
Standardize bot video at ingestion: transcode to fast-start MP4, cap bitrate so the whole file transfers comfortably inside the window, validate playability, then upload for a reusable ID. Send-time URL fetches should be reserved for small images. The 75-second timeout and 25 MB cap sit together in the Messenger limits reference; the fetch-failure family is compared on the 2018008 page.
Official reference: Meta for Developers - Messenger Platform error codes. See all Messenger error codes or the Messenger limits and quotas.
Related codes
- 100: Attachment size exceeds allowable limitAttachment size exceeds allowable limit
- 100: Failed to fetch the file from the URLFailed to fetch the file from the url. Check that the URL is valid, with a…
- 100: Upload attachment failureUpload attachment failure. A common way to trigger this error is that the…
Error 100 - quick answers
What does Messenger error 100 mean?
Code 100 with subcode 2018294 is the video-specific failure, and its message contains the number that matters: "Note that if the video can't be fetched within 75 seconds, it will time out." Two distinct conditions share the subcode: Meta's fetcher could not finish downloading your video inside 75 seconds, or it downloaded something it could not process, a corrupted or unreadable file.
How do I fix Messenger error 100?
1. Time the download yourself: curl -o /dev/null -w "%{time_total}" from a cloud host; over ~60 seconds means the fetch will be flaky or fail. 2. Transcode to H.264/AAC MP4 with fast-start (moov atom up front) at conversational bitrate. 3. Shrink the file: resolution and bitrate reductions buy seconds linearly. 4. Serve video from a CDN close to Meta's fetchers rather than a single-region origin. 5. Move to the Attachment Upload API for anything over a few MB and send…
Stop debugging Messenger by hand
Connect the channel through Conferbot: tokens, webhooks and retries are handled, failures show as readable status.