Open dataset

Short-form video specs, with the source next to every number

Resolution, bitrate, duration, codecs and caption safe zones for Instagram Reels, TikTok and YouTube Shorts — every value carrying the first-party source it came from and the date it was checked. Free to read, free to fetch, free to cite.

Completely free & open source. No signups, no credit card required.

The dataset

Version 1.0.0, last verified 2026-08-10. Free to use with attribution (CC BY 4.0). CORS is open, so an agent can fetch it directly.

curl -s https://www.opennolan.com/specs.json \ | jq '.platforms[] | {name, safe_zones: .safe_zones.safe_area_px}'

Every number below carries the source it came from and the date it was checked. Anything we could not verify against a first-party page is labelled Estimate — in the JSON as "confidence": "estimate" — and should not be cited as platform-official. Where a platform simply does not publish a value, the field is absent rather than guessed.

Instagram Reels

Instagram Reels video specifications
Aspect ratio9:16 recommended · accepts 0.01:1 to 10:1 ✓ Official Instagram Platform content-publishing API Verbatim: "required aspect ratio is between 0.01:1 and 10:1 but we recommend 9:16 to avoid cropping or blank space".
ResolutionRecommended 1080×1920 · Minimum 600×1067 · Max horizontal 1920 px ✓ Official recommended/minimum from Meta's 9:16 Instagram ad design requirements; max_horizontal_px from the publishing API
DurationMin 3 s · Max 15 min ✓ Official Instagram Platform content-publishing API ("15 mins maximum, 3 seconds minimum"). The in-app Reels camera imposes its own shorter limit, which Meta does not publish in a citable spec page — it is deliberately omitted here.
Max file size300 MB ✓ Official Instagram Platform content-publishing API
ContainerMOV or MP4 (MPEG-4 Part 14), no edit lists, moov atom at the front of the file ✓ Official
Video codecHEVC or H.264, progressive scan, closed GOP, 4:2:0 chroma subsampling ✓ Official
Video bitrateVBR, 25 Mbps maximum ✓ Official
Frame rate23–60 fps ✓ Official
AudioAAC · 128 kbps · 1 or 2 (mono or stereo) ✓ Official

Caption safe zone (1080×1920)

Estimate, not platform-official. Meta publishes no pixel-level safe zone for Reels, so this rectangle is the community-consensus estimate (14% top, 35% bottom, 6% each side). Design against it; do not cite it as a Meta specification.

Instagram Reels caption safe zone at 1080×1920
Safe area ! Estimate950×979 px at (65, 269) · normalized 0.0602, 0.1401, 0.8796, 0.5099
Top bar1080×269 px at (0, 0)Account name, follow button and system status area
Caption block1080×672 px at (0, 1248)Username, caption, audio attribution and the app's bottom navigation
Left edge65×979 px at (0, 269)Edge crop on taller-than-9:16 screens
Action rail65×979 px at (1015, 269)Like, comment, share, save and audio disc

What Meta does publish:

  • Keep the top, bottom and side edges free of key creative elements, text and logos for 9:16 creative in Stories, Reels and Feed.
  • If your Reels ad includes disclaimers, leave the bottom 40% (768 px of 1920) free of text, logos and other key creative elements.
  • On screens taller than 9:16 Meta may zoom the creative to fill the screen, which can crop anything outside the safe zone.

Safe zone source: behaviour.digital — Meta Reels safe zone: 14% top / 35% bottom / 6% sides. Last verified 2026-08-09. See it on your own video →

TikTok

TikTok video specifications
Aspect ratio9:16 recommended · accepts 9:16, 1:1, 16:9 ✓ Official TikTok Auction In-Feed Ads
ResolutionMinimum 540×960 ✓ Official TikTok Auction In-Feed Ads. TikTok publishes a minimum here, not a recommended resolution — none is invented for this dataset.
DurationMax 10 min ✓ Official TikTok Auction In-Feed Ads, non-Spark (Spark Ads have no duration restriction). TikTok does not publish a citable organic in-app maximum, so none is listed.
Max file size500 MB ✓ Official TikTok Auction In-Feed Ads
Container.mp4, .mov, .mpeg, .3gp, .avi ✓ Official
Video codecnot published
Video bitrate516 kbps or higher ✓ Official
Frame ratenot published
Audionot published

Caption safe zone (1080×1920)

Measured out of the alpha channel of TikTok's own In-Feed safe-zone template (In-Feed/Feed.png, 2880x5120, LTR) and scaled to 1080x1920. The template's own labels — 80 px sides, 160 px top, 440 px bottom, 120 px right column on a 720x1280 frame — agree with the measurement.

TikTok caption safe zone at 1080×1920
Safe area ✓ Official660×1020 px at (120, 240) · normalized 0.1111, 0.125, 0.6111, 0.5313
Top bar1080×240 px at (0, 0)Following / For You tabs and search
Caption block1080×660 px at (0, 1260)Username, caption, sound title and the bottom navigation bar
Left edge120×1020 px at (0, 240)Edge crop on taller-than-9:16 screens
Action rail300×1020 px at (780, 240)Profile, like, comment, bookmark, share and the spinning record

Safe zone source: TikTok — In-Feed-Standard Version LTR.zip — TikTok's own downloadable in-feed safe-zone template (In-Feed/Feed.png, 2880x5120). Last verified 2026-08-09. See it on your own video →

YouTube Shorts

