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.

4 min readSume
All posts

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.

Shopify video and 3D limits by plan (read 2026-10-03)
PlanVideo and 3D filesVideo storage
Starter / Basic25050 GB
Grow1,000500 GB
Advanced5,000500 GB
Plus50,0002 TB
Enterprise100,000not 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

All Use cases posts

Written by Sume