Skip to content
Tech Stack10 September 2026 · 7 min readUpdated 30 September 2026

Mux Free Tier vs Self-Hosted Video: Real Costs

Mux delivers 100,000 minutes a month free. A 4 MB autoplay loop self-hosted on Vercel Pro uses its included 1 TB of transfer at about a third of that traffic. Here is the arithmetic, sourced, and how to run it on your own files.

Mux Free Tier vs Self-Hosted Video: Real Costs

What you'll learn

  • What does the Mux free tier actually cover?
  • When does self-hosting an MP4 on Vercel cost more than Mux?
  • How do Mux, self-hosting and Cloudflare Stream compare at each traffic level?
Article contents

You have a looping video on a landing page and a "free tier" that sounds generous. Before you pick a platform, do one thing: list your video files with byte counts and durations. I did that for the repo behind this site on 30 September 2026. The hero loop (public/hero-avatar-video.mp4) is 8.0 seconds of 1080p and weighs 4,015,025 bytes, about 4 MB.

That single number decides more than any pricing page. A common assumption is that the free tier is the wall you will hit, and the arithmetic below says the wall sits somewhere else. Every price is from the vendor's own page, fetched on 30 September 2026, and the assumptions are labelled.

What does the Mux free tier actually cover?

A tall roll of pale paper standing on a wooden desk, unspooled only a few inches, the short tail marked with one pencil tick and stained by a faint coffee ring

Mux delivers the first 100,000 minutes each month free, at any quality or resolution, and the allowance resets monthly. Basic-quality encoding is free too, so a small library costs almost nothing to keep on Mux.

The Mux Video pricing documentation lists delivery at $0.0008 per minute for 720p and $0.001 per minute for 1080p after the free allowance, with storage at $0.0024 and $0.003 per minute per month. At 1080p, one play of my 8-second loop is 0.133 minutes, so the free allowance covers about 750,000 plays. Storage for a clip that short is a rounding error.

One metering rule matters for autoplay. Mux's docs state that "if a segment of video is delivered, it is charged, even if the viewer doesn't actually watch the video," and give the example of a player buffering 20 seconds ahead. My model below assumes each visit delivers the whole 8 seconds once, so a looping player that replays the clip would consume more delivered minutes than the table shows.

When does self-hosting an MP4 on Vercel cost more than Mux?

Two paper envelopes overlapping on a desk in hard window light, the top one torn open with a statement half pulled out, the one beneath still sealed and marked by a coffee ring

For a 4 MB loop, self-hosting on Vercel Pro starts costing money at roughly a third of the traffic where Mux would. The reason is that the CDN meters bytes while the video platform meters minutes, and a short clip is cheap in minutes and expensive in bytes.

The Vercel Pro plan page says the included Flat Rate CDN tier covers 1 million CDN requests and 1 TB of data transfer each month. Beyond that, the regional pricing table lists Fast Data Transfer at $0.15 to $0.35 per GB depending on region. Divide 1 TB by 4.015 MB and you get about 249,000 hero loads. Mux's 100,000 free minutes divided by 8 seconds gives 750,000 plays. Same clip, same visits, and the byte meter runs out first.

Why one video is rarely the whole payload

The hero is not the only clip in the repo. A file listing of public/ shows 14 MP4 files totalling about 39.3 MB, including the Callidus demo (6.5 MB, 56.9 seconds) and the BookBed case study reel (3.4 MB, 42 seconds). Consider a visitor who lands on a page with the hero and then opens two case studies: that is roughly 4 + 6.5 + 3.4 = 14 MB, not 4. That is a hypothetical path, not a measured one, but it shows why you count files instead of pages. If you run the Next.js on Vercel stack with Postgres, transfer is the meter that decides this question, not compute.

Vercel's own guidance points the same way. Its guide to hosting videos says large video files can consume excessive bandwidth, and lists Vercel Blob, Vimeo, S3 with a CDN, Mux and Cloudinary as options.

The Hobby plan is not a fallback

If you exceed a usage limit on Hobby, the plan documentation says that in most cases you wait 30 days before using the feature again. It includes 100 GB of Fast Data Transfer, about 25,000 loads of a 4 MB clip, and restricts the plan to non-commercial personal use. That makes it a poor place to put video for anything that sells.

How do Mux, self-hosting and Cloudflare Stream compare at each traffic level?

Three paper strips of unequal length pinned to a linen board with brass tacks, casting three shadows of different lengths, the longest strip curling loose at its bottom corner

Below about a million monthly visits, Mux is the cheapest of the three options, and it is cheapest because the free tier absorbs everything. The table models one 8-second 1080p play per visit and counts video bytes only.

Monthly visitsSelf-hosted MP4 on Vercel Pro (on-demand rates beyond 1 TB)MuxCloudflare Stream
100,000$0 (about 401 GB, inside the 1 TB)$0 (13.3k min, inside the free tier)about $18
250,000about $1 (1,004 GB, just over)$0 (33.3k min)about $38
500,000$151 to $353 (about 1 TB over)$0 (66.7k min)about $72
1,000,000$452 to $1,055 (about 3 TB over)about $33 (33.3k billable min)about $138

Cloudflare Stream has no free allowance: $1 per 1,000 minutes delivered and $5 per month per 1,000 minutes of storage capacity, with ingress, encoding and bandwidth included. The Stream column above is delivery plus one $5 storage block. It costs the most at low traffic and grows in a straight line, which suits you if you would rather have a predictable bill than a free tier that ends.

Flat Rate CDN changes the self-hosting column

Vercel announced Flat Rate CDN for Pro teams on 8 September 2026: a fixed monthly bill for data transfer and CDN requests, with higher capacity tiers you can buy and spike protection within fair use. The overage ranges in my table are on-demand list rates. If you would hit them, read the tier prices before deciding, because a fixed tier may beat them. I have not modelled those tiers.

