Spotify video ad specs: 9:16 or 16:9, up to 30 seconds
Spotify video ads run up to 30 s, 9:16 or 16:9 at about 720x1280 or 1280x720, as MOV or MP4 up to 500 MB, with sound at -14 dBFS RMS.

Spotify's video ad specs accept any in-stream video creative up to 30 seconds, in portrait 9:16 (HD 720x1280 or similar) or landscape 16:9 (HD 1280x720 or similar), as a .MOV or MP4 file of up to 500 MB. Every file must include sound, normalized to −14 dBFS RMS with peaks at −0.2 dBFS, and the video must have no black bars, no interlacing, no leaders, and an NTSC- or PAL-compatible frame rate. A Sume Timeline 1.0 render sets the size, the length, and a real audio track, but it can't normalize loudness, so measure that before you upload.
Spotify's rules are quoted from its In-stream video ad specs page (the address ends in video-takeover-ad-specs), read on 2026-09-27; Spotify can change them. Sume facts come from the Timeline 1.0 and Video generation docs, the Sume API reference, and Sume's media compiler as it works today.
What are Spotify's video ad specs?
These rules cover in-stream video ads bought through Spotify Ads Manager or Direct IO. The ads serve only while the Spotify app is in focus, on mobile, tablet, and desktop.
| Spec | Spotify's requirement |
|---|---|
| Length | Any creative up to 30 seconds |
| Aspect ratio | Portrait 9:16 or landscape 16:9 |
| Resolution | HD 720x1280 or similar (portrait); HD 1280x720 or similar (landscape) |
| File | .MOV or MP4, up to 500 MB |
| Volume | RMS normalized to −14 dBFS; peak normalized to −0.2 dBFS |
| Bit rate range | 198 kbps for ideal quality; 320 kbps maximum (the page doesn't say which stream) |
| Picture | No black bars (letter-, pillar-, or window-boxing); no interlaced video; NTSC- or PAL-compatible frame rate |
| Sound and start | All files must include sound, no silent videos; no leaders such as slates or countdowns |
What else goes with a Spotify video ad?
- An advertiser name of up to 25 characters, a call-to-action from Spotify's list (for example Learn more, Shop now, or Watch now), and one clickthrough URL.
- A 1:1 companion image of at least 600 x 600 pixels, JPEG or PNG, which serves in case the video doesn't render.
- A 1:1 logo of at least 600 x 600 pixels, JPEG or PNG, and a tagline of up to 40 characters.
How do I make a Spotify video ad with Sume?
Make the shots with POST /v1/videos at aspect_ratio 9:16 or 16:9: seedance-2.5 (4–30 s) and wan-3.0 (2–30 s) can make all 30 seconds in one clip, and the other models Sume lists stop at 15 seconds or less. Then conform them in one POST /v1/timeline-1.0/render, which reads only your workspace's media.sume.com files, such as earlier Sume outputs, and writes MP4.
output:720×1280for portrait or1280×720for landscape (even integers from 256 to 2160).audio.duration_seconds: 30 or less. The output always runs exactly that long.output.fps:25, the PAL frame rate. Spotify names no numbers, and Timeline offers 24, 25, 30, or 60, with no 29.97 (NTSC) option. A rate that differs from a clip's is met by repeating or dropping a frame every few frames, which can judder on motion.fit: keep the defaultcover, which today fills the frame and crops the overflow;containpads with black bars, which Spotify's specs rule out.
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: spotify-ad-001" \
-d '{
"audio": {
"url": "https://media.sume.com/artifacts/artf_demo/voiceover.wav",
"duration_seconds": 30
},
"video": [
{ "source_url": "https://media.sume.com/artifacts/artf_demo/clip-30s.mp4", "start": 0, "duration": 30 }
],
"soundtrack": {
"url": "https://media.sume.com/artifacts/artf_demo/music.mp3",
"loop": true, "duck_db": 8, "fade_out_seconds": 2
},
"output": { "width": 720, "height": 1280, "fps": 25 }
}'How do I meet Spotify's audio rules?
Today a render's sound is the audio spine plus an optional soundtrack; the clips' own audio is not mixed in. Give it a voiceover spine, or use audio.mode: "silence" with a soundtrack for music only, at gain_db: 0, since a bed defaults to −16 dB. Silence mode without a soundtrack renders a silent audio track, which Spotify won't accept. To keep a generated clip's own sound, extract it with POST /v1/audio-detach and use that file as the spine.
- Loudness: Timeline has no loudness target.
gain_db(−60 to 12) on the spine or the soundtrack shifts the level by a fixed amount, so measure the finished file against −14 dBFS RMS and −0.2 dBFS peak in your own audio tool, and correct it there. - Bit rate: today Timeline writes AAC audio at 192 kbps and sets no video bitrate. Spotify's page gives its 198 kbps ideal and 320 kbps maximum without naming the stream, so ask Spotify which stream it means before you compare.
- Ducking:
duck_db(0–20) dips the music while the voice speaks. Add background music to a video covers the bed.
What should I check before I upload it?
Run POST /v1/video-inspect with frames: false on the render's video_url. That probe is unbilled and reports width, height, fps, duration_seconds, has_audio, audio_codec, and size_bytes, so you can compare them with Spotify's table. It doesn't report loudness or scan type, and Sume's docs don't state the scan type, so check both in your own tools before you submit the file.
Sources
Related posts
More in Media tools
- Threads ads specs: video ratios, the 4:5 crop, and captions
Threads ads take image, video, and carousel creatives. Video from 1.91:1 to 9:16 is supported, but anything taller than 4:5 is cropped to 4:5.
- TikTok video specs for API uploads and ads, mapped to Sume
TikTok's posting API takes MP4, WebM, or MOV at 23–60 fps, 360–4,096 px, and up to 10 minutes. How a Sume clip maps to that, and how to upload it.
- Transcribe long audio files: split into 10-minute parts
To transcribe long audio by API, split it into parts of up to 10 minutes, transcribe each part, then add each part's start time to its timestamps.
- Transcribe video to text with an API: send the audio track
Transcribe video to text by API: send the audio track to speech-to-text. On Sume, inspect a Sume-hosted clip or send your own file's audio to STT 1.0.
Written by Sume