Telegram publishes one exact, unambiguous spec for story video: 720x1280, streamable, H.265, key frames added each second, MPEG4 container, no larger than 30 MB, and 0-60 seconds long. It applies to stories posted through the Bot API, not to the story you record by tapping the camera in the app.
That scope line is the part most write-ups drop. This page gives you the full spec verbatim, explains what each line constrains, and is explicit about where Telegram publishes nothing.
The requirements, at a glance
Every cell below comes from Telegram's Bot API documentation for InputStoryContentVideo and InputStoryContentPhoto — the objects you pass when a bot posts a story.
| Requirement | Official wording |
|---|---|
| Resolution | 720x1280 |
| Video codec | H.265 |
| Container | MPEG4 |
| Key frames | "key frames added each second" |
| Streaming | "streamable" |
| File size | "must not exceed 30 MB" |
| Duration | "0-60" seconds |
| Reuse | "The video can't be reused and can only be uploaded as a new file" |
| No audio | is_animation: "Pass True if the video has no sound" |
| Story photos | "must be of the size 1080x1920 and must not exceed 10 MB" |
The requirements arrive in a single sentence, and it is a conjunction, not a wish list: the video "must be of the size 720x1280, streamable, encoded with H.265 codec, with key frames added each second in the MPEG4 format, and must not exceed 30 MB." Note the word must, twice in one sentence.
The scope: this is the Bot API, not the app
Telegram's help centre for ordinary users — the FAQ and the Premium FAQ — publishes no corresponding spec for a story recorded or uploaded in the phone app: no resolution, no codec, no size ceiling, no duration.
So the honest summary is:
- Posting a story with a bot? The table above is binding.
- Posting a story from the Telegram app? Telegram does not publish requirements for that path. Check the official documentation rather than assuming the bot figures transfer.
What each requirement actually constrains
720x1280. A single exact frame size, not a minimum and not an aspect ratio range. Telegram does not say what happens to a 1080x1920 video here — but notice that 1080x1920 is the required size for a story photo. The two media types have different mandated dimensions.
H.265. Telegram's MTProto constructor documentAttributeVideo carries a video_codec field documented as "Codec used for the video, i.e. "h264", "h265", or "av1"" — so H.265 is a codec Telegram handles generally. That "i.e." is an example, not a whitelist. What is specific here is that the story object names H.265 as the required codec, and says nothing about any other codec.
MPEG4 format. The container. This is consistent with how Telegram treats video everywhere: sendVideo says "Telegram clients support MPEG4 videos (other formats may be sent as Document)." Note the "may" — that sentence is not a whitelist or a blacklist of containers, only a statement that non-MPEG4 formats can end up displayed as a document.
Key frames added each second. A key frame is self-contained — it does not reference its neighbours — and it is where playback and seeking can start. One per second means a start point within a second of wherever the viewer lands. Telegram's wording sits in the same "must" sentence as the resolution and the size ceiling, so it is a requirement, not a hint.
Streamable. Telegram does not define the term inside this object. The only related statement in the Bot API is sendVideo's supports_streaming parameter: "Pass True if the uploaded video is suitable for streaming." For a precise definition, check the official documentation.
30 MB. Tighter than the Bot API's own general ceiling. Telegram's "Sending files" section says a bot may "Post the file using multipart/form-data in the usual way that files are uploaded via the browser. 10 MB max size for photos, 50 MB for other files." Story video gets 30 MB, so being under 50 MB tells you nothing about whether a story upload will go through.
Duration 0-60. The duration field is documented as "Optional. Precise duration of the video in seconds; 0-60."
No reuse. Elsewhere in the Bot API, resending an existing file by file_id is the cheap path — Telegram says "There are no limits for files sent this way." Stories are carved out of that: the video "can't be reused and can only be uploaded as a new file." Every story upload is a fresh upload, so the 30 MB budget applies every time.
is_animation. A silent video is flagged, not rejected: "Pass True if the video has no sound." This matches a quirk visible at the protocol layer, where nosound_video exists precisely because a video with no audio track would otherwise be handled as an animation rather than a video.
Getting a file that matches
Three things have to be true at once: the frame is exactly 720x1280, the file is under 30 MB, and the clip is 60 seconds or less. Resizing to the required 720x1280 is the step that does most of the work on the file size, since dropping from a 1080-wide frame cuts pixel count substantially.
Try it right here
Runs in your browser. Your file is not uploaded anywhere.
This runs inside your browser tab: the file is read from disk, re-encoded locally and handed straight back, so nothing is uploaded to a third-party server. Start from the plain video compressor for manual control over resolution and bitrate, and see how to compress a video without losing quality for which settings actually move the file size.
One caveat on the codec: the story object names H.265, and Telegram does not document what happens to a file encoded any other way — so check what codec and key frame interval your encoder is actually writing.
Telegram-specific gotchas
Story video is not the same thing as a "video message." Telegram's round video messages are a separate object with separate rules: sendVideoNote sends "a rounded square MPEG4 video of up to 1 minute long", sized by a length parameter that Telegram documents as "Video width and height, i.e. diameter of the video message" — one number, not width by height. Telegram also notes that "Sending video notes by a URL is currently unsupported." None of that is the story spec.
A bot that can post a 30 MB story cannot always download it back. getFile says "For the moment, bots can download files of up to 20MB in size", and the File object repeats it: "The maximum file size to download is 20 MB".
Self-hosting changes different numbers. Running your own Local Bot API Server lets a bot "Download files without a size limit" and "Upload files up to 2000 MB" — Telegram's wording is "2000 MB", not "2 GB". That list does not mention the story content requirements, so do not assume a local server relaxes them; check the official documentation.
Server-side conversion is documented in exactly one place, and it is not stories. Telegram says that "When sending videos to big channels, Telegram will automatically convert them, generating multiple versions in multiple qualities and formats" — and those posts go into a scheduled queue while conversion runs. There is no equivalent statement for story uploads.
The general Telegram file limit is not the story limit. A normal Telegram chat takes files "up to 2 GB in size each (or 4 GB with Premium)". Stories posted via the Bot API get 30 MB. See Telegram's file size limit for the chat-side numbers.
FAQ
What size should a Telegram story video be? For stories posted through the Bot API, Telegram requires exactly 720x1280, under 30 MB, and 0-60 seconds. For stories posted from the Telegram app, Telegram does not publish a spec — check the official documentation.
Does Telegram require H.265 for stories? For the Bot API story object, yes. The documentation says the video must be "encoded with H.265 codec, with key frames added each second in the MPEG4 format". Telegram does not say in that object what happens to other codecs, so check the official documentation.
How long can a Telegram story video be? The Bot API documents the story video duration field as "0-60" seconds.
Why does my story video keep getting rejected? Work through the list: exact 720x1280 frame, H.265 in MPEG4, streamable, a key frame every second, 30 MB or less, 60 seconds or less. Telegram states them as one conjunction, so any one of them can be the failure. Telegram does not publish the error text you will see.
Can I reuse a video I already uploaded for a story?
No. Telegram states that the story video "can't be reused and can only be uploaded as a new file", even though file_id reuse works for other Bot API sends.
What about story photos? Different numbers: "The photo to post as a story. The photo must be of the size 1080x1920 and must not exceed 10 MB." Note that the photo frame size is not the video frame size.
Sizing media for another platform? Compare Instagram Reels specs, read up on Telegram video too large, browse the rest of the platform limits, or go straight to all Clapr tools — every one runs in your browser, so your video never leaves your device.
Specs cited from Telegram's Bot API documentation, checked 16 September 2026. Telegram attaches "this limit may be changed in the future" to several Bot API figures — verify against the official page before relying on them.