When self-hosting the MP4 is still the right call

Self-host when the clip is short, cached hard and your monthly transfer sits inside what your plan already includes. That describes most portfolios and marketing sites, where a video platform adds an integration for no saving.

Three conditions favour keeping the file in public/:

  • The clip is under ten seconds and loops. Adaptive bitrate has almost nothing to adapt to in an 8-second window.
  • You control the encode. My hero works out to about 4 Mbps (4,015,025 bytes over 8 seconds), which is generous for a background loop. Re-encoding at a lower bitrate, or adding a 720p rendition for narrow screens, would cut transfer. I have not re-encoded it, so I can't quote the saving.
  • The video is decorative and nobody scrubs it.

Move to a platform when viewers seek through long-form video, when the library grows every month, or when your audience is on connections you can't predict. A single MP4 has one bitrate, so a visitor on weak wifi gets the same stream as one on fibre. How far bytes travel also changes their price, which is the edge computing angle behind Vercel's per-GB range.

How do you find your own crossover point?

Multiply the bytes each visit loads by monthly visits and compare the result with the transfer already included in your plan, before you open any vendor page. It takes about twenty minutes from a terminal.

  1. List every video with its exact size: find public -type f -name "*.mp4" -printf "%s\t%p\n" | sort -rn ranks them largest first.
  2. Get each duration with ffprobe -v error -show_entries format=duration -of csv=p=0 <file>. You need seconds as well as bytes, because platforms bill minutes and CDNs bill bytes, and the two rank your files differently.
  3. Open analytics and count the sessions that reach each page carrying video. Total sessions will overstate it.
  4. Multiply bytes by sessions for the CDN column. Multiply seconds by sessions, divided by 60, for the platform column.
  5. Compare both with the allowance in the plan you already pay for. If both fit, you have no decision to make this quarter.
  6. Set a spend alert at 75% of your included usage. Vercel's Pro plan page says it notifies you at 75% of the monthly credit, and you can add your own thresholds under spend management.

If you also want the wider build economics, the app cost estimator covers the rest of the picture, and the same byte arithmetic applies to WordPress versus a custom website once media is heavy.

Run the find command in step 1 against your own public/ folder now and read the top line. What is the biggest file you serve, and does anyone on your team know how many sessions load it?

Free resource

Free SaaS MVP Scope Template

A Notion document with the full feature checklist, MVP vs. nice-to-have table, pre-build questions, and cost signals — so you walk into any developer call knowing exactly what to ask for.

Get the template →
DL

Dusko Licanin

Full-Stack Developer · Banja Luka, Bosnia

Full-stack developer shipping SaaS MVPs, web apps, and mobile apps using AI-augmented workflows — without agency coordination overhead. Live portfolio: BookBed, Callidus, Pizzeria Bestek.

Frequently Asked Questions

What does the Mux free tier include?

The Mux free tier delivers the first 100,000 minutes each month at no charge, at any quality or resolution, and the allowance resets monthly. Basic-quality encoding is also free. After the allowance, Mux's pricing documentation lists delivery at $0.0008 per minute for 720p and $0.001 per minute for 1080p, with storage at $0.0024 and $0.003 per minute per month. For an 8-second 1080p loop that is about 0.133 minutes per play, so the free allowance covers roughly 750,000 plays. Mux meters segments delivered rather than segments watched, so a player that buffers ahead still counts. I checked these figures on Mux's pricing page on 30 September 2026.

Is Mux cheaper than self-hosting video?

For short autoplay clips at small and mid traffic, Mux is usually cheaper, because its free minutes outlast the transfer included in a hosting plan. Take a 4 MB, 8-second loop. Vercel Pro's included 1 TB of data transfer covers about 249,000 loads, while Mux's 100,000 free minutes cover about 750,000 plays, so self-hosting starts billing at roughly a third of the traffic. That gap can flip if your clips are long and watched end to end, because platforms bill by minute and CDNs by byte. Run your own file sizes and durations through both formulas before you decide, since the answer depends on the payload.

How do you calculate video bandwidth for a website?

Multiply the size in bytes of each video by the number of sessions that actually load it, then add the results. That gives your monthly CDN transfer without any calculator. List sizes with a find command over your public folder sorted by size, and durations with ffprobe. You need both, because CDN pricing meters bytes while video platforms meter minutes, and the same library ranks differently under each. Then compare the total with the transfer already included in your plan rather than with a vendor price list, because the included allowance decides whether you have a decision to make at all. Count sessions per page, not total sessions.

Can you host video files on Vercel?

Yes, but Vercel's own guide on hosting videos warns that large video files can consume excessive bandwidth, and it lists Vercel Blob, Vimeo, S3 with a CDN, Mux and Cloudinary as alternatives. On Pro, video draws from the same data transfer meter as everything else: the included Flat Rate CDN tier covers 1 TB and 1 million requests a month, and on-demand Fast Data Transfer beyond that is listed at $0.15 to $0.35 per GB by region. On Hobby, exceeding a limit usually means waiting 30 days, and the plan is limited to non-commercial personal use. Short, compressed, well-cached clips are fine; a growing library is a different problem.

When should you self-host an MP4 instead of using a video platform?

Self-host when the clip runs under ten seconds, loops, is cached hard and your traffic stays inside the transfer your plan already includes. Adaptive bitrate has almost nothing to adapt to across an 8-second window, so a platform adds an integration without a saving. Check the encode first: a 1080p loop that works out to about 4 Mbps is generous for a background, and a lower bitrate or a 720p rendition for narrow screens would reduce transfer. Move to a platform when viewers seek through long-form video, when the library grows every month, or when your audience is on connections you cannot predict.