YouTube Shorts video specifications
Aspect ratio9:16 recommended · accepts 9:16, 2:3, 4:5 ✓ Official YouTube video ad specs (vertical)
ResolutionRecommended 1080×1920 · Minimum 720×1280 ✓ Official YouTube video ad specs. Shorts themselves upload at a maximum of 1080p.
DurationMax 3 min ✓ Official A Short is "up to 3 minutes long".
Max file size256 GB ✓ Official YouTube video ad / upload ceiling, not a Shorts-specific limit
ContainerMP4 with the moov atom at the front of the file (Fast Start) ✓ Official
Video codecH.264, High Profile, closed GOP of half the frame rate, 4:2:0 chroma subsampling, 2 consecutive B frames ✓ Official
Video bitrate1080p SDR: 8 Mbps standard frame rate, 12 Mbps high frame rate. 1080p HDR: 10 Mbps / 15 Mbps. ✓ Official
Frame rateUpload at the frame rate it was recorded at. Common rates: 24, 25, 30, 48, 50, 60 fps. ✓ Official
AudioAAC-LC (Opus and Eclipsa Audio also accepted) · 384 kbps stereo ✓ Official

Caption safe zone (1080×1920)

Measured out of the alpha channel of Google's own 1080x1920 vertical safe-zone overlay PNG for YouTube video ads. Google publishes the overlay, not the numbers.

YouTube Shorts caption safe zone at 1080×1920
Safe area ✓ Official840×960 px at (48, 288) · normalized 0.0444, 0.15, 0.7778, 0.5
Top bar1080×288 px at (0, 0)Search, subtitles and the more menu
Caption block1080×672 px at (0, 1248)Channel name, title, sound row, progress bar and the bottom navigation
Left edge48×960 px at (0, 288)Edge crop on taller-than-9:16 screens
Action rail192×960 px at (888, 288)Like, dislike, comment, share, remix and the channel avatar

Safe zone source: Google — About video ad specs — Universal safe zones for video ads on YouTube — Google Ads Help. Last verified 2026-08-09. See it on your own video →

Ask an assistant what bitrate a Reel wants and you will usually get a confident number with no provenance, assembled from a decade of blog posts copying each other. Some of those numbers were right in 2021. Some were never right.

This page is the opposite bargain. Every value below names the first-party document it came from and the date we last checked it. Where a platform publishes nothing, the field is absent rather than filled in. Where a number is widely used but not actually published by the platform, it is flagged as an estimate — in the table and in the JSON — so nobody cites it as gospel.

The same data is served as a static file at /specs.json with open CORS, so an agent, a script or a build step can pull it directly. It is CC BY 4.0: use it, quote it, ship it in your own tool. Attribution back to this page is all we ask.

How to read the confidence flags

Two of the three platforms make this easy. TikTok attaches downloadable safe-zone templates to its in-feed ad spec and Google publishes a transparent overlay PNG on its YouTube video ad specs page. Those rectangles were measured pixel-by-pixel out of the platforms' own files and scaled to a 1080×1920 frame, which is why they are marked official.

Meta is the exception. Its help centre describes the Reels safe zone in prose — keep the edges free of key creative, and leave the bottom 40% clear if your ad carries disclaimers — but publishes no rectangle. The Instagram Reels safe zone here is therefore the community-consensus figure (14% top, 35% bottom, 6% each side), and it is flagged "confidence": "estimate" everywhere it appears. It is close enough to design against and not authoritative enough to quote.

Scope matters too. Several published numbers are ad specs rather than organic posting limits, because that is what the platforms document. Each field says which.

  • confidence: "official" — measured from, or quoted from, a first-party page
  • confidence: "estimate" — not published by the platform; treat as approximate
  • Missing field — the platform publishes nothing, and we did not invent one
  • scope — whether the number is an ad spec, an API limit or an organic limit

The one spec that actually matters

H.264 MP4 at 1080×1920 clears every spec here. The frame budget is the part that doesn't.

Most of the table below is reassurance rather than instruction. Every platform accepts an H.264 MP4 at 1080×1920 with AAC audio, and every phone on earth produces one. If you export that, no spec on this page will ever reject your video.

What does bite is the frame budget. The safe area on all three platforms is roughly the middle half of the frame, and nothing in your export pipeline warns you when a caption drifts into the action rail. That is the number worth internalising — and the one thing here you can check against your own footage in about ten seconds.

Frequently asked questions

Can I use this data in my own product?

Yes. It is CC BY 4.0 — use it commercially, modify it, ship it inside your app. Credit OpenNolan and link back to this page or to /specs.json. The endpoint sends Access-Control-Allow-Origin: *, so you can fetch it from the browser.

How current is it?

Every platform entry carries its own last_verified date, and the file carries a generated_at timestamp. Platforms change these specs without announcements, so check the dates before relying on a value for anything expensive.

Why are some fields missing?

Because the platform does not publish them. TikTok, for instance, gives a minimum resolution for in-feed ads but no recommended one, and no organic duration limit in a citable page. A plausible-looking guess in a dataset that agents cite at scale is a liability, so the field is simply absent.

Why is the Instagram safe zone marked as an estimate?

Because Meta does not publish pixel values for it. The only number in Meta's own safe zone documentation is that Reels ads carrying disclaimers should leave the bottom 40% clear. The 14% / 35% / 6% rectangle used here is community consensus, is flagged as such, and should not be cited as a Meta specification.

Where do the safe zone coordinates come from?

For TikTok and YouTube, from the alpha channel of the safe-zone template files those platforms publish, measured and scaled to 1080×1920. Both pixel and normalized 0–1 coordinates are in the JSON, so you can apply them to any frame size. You can see them on your own video with the safe zone checker.

Beta out now for Mac

Or let the app handle the specs for you

Download the free beta of the Mac app that exports to these specs by default.

Apple Silicon (M1 or later) · macOS 13+ · no account, no credit card

Not on Apple Silicon — or want the note when 1.0 ships?

One email when 1.0 lands. Unsubscribe anytime.

You're on the list 🎬

Check your inbox — we just sent a confirmation. We'll email you again the moment OpenNolan 1.0 ships.