Shopify product video: five recommended ratios at 30 to 60 fps
Shopify recommends 16:9, 9:16, 4:3, 3:4 or 1:1 video at 30 to 60 fps. Seedance 2 on Sume lists the same five ratios, so one prompt can fill a full ratio set.

Shopify recommends five video ratios for product media: 16:9, 9:16, 4:3, 3:4 and 1:1, at 30 to 60 frames per second. Sume's documented seedance-2 entry lists the same five (plus 21:9), so you can render one prompt in each ratio and let each template pick the one it needs. The Shopify figures come from the file uploads help page, read 2026-10-03.
What Shopify accepts
Shopify separates what it will accept from what it recommends. The accepted range is wide. The recommended set is narrow, and that is the one worth designing around.
| Item | Value |
|---|---|
| Maximum file size | 1 GB |
| Length | 0.25 s to 10 minutes |
| Formats | MOV, MP4, WEBM |
| Resolution | up to UHD; 100 to 4096 px per side |
| Frame rate | up to 120 fps accepted |
| Recommended ratios | 16:9, 9:16, 4:3, 3:4, 1:1 |
| Recommended frame rate | 30 to 60 fps |
Why a ratio set beats one master
A theme can show the same product video in a product page gallery, a collection card, a mobile full-screen view and a homepage banner. Those slots rarely share a shape. A single 16:9 master gets cropped in the square card and letterboxed in the vertical view. Rendering the five recommended shapes avoids both problems and lets you assign each to the slot that suits it.
Keep the set small in practice. Most stores need 1:1 for cards, 9:16 for mobile and 16:9 for banners. The 4:3 and 3:4 renders are worth making only when your theme uses them.
Render the set on Sume
Sume's video generation API takes aspect_ratio and resolution per request, and each model reports what it accepts in supported_aspect_ratios. The docs example for seedance-2 lists 21:9, 16:9, 4:3, 1:1, 3:4 and 9:16, which covers Shopify's five.
The script below submits one job per ratio. It reads the key from the environment and prints the job ids so you can poll each job or receive a callback.
import os
import requests
KEY = os.environ["SUME_API_KEY"]
RATIOS = ["16:9", "9:16", "4:3", "3:4", "1:1"]
PROMPT = "A ceramic mug turning slowly on a pale wooden table, soft window light"
def main():
for ratio in RATIOS:
r = requests.post(
"https://api.sume.com/v1/videos",
headers={"Authorization": f"Bearer {KEY}"},
json={"model": "seedance-2", "prompt": PROMPT,
"aspect_ratio": ratio, "resolution": "720p", "duration": 5},
)
r.raise_for_status()
print(ratio, r.json()["id"])
main()Frame rate: check it, do not assume it
The /v1/videos request has no frame rate field in the Sume docs, so the rate of a generated clip is whatever the model produced. Read it from the file with ffprobe before upload and compare it with Shopify's 30 to 60 fps recommendation. Shopify accepts up to 120 fps, so a clip outside the recommended band still uploads; it is only outside the guidance.
If you assemble clips on the timeline, output.fps accepts 24, 25, 30 or 60. Choose 30 or 60 for Shopify. Omitting it makes the render follow the source rate, which may not land in the recommended band.
Sources
Related posts
More in Use cases
- Shopify video limits: 1 GB, 10 min, and a 4K tier on Sume
Shopify product video reportedly allows up to 1 GB, 10 minutes and 4096x2160. Which Sume models reach a 4K tier and how to stay under the size cap.
- Shopify video storage by plan: 50 GB, 500 GB, 2 TB, and a clip cap
Shopify caps video and 3D files by count (250 to 100,000) and storage (50 GB to 2 TB) per plan. A short script finds which limit your AI clip batch hits first.
- Silent lobby loop video: a 5-minute screen reel with no audio, $0.50
Make a muted lobby or event-screen video from ten 30-second clips with Timeline's silence spine. 300 seconds bills as 5 minutes at $0.10, so $0.50.
- Singles Day 11.11 Chinese voice-over countdown: three clips for $1.98
A 15-second 11.11 countdown for cross-border sellers: three Wan 3.0 clips, a Chinese voice-over and one Timeline render, priced from docs at $1.98 on Sume.
Written by Sume