Is exactly 180 seconds still a Short and a recommended Reel?
YouTube says Shorts can be up to 3 minutes, and Instagram will not recommend Reels over 3 minutes. Render 179 seconds with Sume for a margin at the same price.

Both platforms put the line at three minutes, and both wordings favour 180 seconds exactly. YouTube says Shorts can be up to 3 minutes long, and Instagram says Reels over 3 minutes will not be recommended to new audiences. A file that runs 180.04 seconds is over that line, though, so a margin of a second is cheap insurance.
The lengths are from YouTube Shorts and Record a reel on Instagram, both read 2026-10-03. Neither page says how the platform rounds a file that runs a few frames long, so I would not test that edge with a real post.
Why 179 costs nothing extra
Timeline 1.0 bills $0.10 per started output minute, and audio.duration_seconds sets the output length. 179 and 180 seconds both bill three minutes, $0.30, so the margin is free. 181 seconds would bill four minutes, $0.40, and the video would be past the line on both platforms.
| Output length | Billable minutes | Cost | Safe on both? |
|---|---|---|---|
| 170 s | 3 | $0.30 | Yes, 10 s margin |
| 179 s | 3 | $0.30 | Yes, 1 s margin |
| 180 s | 3 | $0.30 | At the limit, no margin |
| 181 s | 4 | $0.40 | No, over by 1 s |
Verify the render, do not assume
Sume's docs say video coverage may trail the audio spine by at most 0.5 seconds, so the file's real length can differ slightly from the number you sent. After rendering, read the length back with video inspect and compare it with 180.
import json, os, time, urllib.request as u
def call(method, path, body=None, key=None):
h = {"Authorization": "Bearer " + os.environ["SUME_API_KEY"],
"Content-Type": "application/json"}
if key:
h["Idempotency-Key"] = key
data = json.dumps(body).encode() if body is not None else None
req = u.Request("https://api.sume.com" + path, data, h, method=method)
with u.urlopen(req) as r:
out = json.load(r)
return out.get("data", out)
def probe(url, key):
d = call("POST", "/v1/video-inspect", {"video_url": url, "frames": False}, key)
for _ in range(30):
if d.get("probe"):
return d["probe"]
time.sleep(2)
d = call("GET", "/v1/video-inspect/" + d["id"])
raise TimeoutError("probe not ready")
RENDER_URL = "https://media.sume.com/artifacts/artf_demo/final.mp4"
secs = probe(RENDER_URL, "len-check-1")["duration_seconds"]
print(secs, "OK" if secs <= 180 else "over the 3-minute line")
If the probe says over, trim the tail with video trim at duration 179 for $0.02, or re-render a second shorter.
A note on 179
179 seconds is not a magic number. Pick whatever margin you trust after probing a few of your own renders, as long as it keeps the output inside the same billable minute. At 3 minutes the cost is the same $0.30 for 170, 179 or 180 seconds, so a margin is free.
Sources
Related posts
More in Media tools
- Join dubbed voiceover lines into one gapless file for a cent on Sume
Sume timeline audio concatenates up to 20 audio parts or splits one file into up to 20 ranges, no re-synthesis and no silence at the seams, at $0.01 a job.
- Keep a vertical video out of Shorts: render a 16:9 blur-fill cut
YouTube's help names a wider ratio such as 16:9 as the way to avoid Shorts. Put a vertical clip in a 1920x1080 frame with Sume's blur fit, $0.10 a minute.
- Put music under Gemini Omni's native audio: detach, spine, duck
Omni clips always carry native audio on Sume. Detach it to a wav, use it as the Timeline spine, add a music soundtrack with duck_db. Calls and limits.
- Burning Korean captions: why a Latin style returns a 400 on Sume
Sume's slam, punch and tiktok-green styles have no Hangul glyphs, so Korean copy on them fails with a 400. Which style to pick and what a $0.20 caption costs.
Written by Sume