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.

5 min readSume
All posts

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.

From Spotify Ads' In-stream video ad specs, read 2026-09-27.
SpecSpotify's requirement
LengthAny creative up to 30 seconds
Aspect ratioPortrait 9:16 or landscape 16:9
ResolutionHD 720x1280 or similar (portrait); HD 1280x720 or similar (landscape)
File.MOV or MP4, up to 500 MB
VolumeRMS normalized to −14 dBFS; peak normalized to −0.2 dBFS
Bit rate range198 kbps for ideal quality; 320 kbps maximum (the page doesn't say which stream)
PictureNo black bars (letter-, pillar-, or window-boxing); no interlaced video; NTSC- or PAL-compatible frame rate
Sound and startAll 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 × 1280 for portrait or 1280 × 720 for 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 default cover, which today fills the frame and crops the overflow; contain pads 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

All Media tools posts

Written by Sume