ArtStation 25 MB free vs 250 MB premium clips: bitrate budget
A 60-second ArtStation clip on a free account must average about 3.3 Mbps to fit in 25 MB. Premium's 250 MB allows about 33 Mbps. Table and a Python check.

A free ArtStation video clip of 60 seconds can average at most about 3.3 megabits per second, and a premium clip can average about 33 Mbps. ArtStation's help page gives the maximum upload as 25 MB for free users and 250 MB for premium subscribers, and the clip length as up to 1 minute. Dividing bytes by seconds gives the ceiling: 25 MB times 8 is 200 megabits, and 200 divided by 60 is 3.33.
These are ceilings for the average of the whole file, audio included. A clip that has sound spends part of the budget on it, so the video portion is a little lower than the numbers above. If the clip is a silent loop, the whole budget is video.
The budget by clip length
The ceilings below use 1 MB as 8 megabits. Shorter clips earn a higher average bitrate, which is why a 15-second loop is much easier to fit than a one-minute one.
As a worked example, a 45-second clip with a 21.4 MB size, as in the sample code, averages 3.8 Mbps. That is above the 3.33 Mbps ceiling for a full 60 seconds, but the clip is only 45 seconds long, so its own ceiling is 4.44 Mbps, and it leaves 3.6 MB free on the 25 MB plan.
| Clip length | Free, 25 MB | Premium, 250 MB |
|---|---|---|
| 15 seconds | 13.33 Mbps | 133.33 Mbps |
| 30 seconds | 6.67 Mbps | 66.67 Mbps |
| 60 seconds | 3.33 Mbps | 33.33 Mbps |
What to do when it is over
The free ceiling is tight for a full minute. Fine detail, film grain or fast camera motion all raise bitrate for a given resolution, and an AI-generated clip with a lot of texture can be expensive to encode. If a first export is over, shorten the clip before you reduce anything else, since halving the length doubles the budget per second.
Sume video trim is the tool for that. Its duration field takes seconds from 0.2 to 900. The output object, with width, height and fps, is the second lever for exact precision, and Sume has no bitrate field, so the effect on size has to be measured and not assumed.
A pragmatic sequence is to export once, probe it, and compute the average. If the result is more than the free ceiling, cut the length by a third and retry before you change dimensions, because shorter loops also play better on an autoplay surface. Keep every attempt, since each trim writes a new artifact and leaves the source alone, and compare the sizes in a table of your own.
Premium changes the arithmetic by a factor of ten, which is the main reason a premium plan can carry a 4K loop that a free plan cannot carry at all.
Headroom check
The function below takes a probe and a plan name and reports headroom in megabytes. It reads size_bytes and duration_seconds. Replace the sample numbers with a real probe.
LIMITS = {"free": 25_000_000, "premium": 250_000_000}
def headroom(probe, plan="free"):
size = probe.get("size_bytes")
secs = probe.get("duration_seconds")
if size is None or not secs:
return "no size or duration in probe"
if secs > 60:
return "over the 1 minute limit"
left = (LIMITS[plan] - size) / 1_000_000
return "%.1f MB left on the %s plan" % (left, plan)
print(headroom({"size_bytes": 21_400_000, "duration_seconds": 45}))
print(headroom({"size_bytes": 38_000_000, "duration_seconds": 60}, "premium"))Margins and unknowns
ArtStation does not say whether MB is decimal or binary, so a file that is a hair under on this arithmetic could still be refused. Leave a few percent of margin. The page also gives no bitrate or codec guidance for clips beyond the MP4 format, so this post does not offer any.
Also remember that the limits belong to the account tier at upload time. A clip that was prepared for the premium budget will not upload on a free account, so keep a second, smaller export if you share work between accounts.
Cost of iterating
Probing is billed by compute, and with frames set to false the call returns the probe and no stills. A trim retry is $0.02 per job at the public rate.
A trim job writes a new MP4, and the source keeps its original state, so there is no risk in trying shorter cuts. Delete or ignore the attempts you do not need.
Sources
Related posts
More in Use cases
- Astro Image with a Sume URL: allow the domain, set width and height
Astro only optimizes remote images from authorized sources and requires width and height on them. Add the host to image.domains, or save the Sume PNG under src.
- Spoken repair estimates in English and Spanish: 40 a month on Sume TTS
An auto shop that voices 40 estimates a month in two languages, 500 characters each, pays $1.90 on Sume TTS. MAI-Voice-2.1 lists $0.88. What the gap buys.
- Avatar consent register keyed by avatar handle: a Python CSV script
Keep a consent register keyed by Sume avatar_handle: person, photo source, approved uses, expiry. A stdlib Python CSV checker blocks videos for expired consent.
- Avatar video aspect ratio for YouTube: 16:9 vs Shorts at 9:16
Sume avatar videos default to 9:16. YouTube's help says a wider ratio such as 16:9 avoids Shorts classification. When each is the right choice for a 60 s clip.
Written by Sume