YouTube ad specs: in-stream and in-feed sizes and lengths
Google lists 1920×1080, 1080×1920, and 1080×1080 at a recommended 15 seconds for YouTube in-video ads; non-skippable in-stream runs 15–60 seconds.

Google's specs for in-video ads on YouTube list three sizes, 16:9 at 1920×1080, 9:16 at 1080×1920, and 1:1 at 1080×1080, each with a recommended length of 15 seconds, and the video must be hosted on YouTube. Skippable in-stream ads have no maximum length (under 3 minutes recommended) and can be skipped after 5 seconds; non-skippable in-stream ads run 15–60 seconds, depending on the campaign subtype. With Sume, generate clips in those shapes and assemble the length you need at an exact size on Timeline 1.0.
Google's rules are quoted from two Google Ads Help pages, About video ad formats and Video ads specs and format requirements, read on 2026-09-27; Google can change them. Sume facts come from Video generation, Timeline 1.0, and the Sume API reference.
How long can each YouTube ad format be?
Google's format table sets the length limit per format. Two formats have their own posts: bumper ad specs and Shorts ad specs.
| Format | Max video length | How it plays |
|---|---|---|
| Skippable in-stream | No max length; under 3 minutes recommended | Before, during, or after other videos; skippable after 5 seconds |
| Non-skippable in-stream | 15–60 seconds, depending on the campaign subtype | Before, during, or after other videos; can't be skipped |
| In-feed | No max length | A thumbnail with text in YouTube feeds and search that invites a click to watch |
| Bumper | 6 seconds, at least 5 | Before, during, or after other videos; can't be skipped |
| YouTube Shorts | Under 60 seconds recommended | Between organic Shorts; viewers can swipe past |
| Masthead | No max length; over 10 seconds recommended | Top of the YouTube Home feed; reservation only |
What size should a YouTube video ad be?
The specs page gives sizes and recommended lengths per campaign type:
- In-video ads on YouTube: 16:9 at 1920×1080, 9:16 at 1080×1920, and 1:1 at 1080×1080, each with a recommended length of 15 seconds.
- Video reach campaigns: 16:9 at 1920×1080 with 15 seconds for skippable in-stream and in-feed and 6 seconds for bumpers; 9:16 and 1:1 at 6–60 seconds.
- Video action campaigns: the same three sizes at 10 seconds or more.
- Files: .MPG is recommended, and .MP4, .MOV, WebM, and others are accepted, under 256 GB. Audio-only files such as MP3 or WAV aren't.
- Thumbnails: 16:9 at 1280×720 (at least 1280×640), as JPG, GIF, or PNG under 2 MB.
How are skippable and non-skippable ads billed?
Skippable in-stream with CPV bidding charges when a viewer watches 30 seconds, or the whole ad if it is shorter, or interacts, whichever comes first; with Target CPM, Target CPA, or Maximize conversions you pay for impressions. Non-skippable in-stream ads, which Google also describes as 60 seconds or shorter, use Target CPM, so you pay for impressions.
How do I make a 15- to 60-second in-stream ad with Sume?
Join clips on Timeline 1.0. One generated clip is capped at 15 seconds on most models, and seedance-2.5 and wan-3.0 go to 30 seconds, so an ad longer than one clip, such as a 30-second non-skippable spot, is several clips joined in one render. Generate them with aspect_ratio 16:9, 9:16, or 1:1 on POST /v1/videos, on a model that lists the shape (ratios by model); rendering one edit in all three shapes is covered in Performance Max video specs.
- Length:
audio.duration_seconds(1–1800) sets it, and the output always runs exactly that long. - Size:
output.widthandoutput.heightare even integers from 256 to 2160, so 1920×1080, 1080×1920, and 1080×1080 are all exact. - Sound: today it comes from the audio spine and optional soundtrack, not from the clips, and the spine must be Sume-hosted, such as a Sume text-to-speech master.
- Inputs: Timeline reads only your workspace's
media.sume.comfiles, such as earlier Sume outputs, and each render needs anIdempotency-Key.
curl -X POST https://api.sume.com/v1/timeline-1.0/render \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: youtube-instream-001" \
-d '{
"audio": {
"url": "https://media.sume.com/artifacts/artf_demo/voice.wav",
"duration_seconds": 30
},
"video": [
{ "source_url": "https://media.sume.com/artifacts/artf_demo/open.mp4", "start": 0, "duration": 15 },
{ "source_url": "https://media.sume.com/artifacts/artf_demo/close.mp4", "start": 15, "duration": 15 }
],
"output": { "width": 1920, "height": 1080 }
}'Where do I upload the finished ad?
To YouTube: Google says video ad content must be hosted there, even when the ad also runs on Google video partners' sites and apps. Before you upload, confirm the size and length with the unbilled frames: false probe of POST /v1/video-inspect.
Sources
Related posts
More in Media tools
- YouTube Shorts video specs: 3 minutes, square or vertical
YouTube treats square or vertical uploads up to 3 minutes as Shorts and recommends MP4, H.264, AAC-LC, and 48 kHz. How Sume output compares.
- YouTube thumbnail from a video frame API: extract, upscale
Extract a full-size PNG from a Sume-hosted video with POST /v1/video-frames, then upscale it to the 3840×2160 YouTube recommends for thumbnails.
- How to burn captions onto a video with the Sume API
Send a public HTTPS video URL to POST /v1/video-captions and get a job-backed captioned video, timed by speech-to-text or by text you supply.
- How to extract frames from a video with the Sume API
POST /v1/video-frames returns stills at the times you name from one Sume-hosted clip, as durable images at source size. The call is unbilled.
Written by Sume