Compress Instagram Reels video for the 300 MB API cap
Compress Instagram Reels video for the 300 MB API cap?
The quoted Reels spec for Instagram API posting lists 300 MB, 3 seconds to 15 minutes, and an MP4 or MOV container. This page checks the Video Compressor output against that spec. Balanced and Fast wrote MP4 H.264, and the measured 45 second vertical clip was 16.1 MB on Balanced.
Last updated
The quoted Reels spec for Instagram API posting lists 300 MB, 3 seconds to 15 minutes, and an MP4 or MOV container. This page checks the Video Compressor output against that spec. Balanced and Fast wrote MP4 H.264, and the measured 45 second vertical clip was 16.1 MB on Balanced.
Measured 18 October 2026
The spec, as quoted
Meta's developer reference for Reels published through the Instagram API lists: MP4 or MOV container with no edit lists and the moov atom at the front; H.264 or HEVC video, progressive, closed GOP, 4:2:0; AAC audio at up to 48 kHz, one or two channels; 23 to 60 frames per second; at most 1920 pixels wide; video bitrate up to 25 Mbps VBR; 3 seconds to 15 minutes; at most 300 MB.
We could not open Meta's own pages from our tooling on 18 October 2026, because the site refused automated requests. The list above matches two independent quotations of the reference, from AdaptlyPost and Orlo's help center, and the starting point for checking it is Meta's Instagram Platform documentation. Treat it as a quoted spec until you read it at Meta. It governs API posting by schedulers. It says nothing about the in-app uploader.
The compressor's output against that spec
Every measured number on this page comes from one run set on 2026-10-18: the live /tools/video-compressor/ page driven by headless Chrome/154.0.8037.92 on 13th Gen Intel(R) Core(TM) i9-13900K (32 threads, 126 GB RAM, Linux 7.0.0-34-generic), software WebCodecs with no GPU. The sources are synthetic files made with ffmpeg (ffmpeg version 6.1.1-3ubuntu5): a test pattern, with temporal noise added where the label says noisy, plus a 48 kHz sine tone. They are not camera footage. Outputs were saved through the page's Save button and measured with ffprobe. The raw records are in the repository at docs/evidence/runs/2026-10-18-video-target-runs.json. A phone or a machine with a hardware encoder can land at different sizes, and that was not measured.
| Spec line | Measured on the 1080×1920 vertical, 45 s, noisy synthetic run | Result |
|---|---|---|
| MP4 or MOV | MP4 (Balanced and Fast presets) | Meets |
| H.264 or HEVC, 4:2:0 | H264 High, yuv420p | Meets |
| Width up to 1920 px | 1080×1920 | Meets |
| 23–60 fps | 30 fps | Meets |
| Video up to 25 Mbps | 2.87 Mbps (Balanced), 4.37 Mbps (Fast) | Meets |
| AAC, 48 kHz max, 1–2 channels | AAC, 48 kHz, 1 channel (source was mono) | Meets |
| Moov atom at the front | Top-level boxes: ftyp, moov, mdat | Meets |
| No edit lists | An elst box is present in moov | Does not meet |
| Up to 300 MB, 3 s to 15 min | 16.1 MB, 45 s | Meets |
| MP4 or MOV container (Smallest preset) | WebM VP9/Opus, 8.1 MB | Does not meet |
What to do with two misses
Two lines fail. The Smallest preset writes WebM, so use Balanced or Fast for anything headed to Instagram. The other is the edit list. Balanced and Fast both wrote an elst box. Remuxing with ffmpeg ('-c copy -movflags +faststart') kept it in the one test we ran, so that is not a fix. We have not tested whether Instagram's API rejects such a file, and a scheduler or the app may re-encode or accept it. If a scheduler rejects the upload, the cause to check first is this edit list.
Size is rarely the issue. The vertical 45 second noisy clip at Balanced was 16.1 MB, and Fast was 24.2 MB at 4.37 Mbps. A full 15 minute Reel at the Fast rate would be about 492 MB (video rate × 900 s, audio not counted), over the 300 MB API cap, while Balanced at 2.87 Mbps would be about 323 MB. Check the byte count of a long file before scheduling it.
The limits table covers other apps. For a mail attachment, open the email video compressor. The MP4 files the compressor wrote still carry container tags (major_brand, minor_version, compatible_brands, creation_time). The creation_time value is the time of the encode, not of the original recording. For a file you plan to publish, run the output through Verify metadata removed and read Remove MP4 metadata.
FAQ
What is Instagram's maximum video file size?
For API posting, the Reels spec quoted above says 300 MB. We could not read a published in-app size limit and do not state one.
Which preset should I use for Reels?
Balanced or Fast. Both write MP4 H.264 with AAC. Smallest writes WebM.
Is the 9:16 ratio required?
The quoted API spec accepts a wide range of ratios and recommends 9:16 to avoid cropping.
More tools
Video Compressor · Video size limits by platform · Video compression guide · Remove MP4 metadata · Verify metadata removed