Instagram's published story video length limit is "60 seconds maximum, 3 seconds minimum" — and those numbers come from Meta's Graph API documentation, which governs stories posted by tools rather than by your thumb. The same spec caps a story video at 100MB.
That scope line is the part every other page drops, and dropping it is how a "60 seconds" article ends up quoting a file size ceiling that was never written for the app. This page gives you the whole documented spec, says exactly which document each line comes from, and puts it next to the Reels spec — because the two look almost identical and differ in one place by a factor of ten.
The limits, at a glance
Every line below is quoted from the Story Video Specifications block in Meta's IG User Media API reference. These are the numbers that apply when a story is published through the Graph API — the channel that schedulers and automation tools typically publish through.
| Spec | What Meta documents |
|---|---|
| Duration | "60 seconds maximum, 3 seconds minimum" |
| File size | "100MB maximum" |
| Aspect ratio | "between 0.1:1 and 10:1 but we recommend 9:16" |
| Maximum horizontal pixels | 1920 |
| Frame rate | "23-60 FPS" |
| Video codec | "HEVC or H264, progressive scan, closed GOP, 4:2:0 chroma subsampling" |
| Audio codec | "AAC, 48khz sample rate maximum, 1 or 2 channels (mono or stereo)" |
| Video bitrate | "VBR, 25Mbps maximum" |
| Audio bitrate | "128kbps" |
| Container | "MOV or MP4 (MPEG-4 Part 14), no edit lists, moov atom at the front of the file" |
| Posting a story from the Instagram app | Check the official documentation |
That last row is deliberate. An API reference is an API reference. If you want the limit that applies when you tap the camera inside Instagram, check Instagram's official documentation rather than assuming the API number carries over.
Stories are not short Reels
Meta publishes story and Reel specs side by side in the same document, and they are nearly word-for-word identical: same container rules, same codecs, same 23–60 FPS window, same 1920-pixel horizontal ceiling, same 25Mbps VBR video bitrate, same 128kbps audio. Four lines differ.
| Spec | Story (API) | Reel (API) |
|---|---|---|
| Maximum duration | 60 seconds | 15 minutes |
| Minimum duration | 3 seconds | 3 seconds |
| Maximum file size | 100MB | 300MB |
| Aspect ratio floor | 0.1:1 | 0.01:1 |
| Aspect ratio ceiling | 10:1 | 10:1 |
The duration and file size gaps are the ones you will actually feel: a story gets a fifteenth of the running time and a third of the bytes that a Reel gets.
The aspect ratio floor is the detail that gets copied wrong. Meta writes 0.1:1 for stories and 0.01:1 for Reels — one decimal place apart, an order of magnitude in practice. A 0.1:1 frame is ten times taller than it is wide. A 0.01:1 frame is a hundred times taller than it is wide. Both sentences are verbatim official text, they sit within a few paragraphs of each other, and pages that cover "Instagram video specs" in one table routinely print one number under both headings.
Does the difference bite anyone in real life? Almost never — a normal vertical video at 9:16 is 0.5625:1, which sits inside both ranges with enormous headroom. The reason to get it right is that it tells you which pages actually read the documentation: if a specs table shows the Reels ratio under a Stories heading, treat its other numbers as copied too.
What genuinely matters in that line is its second half — Meta recommends 9:16 "to avoid cropping or blank space." The bounds tell you what will be accepted; the recommendation tells you what will look right. The same split runs through the Reels spec, where the accepted range and the recommended shape are likewise two different things.
The two ceilings that collide
Here is something the spec does not spell out but that falls straight out of the two numbers it gives you.
The story spec allows video bitrate up to 25Mbps and allows duration up to 60 seconds. Run both ceilings at once and the arithmetic goes: 25 megabits per second times 60 seconds is 1,500 megabits, which is about 187MB. The same spec caps the file at 100MB.
So the two maximums cannot both be used in the same file. A full-length 60-second story has to average roughly 13Mbps or below to fit inside 100MB, whatever the bitrate line permits. Under about half a minute the bitrate ceiling is the binding one; above it, file size takes over.
This is why "my story is under 60 seconds and it still failed" is a coherent complaint rather than a contradiction. Length and size are separate gates, and a long clip trips the second one first.
What to do when you hit either limit
There are exactly two levers, and the order matters.
- Trim first. Duration is a hard gate with no workaround — a 75-second clip is not a story video no matter how small you make the file. Cut it to under 60 seconds before you touch anything else.
- Then compress to fit 100MB. Most phone and screen-recorder footage is dramatically over-provisioned for a clip that will be watched for under a minute on a phone screen. Dropping bitrate is the single most effective move, and resolution is the second — remember the spec's own ceiling is 1920 horizontal pixels, so anything wider than that is being carried for no reason.
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 back — nothing is uploaded to a server, which matters when the clip is something you were about to post to close friends only.
If you want to understand the trade rather than accept a preset, how to compress a video without losing quality walks through what bitrate and resolution each actually cost you. And if you are sizing a clip for several platforms at once, the limits category has the documented numbers for the rest of them.
Gotchas worth knowing before you upload
"No edit lists, moov atom at the front of the file." This one line in the container spec explains a whole class of baffling failures. A file can be a valid MP4, have the right codec, the right length and the right size, and still be rejected because its index sits at the end of the file instead of the front. In ffmpeg terms that is -movflags +faststart. If your export pipeline does not do this, the file looks correct to you and wrong to the API.
MOV is fine — do not convert out of habit. The spec lists "MOV or MP4" as acceptable containers, so a QuickTime file from an iPhone or a Mac is not automatically a problem. Convert with MOV to MP4 when you need the re-encode for another reason, not because MOV is disallowed. It is not.
Uploads are asynchronous. Meta's documentation is explicit that "receiving a container ID does not guarantee that the upload was successful" and tells you to poll the container's status_code field, treating FINISHED as the confirmation. A tool that reports success the moment it gets a container ID is reporting the wrong thing.
Containers expire. Meta documents that "containers expire after 24 hours," and defines the EXPIRED status this way: "The container was not published within 24 hours and has expired." That is a timing failure, not a spec failure — the file was fine.
FAQ
How long can an Instagram story video be? Meta's API specification for story video says "60 seconds maximum, 3 seconds minimum." That figure is documented for stories published through the Graph API. For the limit that applies when posting from the Instagram app itself, check the official documentation.
What is the file size limit for an Instagram story video? "100MB maximum," per the same API specification. That is a third of what the same document allows for a Reel, which is 300MB.
Why did my scheduling tool reject a story video that is under a minute? Duration is only one of the gates. The same spec also caps file size at 100MB, horizontal resolution at 1920 pixels, and frame rate at 23–60 FPS, and requires the moov atom at the front of the file with no edit lists. A clip can pass the length check and fail any of the others.
Is the Instagram story aspect ratio limit 0.1:1 or 0.01:1?
For stories, Meta documents "between 0.1:1 and 10:1." The 0.01:1 floor belongs to the Reel specification in the same document. Pages that print one under both headings have copied rather than checked. Either way, Meta recommends 9:16 to avoid cropping or blank space.
Is three seconds really the minimum? That is what the API spec states — "3 seconds minimum" — and it is the same minimum Meta documents for Reels. If you are publishing through a tool and a very short clip fails, length is a plausible cause.
Do I need to compress, or can I just lower the resolution? Both work, and you usually want a bit of each. The spec's own ceiling is 1920 horizontal pixels, so anything above that is pure waste. Below that, bitrate does most of the work. The browser video compressor handles both in one pass, and all Clapr tools are listed here.
Story video specifications quoted from Meta's IG User Media API reference (page self-dated "Updated: Aug 12, 2026"), checked 16 September 2026. These numbers describe the Graph API publishing path. Meta revises this page — verify against the official documentation before relying on it.