{
  "name": "Video ad specs by platform",
  "description": "Aspect ratios, sizes, lengths, file limits, safe zones and caption rules for video ads and store previews, each value from the platform's official page. Values are as published by each platform; nothing here guarantees ad approval.",
  "publisher": { "name": "pitchboom.io", "url": "https://pitchboom.io" },
  "page": "https://pitchboom.io/guides/video-ad-specs",
  "checkedOn": "2026-10-25",
  "fields": {
    "confirmed": "true: read on the official page on checkedOn. false: the page refused our reader; the value comes from the page's indexed text and is unconfirmed.",
    "sizes": "Pixels, width x height, as the page states them (recommended, minimum or maximum).",
    "null": "Not documented on the pages read."
  },
  "platforms": [
    {
      "id": "tiktok",
      "placement": "TikTok In-Feed Ads (auction, non-Spark)",
      "confirmed": true,
      "aspectRatios": ["9:16", "1:1", "16:9"],
      "recommendedAspectRatio": "9:16",
      "sizes": { "9:16": "at least 540x960", "1:1": "at least 640x640", "16:9": "at least 960x540" },
      "length": { "min": null, "max": "10 minutes" },
      "maxFileSize": "500 MB",
      "fileTypes": [".mp4", ".mov", ".mpeg", ".3gp", ".avi"],
      "otherSettings": "Bitrate at least 516 kbps",
      "safeZone": "A downloadable safe-zone file (standard, right-to-left for the Arabic region, and a version for videos with anchors); no percentages in the page text",
      "captions": "Ad text shows in white in a fixed font; no links, @ mentions or hashtags. Spark Ads use the organic post's caption, up to 4 lines.",
      "sources": [{ "label": "TikTok Ads Help: Auction In-Feed Ads specs", "url": "https://ads.tiktok.com/help/article/tiktok-auction-in-feed-ads", "checkedOn": "2026-10-25" }]
    },
    {
      "id": "instagram_reels",
      "placement": "Instagram Reels ads",
      "confirmed": true,
      "aspectRatios": ["9:16"],
      "recommendedAspectRatio": "9:16",
      "sizes": { "9:16": "1440x2560 recommended; minimum width 250 for ads under 30 seconds, 500 for 30 seconds or more" },
      "length": { "min": "0 seconds", "max": "15 minutes" },
      "maxFileSize": "4 GB",
      "fileTypes": ["MP4", "MOV"],
      "otherSettings": "H.264, square pixels, fixed frame rate, progressive scan, AAC stereo audio at 128 kbps or more",
      "safeZone": { "top": 0.14, "bottom": 0.35, "left": 0.06, "right": 0.06, "text": "Keep at least 14% at the top, 35% at the bottom and 6% on each side free of text, logos and key elements" },
      "captions": "Optional but recommended; sound strongly recommended",
      "sources": [{ "label": "Meta Ads Guide: Instagram Reels video", "url": "https://www.facebook.com/business/ads-guide/update/video/instagram-reels", "checkedOn": "2026-10-25" }]
    },
    {
      "id": "youtube_shorts",
      "placement": "YouTube Shorts ads",
      "confirmed": true,
      "aspectRatios": ["9:16", "16:9", "1:1"],
      "recommendedAspectRatio": "9:16",
      "sizes": { "9:16": "1080x1920" },
      "length": { "min": null, "max": "3 minutes", "note": "Only the first 60 seconds play in the Shorts feed; under 60 seconds recommended; 6 to 60 seconds for video reach campaigns" },
      "maxFileSize": "Under 256 GB (the video is uploaded to YouTube, public or unlisted)",
      "fileTypes": [".MPG (recommended)", "MP4", "MOV", "WebM", "HEVC"],
      "otherSettings": "Horizontal videos show with blurred top and bottom areas",
      "safeZone": "No percentages documented; a right-hand panel holds the like, dislike, comment and share buttons, and the call-to-action button appears after 3 or 10 seconds depending on the campaign",
      "captions": "Not covered; the page suggests text overlays",
      "sources": [
        { "label": "Google Ads Help: YouTube Shorts ads asset specs", "url": "https://support.google.com/google-ads/answer/16041697", "checkedOn": "2026-10-25" },
        { "label": "Google Ads Help: video ads specs and format requirements", "url": "https://support.google.com/google-ads/answer/17091270", "checkedOn": "2026-10-25" }
      ]
    },
    {
      "id": "facebook_feed",
      "placement": "Facebook Feed video ads",
      "confirmed": true,
      "aspectRatios": ["4:5"],
      "recommendedAspectRatio": "4:5",
      "sizes": { "4:5": "1440x1800; minimum 120x120" },
      "length": { "min": "1 second", "max": "241 minutes" },
      "maxFileSize": "4 GB",
      "fileTypes": ["MP4", "MOV", "GIF"],
      "otherSettings": "H.264, square pixels, fixed frame rate, progressive scan",
      "safeZone": "No percentages documented. With the Awareness objective, or the Maximize reach, 2-second continuous video views, impressions or post engagement goals, the headline, description and call-to-action button are not shown on Facebook Feed on mobile",
      "captions": "Optional but recommended; primary text 50 to 150 characters, headline 27 characters",
      "sources": [{ "label": "Meta Ads Guide: Facebook Feed video", "url": "https://www.facebook.com/business/ads-guide/update/video/facebook-feed", "checkedOn": "2026-10-25" }]
    },
    {
      "id": "linkedin",
      "placement": "LinkedIn video ads",
      "confirmed": true,
      "aspectRatios": ["16:9", "1:1", "4:5", "9:16"],
      "recommendedAspectRatio": null,
      "sizes": {
        "16:9": "1920x1080 or 1200x675 recommended; 640x360 minimum, 1920x1080 maximum",
        "1:1": "360x360 minimum, 1920x1920 maximum",
        "4:5": "720x900 recommended; 360x450 minimum, 1080x1350 maximum",
        "9:16": "720x1280; 360x640 minimum, 1080x1920 maximum"
      },
      "length": { "min": "3 seconds", "max": "30 minutes", "note": "15 to 30 seconds recommended; in-stream video ads up to 90 seconds" },
      "maxFileSize": "500 MB (minimum 75 KB)",
      "fileTypes": ["MP4"],
      "otherSettings": "H.264 or VP8 video; the page says less than 30 fps; AAC or MPEG4 audio",
      "safeZone": null,
      "captions": "An SRT caption file, plain text only (no custom fonts or colors)",
      "sources": [{ "label": "LinkedIn Marketing Solutions Help: video ads specifications", "url": "https://www.linkedin.com/help/lms/answer/a424737", "checkedOn": "2026-10-25" }]
    },
    {
      "id": "youtube_in_stream",
      "placement": "YouTube in-stream ads",
      "confirmed": true,
      "aspectRatios": ["16:9", "9:16", "1:1"],
      "recommendedAspectRatio": "16:9",
      "sizes": { "16:9": "1920x1080 recommended, 1280x720 minimum", "9:16": "1080x1920 recommended, 720x1280 minimum", "1:1": "1080x1080 recommended, 480x480 minimum" },
      "length": {
        "skippable": "No minimum or maximum (under 3 minutes recommended); viewers can skip after 5 seconds",
        "nonSkippable": "15 to 60 seconds depending on the campaign subtype (the same page also says 60 seconds or shorter)",
        "bumper": "6 seconds (5 seconds minimum)",
        "inFeed": "No maximum"
      },
      "maxFileSize": "Under 256 GB (the video is uploaded to YouTube)",
      "fileTypes": [".MPG (recommended)", "MP4", "MOV", "WebM", "HEVC", "ProRes", "DNxHR"],
      "otherSettings": "4:3 and 2:3 (SD) accepted but not recommended",
      "safeZone": null,
      "captions": null,
      "sources": [
        { "label": "Google Ads display specs: skippable in-stream ads", "url": "https://support.google.com/displayspecs/answer/6055025", "checkedOn": "2026-10-25" },
        { "label": "Google Ads Help: about video ad formats", "url": "https://support.google.com/google-ads/answer/2375464", "checkedOn": "2026-10-25" }
      ]
    },
    {
      "id": "x",
      "placement": "X video ads",
      "confirmed": false,
      "aspectRatios": ["1:1", "16:9", "9:16", "4:5", "2:3", "1.91:1"],
      "recommendedAspectRatio": null,
      "sizes": { "16:9": "1920x1080 recommended", "1:1": "1200x1200 recommended", "9:16": "1080x1920 maximum, 720x1280 minimum" },
      "length": { "min": null, "max": "2 minutes 20 seconds", "note": "15 seconds or less recommended. The X Ads API page (confirmed) gives up to 10 minutes for promoted video." },
      "maxFileSize": "1 GB (under 30 MB recommended). The X Ads API page (confirmed) gives 500 MB or less.",
      "fileTypes": ["MP4", "MOV"],
      "otherSettings": null,
      "safeZone": null,
      "captions": null,
      "sources": [
        { "label": "X Ads Help: creative ad specifications (blocked our reader; values unconfirmed)", "url": "https://business.x.com/en/help/campaign-setup/creative-ad-specifications", "checkedOn": "2026-10-25" },
        { "label": "X Ads API: creatives (file types, API limits)", "url": "https://docs.x.com/x-ads-api/creatives", "checkedOn": "2026-10-25" }
      ]
    },
    {
      "id": "app_store",
      "placement": "App Store app previews (iPhone)",
      "confirmed": true,
      "aspectRatios": ["portrait", "landscape"],
      "recommendedAspectRatio": null,
      "sizes": {
        "iPhone with Face ID or Dynamic Island": "886x1920 portrait, 1920x886 landscape",
        "iPhone with Home button, 5.5-inch class": "1080x1920 portrait, 1920x1080 landscape",
        "iPhone with Home button, 4.7-inch class": "750x1334 portrait, 1334x750 landscape"
      },
      "length": { "min": "15 seconds", "max": "30 seconds" },
      "maxFileSize": "500 MB",
      "fileTypes": [".mov", ".m4v", ".mp4 (H.264)", ".mov (ProRes 422 HQ)"],
      "otherSettings": "Up to 30 fps; up to three previews per device size and language",
      "safeZone": null,
      "captions": null,
      "sources": [{ "label": "App Store Connect Help: app preview specifications", "url": "https://developer.apple.com/help/app-store-connect/reference/app-preview-specifications", "checkedOn": "2026-10-25" }]
    },
    {
      "id": "google_play",
      "placement": "Google Play preview video",
      "confirmed": true,
      "aspectRatios": ["portrait", "landscape"],
      "recommendedAspectRatio": null,
      "sizes": null,
      "length": { "min": null, "max": null, "note": "Only the first 30 seconds autoplay" },
      "maxFileSize": null,
      "fileTypes": ["The URL of one YouTube video (not a playlist or channel), without a timecode"],
      "otherSettings": "Public or unlisted, ads and monetization off, not age-restricted, embeddable",
      "safeZone": null,
      "captions": null,
      "sources": [{ "label": "Play Console Help: add preview assets", "url": "https://support.google.com/googleplay/android-developer/answer/9866151", "checkedOn": "2026-10-25" }]
    }
  ]
}
