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 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.
- Skippable YouTube ads: check the first 5 seconds with stills
Skippable in-stream ads can be skipped after 5 seconds and Google recommends under 3 minutes. Sample the pre-skip frames of a Sume clip with video inspect.
- Snap ad video size: API says 1080x1920, ad specs page says 720x1280
Snap's Ads API lists 1080x1920 for top snap video while its ad specs page lists 720x1280. Render one 9:16 file at 1080p and check the pixels with Sume.
- Snap image ads become 5-second videos: generate a real clip instead
Snap's Ads API converts a top snap image into a 5-second video. If you want camera motion, generate a 5-second clip from the same image with Sume.
Written by Sume