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.

Shopify limits video and 3D files two ways: a count per plan and a storage ceiling. The count runs from 250 on Starter and Basic to 100,000 on Enterprise, and storage runs from 50 GB on Starter and Basic to 2 TB on Plus. The smaller of the two limits is the one you hit first, and it depends on clip size. The numbers are from Shopify's file uploads help page, read 2026-10-03.
Limits by plan
Counts include 3D models as well as video, so a store that already hosts 3D files has less room than the table suggests. The page did not state a storage figure for Enterprise in the entry we kept, so the table leaves it open.
| Plan | Video and 3D files | Video storage |
|---|---|---|
| Starter / Basic | 250 | 50 GB |
| Grow | 1,000 | 500 GB |
| Advanced | 5,000 | 500 GB |
| Plus | 50,000 | 2 TB |
| Enterprise | 100,000 | not recorded |
Which limit comes first
Divide the storage by your average clip size and compare it with the count. On a Basic plan, 250 files fit in 50 GB if the average clip stays under about 200 MB, so for short product loops the count is the binding limit. A store that uploads long 1080p clips of several hundred megabytes each runs out of storage long before it reaches 250 files.
The same logic holds higher up. On Advanced, 5,000 files against 500 GB means the storage limit binds once the average passes about 100 MB. Short clips make the count the limit; long clips make storage the limit.
A planning script
The script takes your average clip size in megabytes and prints the limiting factor on each plan that has both numbers. It uses decimal gigabytes, so confirm which unit Shopify applies before you rely on a close result.
PLANS = {
"Starter/Basic": (250, 50),
"Grow": (1000, 500),
"Advanced": (5000, 500),
"Plus": (50000, 2000),
}
def headroom(avg_clip_mb):
for name, (count, gb) in PLANS.items():
by_storage = int(gb * 1000 / avg_clip_mb)
limit = min(count, by_storage)
which = "count" if count <= by_storage else "storage"
print(f"{name}: {limit} clips (limited by {which})")
headroom(40)Keep generated clips lean
Clip size follows length, resolution and motion. Sume's video API lets you choose duration and resolution per request, and most product loops do not need 1080p or more than a few seconds. Render the ratio each template needs rather than a master you crop later, and delete drafts from Shopify rather than leaving them hosted. Measure real file sizes from your first batch before you scale, because the average is the number the planning script depends on.
Sources
Related posts
More in Use cases
- 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.
- Test six Black Friday openers on Wan, then finish one on Seedance
Draft six Black Friday hooks as 5-second Wan 3.0 480p clips for $1.875, pick one, and finish it on Seedance 2.5 720p for $4.62. Total $6.70 with captions.
- Six-shot character consistency: Kling vs Sume references
Kling is described as keeping a character consistent across up to six shots. On Sume, use reference images or a reusable Avatar handle, and review every shot.
Written by Sume