Social media video specs by platform
Video codec, resolution, and duration requirements across every major social platform, in one reference.
H.264 video in an MP4 container is the one combination no platform's publishing API rejects. Beyond that, specs diverge: Instagram Reels caps files at 300MB and 15 minutes, TikTok takes MP4 up to 4GB and 10 minutes, X allows 512MB and 140 seconds, and YouTube accepts up to 256GB. Figures are cross-checked against each platform's developer docs as of August 2026.
H.264-in-MP4 is the safe default across every platform below, and it's the one combination no publishing API will reject. Past that, resolution and container flexibility diverge quickly — and so does how well-documented each platform's actual duration ceiling is. Some platforms state a hard number in their API reference; others cap duration through an account-level policy that never appears in the API schema at all. Both cases are marked below.
Numbers are cross-checked against each platform's own developer documentation as of August 2026. Where a figure comes from PostGate's own enforced ceiling in packages/adapters/src/capabilities.ts rather than a platform's published spec, that's called out — the two aren't always the same number.
PostGate handles OAuth, publishing and delivery evidence for every network through one API. Start free or read the docs.
Video spec reference table
| Platform | Codec / container | Resolution guidance | Max file size | Duration |
|---|---|---|---|---|
| Facebook Pages | H.264/MP4 recommended (mp4, mov accepted) | No hard documented min/max | PostGate enforces 4GB — Meta doesn't currently publish this figure on its own docs, treat as unconfirmed | PostGate enforces 4 hours (14,400s) — also unconfirmed against current Meta docs |
| Instagram (Reels) | H.264/MP4 or MOV | No hard min/max; vertical framing displays best | 300MB (Content Publishing API) | 3s–900s (15 min) |
| Threads | H.264/MP4 or MOV | No hard min/max | 1GB | Up to 300s (5 min) |
| MP4 only | 256×144 to 4096×2304 (Video API) | Up to 5GB (raw Video API upload) | Up to 30 min (1,800s) per LinkedIn's Video API — PostGate currently enforces a more conservative 15 min (900s) ceiling | |
| TikTok | MP4 only | No hard min/max; 1080×1920 recommended | 4GB | Hard 600s (10 min) ceiling via the Upload endpoint; some creators get a higher dynamic ceiling — check creator_info before assuming a fixed number. A documented minimum was not found; PostGate's 3s floor is an operational default, not a confirmed TikTok requirement |
| YouTube | MP4/MOV via PostGate (YouTube's own API accepts several more containers) | No hard min/max in the API schema; up to 8K supported | 256GB (stated directly on the videos.insert reference page) | No duration limit in the Data API itself — see the max-video-length table below for the real (account-policy-based) ceiling |
| MP4 or MOV | No hard min/max; 1000×1500 recommended | 2GB | 4s–900s (15 min) | |
| X (Twitter) | MP4 only | No hard min/max; up to 1920×1200 typical | 512MB (536,870,912 bytes) — reliable for all tiers via the public API | 140s (2:20) — the reliable, documented ceiling for every access tier. A "2 hour / 16GB for Premium" figure circulates online but traces to a single forum post, needs separate Amplify/Ads partner permissioning, and has been reported broken as recently as July 2026 — don't build around it |
| Telegram | MP4 recommended for reliable preview | No documented limit | Depends on delivery method — see notes | No documented duration limit |
| Mastodon | Instance-configurable | Instance-configurable | Instance-configurable | Instance-configurable |
| Google Business Profile | Not supported via API | Not supported via API | Not supported via API | Not supported via API |
Telegram: why does the delivery method change the real ceiling?
Telegram's Bot API documents two different size ceilings depending on how a file reaches Telegram's servers. Sending a file by public URL — where Telegram fetches it — is capped lower: 5MB for photos, 20MB for video and other content. Sending the same file as a direct multipart upload allows more: up to 10MB for photos and 50MB for video and other files.
PostGate delivers Telegram media by the URL-fetch method (sendPhoto/sendVideo with a public URL, which Telegram's own servers then fetch), so the URL-fetch ceilings are the ones that actually apply. PostGate's enforced image limit — 5MB — matches that exactly. Its enforced video limit is currently set to 50MB, which matches Telegram's multipart-upload ceiling rather than the 20MB URL-fetch ceiling PostGate's own delivery path is subject to. In practice: a video between 20MB and 50MB can pass PostGate's own validation and still be rejected by Telegram at actual delivery time.
Can you post video to Google Business Profile via the API?
A 30-second, 75MB, 720p video spec is commonly cited for Google Business Profile — that spec is real, but it applies to the Google Business Profile mobile app and Google Maps, not the Business Profile API that publishing tools like PostGate integrate against. There is no video-upload endpoint in the current Business Profile API; posts created through the API are photo and text only.
How does PostGate handle this?
PostGate's media pipeline probes every video's real codec, resolution, and duration before it reaches a provider, and the platform capability matrix exposes each target's enforced ceiling directly — so a spec mismatch surfaces as an immediate validation error rather than a delivery failure discovered after the fact.
Frequently asked questions
Can X Premium accounts upload 2-hour videos through the API?
Don't build around that. The reliable, documented ceiling for every access tier via the public API is 140 seconds (2:20) and 512MB. A "2 hour / 16GB for Premium" figure circulates online, but it traces to a single forum post, requires separate Amplify/Ads partner permissioning, and has been reported broken as recently as July 2026.
Why can a Telegram video pass validation but still fail at delivery?
Telegram documents two size ceilings: sending by public URL (where Telegram fetches the file) caps video at 20MB, while direct multipart upload allows 50MB. PostGate delivers Telegram media by URL-fetch, but its enforced video limit is currently 50MB — matching the multipart ceiling rather than the 20MB URL-fetch ceiling its delivery path actually uses. A video between 20MB and 50MB can therefore pass validation and be rejected by Telegram.
What is the maximum TikTok video length via the API?
The Upload endpoint enforces a hard 600-second (10-minute) ceiling, but some creators get a higher dynamic ceiling — check creator_info before assuming a fixed number. No documented minimum duration was found; PostGate's 3-second floor is an operational default, not a confirmed TikTok requirement. Container is MP4 only, up to 4GB.
Does the YouTube API limit video duration?
No — there is no duration limit in the Data API schema itself; the real ceiling is account-policy-based rather than API-enforced. What the API does state directly, on the videos.insert reference page, is a 256GB maximum file size, with resolutions supported up to 8K.
