<SYSTEM>This is the pricing information for Mux.</SYSTEM>

# Understanding Mux Video Pricing
Learn how Mux Video pricing works and what levers and modifiers there are for you to control costs.
Mux pricing is split up into three categories: input, storage, and delivery. In other words, you're charged by how much video you upload every month, how much video you store every month, and how much video your users stream every month.

As you read, keep your eye out for what we call "pricing levers": ways you can suit your costs to your use case. For example, we offer discounts based on volume and resolution. More on those [near the end](#pricing-levers-and-add-ons).

Finally, Mux charges by minute of video inputted, stored, and delivered. [Learn more](https://www.mux.com/blog/why-we-still-price-in-minutes-for-video) about why we charge in minutes instead of bytes.

Let's get started by talking about the first category of pricing: Input.

<Callout id="higher-usage">
  If you find yourself with higher usage than the tiers described below, [we'd love to talk to you about how we can customize your pricing.](https://www.mux.com/sales-contact?utm_source=docs\&utm_campaign=video-pricing)
</Callout>

## Input

Videos can come in all sorts of different formats, containers, codecs, or countless other variations. When a video is uploaded to Mux, we process it and create a high-quality, standardized version of the video through a process called "encoding." We use that standardized version to deliver any number of bitrates and resolutions based on the viewer's needs, but more on that [later](#delivery).

Mux supports a configurable video quality level on each asset, with three levels, basic, plus, and premium.

The **basic** video quality level uses a reduced encoding ladder, with a lower target video quality, suitable for simpler video use cases. There is no charge for video input when using basic quality. Basic assets are optimized for video use cases with simpler streaming needs, such as social or user-generated content, where high encoding costs may limit your business model.

The **plus** video quality level encodes your video at a consistent high-quality level. Assets encoded with the plus quality use an AI-powered per-title encoding technology that boosts bitrates for high-complexity content, ensuring high-quality video, while reducing bitrates for lower-complexity content to save bandwidth without sacrificing on quality. Plus assets are enhanced quality, perfect for professional or branded content. The plus quality level incurs a cost per video minute of encoding.

The **premium** video quality level uses the same AI-powered per-title encoding technology as plus, but is tuned to optimize for the presentation of premium media content, where the superior video quality is required, including use cases such as studio or cinematic projects. The premium quality level incurs a higher cost per video minute of encoding.

<Callout id="live-streams">
  Live Streams are not available with the basic video quality level; Mux only supports plus and premium video quality levels for Live Streams.
</Callout>

The default video quality level for assets in new accounts is basic. You can configure your organization's default video quality level in the Settings pane in the dashboard, or after confirming the payment method when you change your plan. This configuration option is only available to account admins. You can also override the default video quality level on a per-asset basis at the time of asset creation.

[Learn more about setting video quality levels.](/docs/guides/use-video-quality-levels)

Mux charges by minute of video encoded.

### Basic quality input

[Learn more about setting video quality levels.](/docs/guides/use-video-quality-levels)

On-demand video only.

| Monthly volume tiers  | Up to 720p | 1080p | 1440p (2K) | 2160p (4K) | Audio-only
| :-------------------- | :--------- | :---- | :------    | :--------- | :---------
| All volumes | Free | Free | Free | Free | Free

### Plus quality input

[Learn more about setting video quality levels.](/docs/guides/use-video-quality-levels)

Live video is supported up to 1080p and on-demand video up to 4K.

Pricing is per minute.

| Monthly volume tiers | Up to 720p | 1080p | 1440p (2K) | 2160p (4K) | Audio-only
| :------------------- | :--------- | :---- | :--------- | :--------- | :---------
| First 5,000 minutes | $0.025000 | $0.031250 | $0.050000 | $0.100000 | $0.002500
| Next 10,000 minutes | $0.023750 | $0.029688 | $0.047500 | $0.095000 | $0.002375
| Next 10,000 minutes | $0.023125 | $0.028906 | $0.046250 | $0.092500 | $0.002313
| Over 25,000 minutes | $0.022500 | $0.028125 | $0.045000 | $0.090000 | $0.002250

### Premium quality input

[Learn more about setting video quality levels.](/docs/guides/use-video-quality-levels)

Live video is supported up to 1080p, on-demand video up to 4K.

Pricing is per minute.

| Monthly volume tiers | Up to 720p | 1080p | 1440p (2K) | 2160p (4K) | Audio-only
| :------------------- | :--------- | :---- | :--------- | :--------- | :---------
| First 5,000 minutes | $0.037500 | $0.046875 | $0.075000 | $0.150000 | $0.002500
| Next 10,000 minutes | $0.035625 | $0.044531 | $0.071250 | $0.142500 | $0.002375
| Next 10,000 minutes | $0.034688 | $0.043359 | $0.069375 | $0.138750 | $0.002313
| Over 25,000 minutes | $0.033750 | $0.042188 | $0.067500 | $0.135000 | $0.002250

## Advanced static rendition (MP4s) preparation

Advanced static renditions are priced per minute of content, per static rendition, based on the resolution of the static rendition that is generated.

Note that there is no charge for generating standard static rendition MP4s. See the [enabling static MP4 renditions](/docs/guides/enable-static-mp4-renditions) guide for more information.

### Basic and plus quality advanced static rendition preparation

| Monthly volume tiers | Up to 720p | 1080p | 1440p (2K) | 2160p (4K)
| :------------------- | :--------- | :---- | :--------- | :---------
| First 5,000 minutes | $0.008000 | $0.010000 | $0.016000 | $0.032000
| Next 10,000 minutes | $0.007600 | $0.009500 | $0.015200 | $0.030400
| Next 10,000 minutes | $0.007400 | $0.009250 | $0.014800 | $0.029600
| Over 25,000 minutes | $0.007200 | $0.009000 | $0.014400 | $0.028800

### Premium quality advanced static rendition preparation

| Monthly volume tiers | Up to 720p | 1080p | 1440p (2K) | 2160p (4K)
| :------------------- | :--------- | :---- | :--------- | :---------
| First 5,000 minutes | $0.012000 | $0.015000 | $0.024000 | $0.048000
| Next 10,000 minutes | $0.011400 | $0.014250 | $0.022800 | $0.045600
| Next 10,000 minutes | $0.011100 | $0.013875 | $0.022200 | $0.044400
| Over 25,000 minutes | $0.010800 | $0.013500 | $0.021600 | $0.043200

## Storage

When we talked about input, we mentioned that Mux creates a single, high-quality, standardized version of each video. That step is when most traditional video solutions or providers will create all the different versions of your video for streaming to different devices, which means storing all those different versions indefinitely. Mux, on the other hand, only creates and stores one version of your video because Mux is able to deliver the right versions of the video when your viewers need it.

With [Automatic Cold Storage](#automatic-cold-storage), Mux automatically applies discounts to infrequently accessed assets.

Storage is calculated by minute of video stored. Storage is prorated by the percentage of the month that the video is stored. For example, if a 10-minute asset is stored for only half a month, you will be charged for only 5 minutes.

The cost of video storage also includes the storage of primary audio, metadata, and captions. When you pay for the storage of a video, you can also transcode or transmux to normalize inputs, create metadata or thumbnails, and access it in the dashboard or through the API.

Mux Live Streams have the choice to use the plus or premium quality level. Mux offers live streaming up to 1080p.

Mux will automatically start creating an on-demand asset in the background when you begin broadcasting to your live stream. These assets are created and stored as assets with the video quality level you chose for encoding.

### Basic and plus quality storage

[Learn more about setting video quality levels.](/docs/guides/use-video-quality-levels)

**Basic quality** level assets have a minimum storage charge of one month and are prorated thereafter. Basic supports on-demand video only, up to 4K.
**Plus quality** level does not have a minimum storage change. Plus supports Live video supported up to 1080p and on-demand video up to 4K.

Pricing is per minute per month.

| Monthly volume tiers | Up to 720p | 1080p | 1440p (2K) | 2160p (4K) | Audio-only
| :------------------- | :--------- | :---- | :--------- | :--------- | :---------
| First 50,000 minutes | $0.002400 | $0.003000 | $0.004800 | $0.009600 | $0.000240
| Next 100,000 minutes | $0.002320 | $0.002900 | $0.004640 | $0.009280 | $0.000232
| Next 100,000 minutes | $0.002280 | $0.002850 | $0.004560 | $0.009120 | $0.000228
| Over 250,000 minutes | $0.002240 | $0.002800 | $0.004480 | $0.008960 | $0.000224

### Premium quality storage

[Learn more about setting video quality levels.](/docs/guides/use-video-quality-levels)

Live video supported up to 1080p and on-demand video up to 4K.

Pricing is per minute per month.

| Monthly volume tiers | Up to 720p | 1080p | 1440p (2K) | 2160p (4K) | Audio-only
| :------------------- | :--------- | :---- | :--------- | :--------- | :---------
| First 50,000 minutes | $0.003600 | $0.004500 | $0.007200 | $0.014400 | $0.000240
| Next 100,000 minutes | $0.003480 | $0.004350 | $0.006960 | $0.013920 | $0.000232
| Next 100,000 minutes | $0.003420 | $0.004275 | $0.006840 | $0.013680 | $0.000228
| Over 250,000 minutes | $0.003360 | $0.004200 | $0.006720 | $0.013440 | $0.000224

## Static rendition (MP4s) storage

Static renditions are priced per minute of content, per static rendition, per month stored. The pricing is also based on the resolution of the static rendition.

Static rendition storage also benefits from the automatic cold storage feature when content is not viewed, see [Automatic Cold Storage](#automatic-cold-storage) for more information.

### Basic and plus quality static rendition storage

| Up to 720p | 1080p | 1440p (2K) | 2160p (4K) | Audio-only
| :--------- | :---- | :--------- | :--------- | :---------
| $0.000600 | $0.000750 | $0.001200 | $0.002400 | $0.000060

### Premium quality static rendition storage

| Up to 720p | 1080p | 1440p (2K) | 2160p (4K) | Audio-only
| :--------- | :---- | :--------- | :--------- | :---------
| $0.000900 | $0.001125 | $0.001800 | $0.003600 | $0.000060

## Automatic cold storage

With Automatic Cold Storage, we programmatically transition a video or audio-only asset to a different storage level based on how long it has been since it was last viewed. The colder the asset gets, the lower the billing rate becomes.

An asset transitions to `Infrequent` if it has not been played in the last 30 days, and will receive a 40% discount off of the applicable usage-based rate.

An asset transitions to `Cold` if it has not been played in the last 90 days, and will receive a 60% discount off of the applicable usage-based rate.

When an asset is first created, it instantly transitions into the `Cold` tier until the first time it is played.

All assets, including those with static rendition (MP4s) enabled, are eligible for Automatic Cold Storage. Viewing an asset through either the static rendition or the HLS URL will reset the cold storage timer for the entire asset.

Note: [Downloading a master](/docs/guides/download-for-offline-editing) of an asset in infrequent or cold storage will cause the asset to be returned to the frequent storage class, and the cold storage timer to be reset.

### Basic and plus quality automatic cold storage

Pricing is per minute per month.

| Asset last viewed | Storage tier | Up to 720p | 1080p | 1440p (2K) | 2160p (4K) | Audio-only
| :---------------- | :----------- | :--------- | :---- | :--------- | :--------- | :---------
| 30+ days ago | `Infrequent` | $0.001440 | $0.001800 | $0.002880 | $0.005760 | $0.000144
| 90+ days ago | `Cold` | $0.000960 | $0.001200 | $0.001920 | $0.003840 | $0.000096

### Premium quality automatic cold storage

Pricing is per minute per month.

| Asset last viewed | Storage tier | Up to 720p | 1080p | 1440p (2K) | 2160p (4K) | Audio-only
| :---------------- | :----------- | :--------- | :---- | :--------- | :--------- | :---------
| 30+ days ago | `Infrequent` | $0.002160 | $0.002700 | $0.004320 | $0.008640 | $0.000144
| 90+ days ago | `Cold` | $0.001440 | $0.001800 | $0.002880 | $0.005760 | $0.000096

### Basic and plus quality static rendition automatic cold storage

Pricing is per minute per month.

| Asset last viewed | Storage tier | Up to 720p | 1080p | 1440p (2K) | 2160p (4K) | Audio-only
| :---------------- | :----------- | :--------- | :---- | :--------- | :--------- | :---------
| 30+ days ago | `Infrequent` | $0.000360 | $0.000450 | $0.000720 | $0.001440 | $0.000036
| 90+ days ago | `Cold` | $0.000240 | $0.000300 | $0.000480 | $0.000960 | $0.000024

### Premium quality static rendition automatic cold storage

Pricing is per minute per month.

| Asset last viewed | Storage tier | Up to 720p | 1080p | 1440p (2K) | 2160p (4K) | Audio-only
| :---------------- | :----------- | :--------- | :---- | :--------- | :--------- | :---------
| 30+ days ago | `Infrequent` | $0.000540 | $0.000675 | $0.001080 | $0.002160 | $0.000036
| 90+ days ago | `Cold` | $0.000360 | $0.000450 | $0.000720 | $0.001440 | $0.000024

## Delivery

When someone wants to watch a video on Mux, we use a process called “just-in-time encoding,” where we turn that standard, single video file into any number of bitrates and resolutions based on the viewer's needs. This process happens instantly.

In order to deliver video, Mux partners with multiple [CDNs](https://www.mux.com/video-glossary/cdn-content-delivery-network). Videos are delivered over HTTP-based streaming formats like [HLS](https://www.mux.com/video-glossary/hls-http-live-streaming). Video can be delivered to all major video players. If you're looking for a place to start with players, we suggest [Mux Player](https://www.mux.com/player). [Mux Data](https://data.mux.com/) is included with delivery, giving you the ability to monitor your video, including user engagement and quality of experience.

Cost is per minute of video delivered. To calculate video delivered, we measure the number of seconds of video delivered to a video player. Note that if a segment of video is delivered, it is charged, even if the viewer doesn't actually watch the video. For example, if a video player buffers 20 seconds of video ahead of the player, Mux Video still has to deliver those 20 seconds regardless of whether they are watched, and so those seconds are charged.

Mux Live Streams have the choice to use the plus or premium quality level. Mux offers live streaming up to 1080p.

### Basic and plus quality delivery

**Basic quality** level assets support on-demand video only, up to 4K.
**Plus quality** level supports live video up to 1080p, on-demand video up to 4K.

**The first 100,000 minutes delivered each month, regardless of quality or resolution, are free.**

Pricing is per minute.

Monthly volume tiers | Up to 720p | 1080p | 1440p (2K) | 2160p (4K) | Audio-only
:------------------- | :--------- | :---- | :--------- | :--------- | :---------
First 500,000 minutes | $0.000800 | $0.001000 | $0.001600 | $0.003200 | $0.000080
Next 500,000 minutes | $0.000760 | $0.000950 | $0.001520 | $0.003040 | $0.000076
Next million minutes | $0.000720 | $0.000900 | $0.001440 | $0.002880 | $0.000072
Next 4 million minutes | $0.000670 | $0.000838 | $0.001340 | $0.002680 | $0.000067
Next 4 million minutes | $0.000610 | $0.000763 | $0.001220 | $0.002440 | $0.000061
Over 10 million minutes | $0.000560 | $0.000700 | $0.001120 | $0.002240 | $0.000056

### Premium quality delivery

Live video supported up to 1080p, on-demand video up to 4K.

**The first 100,000 minutes delivered each month, regardless of quality or resolution, are free.**

Pricing is per minute.

Monthly volume tiers | Up to 720p | 1080p | 1440p (2K) | 2160p (4K) | Audio-only
:------------------- | :--------- | :---- | :--------- | :--------- | :---------
First 500,000 minutes | $0.001200 | $0.001500 | $0.002400 | $0.004800 | $0.000080
Next 500,000 minutes | $0.001140 | $0.001425 | $0.002280 | $0.004560 | $0.000076
Next million minutes | $0.001080 | $0.001350 | $0.002160 | $0.004320 | $0.000072
Next 4 million minutes | $0.001005 | $0.001256 | $0.002010 | $0.004020 | $0.000067
Next 4 million minutes | $0.000915 | $0.001144 | $0.001830 | $0.003660 | $0.000061
Over 10 million minutes | $0.000840 | $0.001050 | $0.001680 | $0.003360 | $0.000056

## Pricing levers and add-ons

Mux offers a few ways to suit your pricing to your use case: pricing levers you can pull to move our standard encoding, storage, and delivery pricing up and down, and add-ons you can use to do more with your assets.

### Video quality level

The first pricing lever you should consider is video quality level. Whether you should pick basic, plus, or premium video quality depends on your streaming needs. Read more in the [Input section](#input).

### Resolution-based pricing

Resolution-based pricing tiers are determined by the number of pixels in the video, calculated by multiplying height by width. Tiers apply to encoding, storage, and delivery. An asset may be delivered in multiple resolutions, in which case it will be billed based on minutes delivered in each resolution. Resolution-based discounts are automatically applied.

| Pricing tier | Pixels | Typical resolution |
| :----------- | :----- | :----------------- |
| Up to 720p | Up to 921,600 pixels | 1280x720 |
| 1080p | Up 921,601 to 2,073,600 pixels | 1920x1080 |
| 1440p (2K) | 2,073,601 to 4,194,304 pixels | 2560x1440 |
| 2160p (4K) | 4,194,305 to 8,294,400 pixels | 3840x2160 |

You can control what resolution gets played with [playback modifiers](/docs/guides/modify-playback-behavior).

2K and 4K resolutions are available for on-demand assets only.

### Volume discounts

You have a total of 300,000 stored minutes. They're broken down into the following:

* 5,000 basic minutes at 720p
* 55,000 basic minutes at 1080p
* 100,000 plus minutes at 1080p
* 140,000 plus minutes at 4K

With volume discounts automatically applied, your storage discounts would be applied like this:

* 5,000 basic quality minutes at 720p - Because those minutes fall into your “first 50,000 minutes, no volume discounts applicable”
* 55,000 basic quality minutes at 1080p - The first 50,000 minutes of 1080p assets are charged at the first tier. The rest, 5,000 of those minutes, fall into the next tier.
* 100,000 plus quality minutes at 1080p - Similarly, discounts aren't available for the first 50,000 minutes of smart 1080p, but are available for the next 50,000 minutes.
* 140,000 plus quality minutes at 4K - 50,000 of the minutes get no discount, 90,000 do.

If you find yourself with higher usage than the tiers outlined in the Input, Storage, and Delivery above, [we'd love to talk to you about how we can customize your pricing.](https://www.mux.com/sales-contact?utm_source=docs\&utm_campaign=video-pricing)

### Audio-only

All on-demand audio-only assets and alternate audio tracks are calculated at 1/10th the cost of 720p basic video for encoding, storage, and delivery, no matter quality level assigned to that asset.

When an asset is set to the basic quality level, encoding is free for both audio-only and video assets.

Your free first 100,000 minutes delivered each month include video and audio minutes.

### Auto-generated live captions

6,000 minutes per month free.
$0.024 per minute after.

Learn how to [add auto-generated live captions](/docs/guides/add-autogenerated-live-captions).

### Live simulcasting

$0.020 per minute per simulcast target.

Learn about [simulcasting](/docs/guides/stream-live-to-3rd-party-platforms).

### Multi-track audio

The primary audio track uploaded with your video file will be included with the encoding, storage, and delivery cost as part of your video. Any additional audio tracks uploaded will be charged at the audio-only rates for encoding, storage, and delivery.

Learn more about [multi-track audio](/docs/guides/add-alternate-audio-tracks-to-your-videos).

### Static renditions (MP4s)

Static renditions are a paid add-on feature.

[Static renditions come in two types: standard and advanced](/docs/guides/enable-static-mp4-renditions). Standard static renditions are free to generate, while advanced static renditions are charged per minute of preparation. [See advanced static rendition preparation pricing.](#advanced-static-rendition-mp4s-preparation).

All static renditions are billed per static rendition, per month stored. Billing is based on the resolution of the static rendition. See static rendition storage pricing in the [Storage section](#static-rendition-mp4s-storage).

For static renditions, each minute downloaded counts as a minute streamed and will be charged according to the video quality level. [Learn more about cost of delivery](/docs/pricing/video#delivery).

[Learn more about enabling MP4 renditions](/docs/guides/enable-static-mp4-renditions).

### Digital Rights Management (DRM)

DRM is an add-on feature to Mux Video, with a $100/month access fee + $0.003 "per license", and discounts available for high volumes. For more details on DRM licenses, see our [DRM pricing documentation](/docs/guides/protect-videos-with-drm#what-is-a-drm-license).

Learn more about [DRM](/docs/guides/protect-videos-with-drm).

## FAQs

### What's the difference between the pay as you go plan and pre-pay credits?

When you pre-pay for credits you get Mux usage at a discounted rate. For example, with Launch credits you get $100 of monthly usage for $20 a month or Scale credits, $1000 of monthly usage for $500 a month.

Credits are automatically applied to your invoice at the usage rates outlined above. For any usage above your credit amount, you will be billed at pay as you go rates. Credits reset at the beginning of your billing cycle, as long as you’re subscribed to that credits plan.

API access, features, etc, are all the same otherwise.

You don’t need to purchase pre-pay credits, if you expect your spend to be less than $40, we encourage you to stay on pay as you go. You can upgrade to a pre-pay credit at any time.

### If pricing is per minute, what happens if I upload a 30-second video?

You pay for the exact number of seconds of video. We don't have a minimum or round to the nearest minute.

### Do I pay for every quality/bitrate that is delivered?

No - if you encode a two-minute video, you pay for two minutes, even if Mux Video delivers that same video in 8 different formats or qualities.

### Is support included in my price?

Our engineers provide hands-on support via email and chat for everyone. We also offer support packages with Slack and phone support. [Reach out](https://www.mux.com/sales-contact?utm_source=docs\&utm_campaign=video-pricing) to us for more information about support packages.

### How does Mux Data fit in?

As a Mux Video customer, monitoring your views with Mux Data is included at no additional charge as long as the videos are hosted on Mux. You have access to all data features available on the Data Pay As You Go Plan. When you integrate Mux Data SDKs into your video player or use Mux Player, you'll start getting engagement and QoE data for your videos.

### Do you offer non-profit discounts?

We offer one-time credits for non-profit customers to help them start using Mux. [Get in touch](https://www.mux.com/sales-contact?utm_source=docs\&utm_campaign=video-pricing) to find out more.

### Do you offer custom, contract pricing?

Yes! We do have custom plans that are well-suited for scaling and enterprise customers. These plans begin at $3,000/month. [Get in touch](https://www.mux.com/sales-contact?utm_source=docs\&utm_campaign=video-pricing) to find out more.

### Do you charge for MP4 downloads?

Yes, see the [Static Renditions (MP4s) section](#static-renditions-mp4s) for more information.

### Does Low-Latency Live Streaming cost extra?

Nope! At Mux, all live streamed video, whether it's standard or low latency, have the same pricing.


# Report on your Mux costs
Use Mux's Billing Breakdown to report on platform costs
Mux provides a billing breakdown which gives you transparency into your Mux costs, with historical context that helps you spot trends and make informed decisions. From this page, you can chart your costs and purchases over time, track your plan credit spending, and see your credit balances. It includes information about your last six billing cycles. Any invoices that have been issued in the six most recent billing cycles are shown but it does not include usage in the current cycle that has not yet been invoiced.

You can find the Billing Breakdown in the Billing area of the Mux dashboard.

### Overview

<Image src="/docs/images/billing-breakdown-overview-chart.png" width={2042} height={966} alt="Last 6 Billing Cycles chart" />

The Last 6 Billing Cycles chart makes it easy to see how the costs of usage fluctuate month-to-month. The billing period can include multiple invoices if more than one was generated by Mux.

In the bar chart:

* **Committed Charges (Orange):** Your plan’s committed costs, this can be Video, Data, or general committed amounts. For example, for a Starter Plan, the commitment would be $10 per month.
* **Previous Cycle’s Overages (Purple):** Costs from usage in the previous month that goes above the committed amount, if any.
* **Credits Applied (Purple-striped):** Reductions of the dollar amount that is billed in that month from plan credits that were purchased or promotional credits received.
* **Tax (Red):** Taxes added to the bill, based on your local jurisdiction.

If you hover over the bar chart, the tooltip shows the exact dollar amounts for each of these values and the total amount that is billed for each month.

The highlight box on the right side of the page shows the total dollar amount owed in the most recent billing period, the change from the previous month, and any promo credits that were applied.

<Image src="/docs/images/billing-breakdown-overview-table.png" width={1920} height={1040} alt="Last 6 Billing Cycles table" />

The detailed breakdown shows you exactly how your costs break down across the major areas of spending. Not all of these will be present for every customer and they won’t be shown if they don’t apply.

* **Video Usage:** the dollar amount of consumption-based Video SKUs that were used.
* **Data Usage:** the dollar amount of consumption-based Data SKUs that were used.
* **Video Committed:** the dollar amount that was committed to spend on Video usage
* **Data Committed:** the dollar amount that was committed to spend on Data usage, which is usually Monitored Views.
* **Support:** the cost for support. For some customers, this is only charged once per year so it may not be included in the table, depending on the date of the charge.
* **Plan Credits Purchase:** the amount of plan credits that were purchased. These may be used over multiple months and the balance will be shown in the “Plan Credits Remaining”. For some customers, this is only charged once per year so it may not be included in the table, depending on the date of the charge.
* **Plan Credits Applied:** the dollar amount that was paid from a plan credits balance.
* **Total:** the total dollar amount that was billed to you from your Mux usage.
* **Plan Credits Remaining:** the amount of plan credits that remain after the month’s charges were applied to an existing balance.

Rows that are highly variable include a percentage below the value which indicates the percentage change, increase or decrease, from the previous month.

While the overview gives you the overall picture, we also provide breakdowns at the product-level. The detailed breakdowns show you exactly how your costs break down within each product.

### Mux Video

<Image src="/docs/images/billing-breakdown-video.png" width={1920} height={1824} alt="Mux Video Billing chart and table" />

Mux Video billing is broken down into the major areas of Mux Video usage and spending:

* **Input VOD**: Input of recorded assets
* **Input Live**: Input of live streams
* **Advanced Static Rendition Generation:** Generation of advanced static renditions; generating standard static renditions is free.
* **Storage**: Storage for all assets, excluding static renditions
* **Static Rendition Storage:** Storage for standard and advanced static renditions
* **Delivery:** All delivery, including audio-only and video assets, live streams, and static renditions
* **Other:** DRM, simulcasting, auto-generated live captions

### Mux Data

<Image src="/docs/images/billing-breakdown-data.png" width={1920} height={1224} alt="Mux Data Billing chart and table" />

Mux Data billing shows the breakdown of pre-committed costs for Data views and consumption-based view pricing.

For more information about Mux video billing see our main [pricing page](/docs/pricing/video) or refer to the billing breakdown page for your account.


# Estimating your Mux Video costs
Learn how to use Mux's pricing to estimate costs under different scenarios
If there’s one thing to take away from Mux’s video pricing model, it’s that minutes are everything. Minutes encoded, minutes stored, and minutes delivered are the only things that matter when it comes to billing. We’ve [written previously](https://www.mux.com/blog/why-we-still-price-in-minutes-for-video) about why we think this is a better way of charging for video.

You can find all of our costs on our [pricing page](/docs/pricing/video), but you may be wondering how you can calculate estimates using these numbers. We’re going to outline a couple ways you can do this so you can be confident that you can predict your costs at any time.

### User-generated content platform

If you’re building a user-generated content platform (UGC), then encoding & storage is going to be a big consideration for you. Most UGC platforms follow some kind of power-law distribution, where a small percentage of the content makes up a large amount of views (in YouTube’s case, for example, much less than 1% of the content uploaded makes up much more than 99% of the views.

Your split might not be as extreme, maybe it’s close to 95/5, 90/10 or even 80/20, but this is the general tendency that we see for UGC platforms. You will want to consider using the [basic video quality level](/docs/guides/use-video-quality-levels), which is $0 encoding and pairing that with [Automatic Cold Storage](https://www.mux.com/blog/introducing-our-coolest-pricing-lever-yet-automatic-cold-storage) so that you get a cheaper storage rate for assets that are rarely viewed.

### Use high, medium and low ranges to make your estimates

If you have an existing application, you can use your existing usage patterns to estimate how much video your users might watch. If you don’t have any existing users to benchmark off of, estimating will be a little trickier. For example:

* Out of 1,000 monthly active users, we think 25% of them will engage with our new video product. Out of that 250 users we think 100 of them will stream 10 minutes of video and 150 of them might stream 25 minutes of video.

If you’re launching something entirely new, then we recommend making 3 separate estimates where you model scenarios that account for how popular your video might be. Here’s some examples:

* Low end: we think in the first few months we’ll get 150 active users on our product. Out of those 150 we think they’ll each stream 45 minutes of video per month.
* Middle of the road: we think in the first few months we’ll get 400 active users and they’ll be streaming an hour and a half of video per month.
* Moonshot: in the best case scenario we think we’ll get 1,000 active users and they’ll stream 2 and a half hours of video per month

Now, for each of those 3 scenarios you can plug the results into the calculator and get a range of costs. That range might be large, but you will have a good idea of how your costs will look depending on the uptake of your users.

### Working with Gigabytes instead of minutes

Some services charge for video based on file sizes, either stored or as bandwidth for delivery. There’s a couple ways you can compare these costs with Mux’s minute based pricing. These will only be a guide because 1GB of video can vary in duration depending on the bitrate, but we can use some estimates that will work for common video encoding settings and work from there.

1 minute of 1080p video averages around 38MB (at 5Mbps), this works out at 25 minutes of video per Gigabyte.

Here’s some example conversions based on how many gigabytes you might have using this as a base:

| Video (1080p, 5Mbps) | Estimated minutes |
| --- | --- |
| 1GB | 25 minutes |
| 10GB | 250 minutes |
| 100GB | 2,500 minutes |

Taking how many gigabytes you have and multiplying it by 25 for 1080p content should give you an estimate in minutes that you can plug into the calculator.

Here’s some estimates you can use for different resolutions:

| Resolution | Estimated minutes per GB |
| --- | --- |
| 720p (3.5Mbps) | 40 minutes |
| 1080p (5Mbps) | 25 minutes |
| 1440p (2K, 8Mbps) | 15 minutes |
| 2160p (4K, 12Mbps) | 10 minutes |

## What to consider when estimating your delivery

### Views (mostly) don’t matter

You might be used to thinking of delivery in terms of how many views a video had, as that’s a good metric for how popular a video is. From Mux’s perspective, 1 person viewing a video for 10 minutes is identical to 10 users watching a 1 minute video each. When you add it all up, 10 minutes of video has been delivered, and that’s how it will appear on your bill.

### Minutes delivered, not minutes watched

Mux bills on minutes delivered even if they weren’t watched. If a viewer starts playing a 20 minute video, they might only watch 5 minutes. Additionally, the player might have preloaded an extra minute of video that the viewer never saw. From a billing perspective, this is 6 minutes of delivery even though that extra minute was never seen, because we still had to deliver it to the client as requested by the player.

### Are looping videos charged for each time they repeat?

Whether a looping video is charged for one playthrough or for each time it repeats depends on the caching behavior of the browser and player being used. If the browser is not clearing out its buffers while the video is repeating then subsequent loops are not going to be charged for delivery, because we never see new requests for the video to our infrastructure as the video loops.

It's difficult to predict and control this browser behavior though. There are also physical limitations as to how much video can be stored in memory before some has to be removed.

In general, the shorter a video is, and the fewer renditions that are being switched between during playback, the more likely that the video will remain in the browsers buffers. Videos that are longer than roughly 60 seconds are likely to stretch what can fit in a browser's video buffer and lead to more requests (and delivery charges).

Configuring your player to use a single rendition instead of multiple ones can make it easier for a browser to cache video, but at the cost of forcing a single resolution onto users regardless of their bandwidth. If your videos are particuarly short, you could try using [static MP4s](/docs/guides/enable-static-mp4-renditions) instead of the default HLS delivery.

For more information about Mux video billing see our main [pricing page](/docs/pricing/video).


# Optimizing your Mux Video costs
Learn how to use different pricing strategies and levers to optimize your costs under different scenarios
You can find all of our costs on our [pricing page](/pricing), but you may be wondering how you can optimize your costs and potentially find ways to reduce your bill. We’re going to outline a few ways you can optimize your usage of Mux so that you can keep your costs as low as possible.

# Cost levers you can leverage through the Mux Video product

Mux offers a few ways to optimize your costs depending on your use case. We have many features that you can take advantage of that will influence your encoding, storage, and delivery costs. There are also add-ons you can opt-in to using so that you only pay for the features you need.

## Use Basic Video Quality

There is no charge for video encoding when using basic quality. This makes encoding free when uploading videos that use this quality level.

The basic video quality level uses a reduced encoding ladder with a lower target video quality and is suitable for simpler video use cases, particularly those that have a lot of user generated content.

You can learn more about [video quality](/docs/guides/use-video-quality-levels#supported-features) and what features are supported.

<Callout type="info">
  Basic quality level assets have a minimum storage charge of one month and are prorated thereafter. Storage is prorated by the percentage of the month that the video is stored. For example, if a 10-minute asset is stored for only half a month, you will be charged for only 5 minutes.
</Callout>

## Automatic Cold Storage

With Automatic Cold Storage, we automatically transition a video or audio-only asset to a different storage level based on how long it has been since it was last viewed. The colder the asset gets, the lower the billing rate becomes.

See more about [Automatic Cold Storage](/docs/pricing/video#automatic-cold-storage)

## Capping maximum delivery resolution

By setting a maximum delivery resolution, you can take advantage of our [resolution based pricing](https://www.mux.com/blog/introducing-resolution-based-pricing).

The playback URL below with the `max_resolution` query parameter modifies the resolutions available for the player to choose from.

```
https://stream.mux.com/{PLAYBACK_ID}.m3u8?max_resolution=720p
```

The `max_resolution` parameter can be set to `720p`, `1080p`, `1440p`, or `2160p`. You may want to do this in order to reduce your delivery costs, or build a feature to your product where only certain viewers get lower resolution video.

See more [here](/docs/guides/modify-playback-behavior)

## Capping upload resolution

If the video being captured in your app doesn't need to be played back in full resolution, specify a lower resolution when recording to take advantage of Mux's resolution dependent pricing.

When uploading from a mobile device ([Android](/docs/guides/upload-video-directly-from-android#setting-a-maximum-resolution), [iOS or iPadOS](/docs/guides/upload-video-directly-from-ios-or-ipados#setting-a-maximum-resolution)), you can utilize our upload SDKs to adjust the resolution of your video input locally before it is uploaded to Mux. By default the SDK will adjust the input resolution to 1920 x 1080 for any inputs that are larger.

[Control recording resolution](/docs/guides/control-recording-resolution)

## Preload

If you want to reduce delivery costs for users who might delay watching a video (or not watch it at all), you can set `preload="none"` in Mux Player (or other compatible player). This means that no video will be pre-loaded until the user plays the video. You could also use `preload="metadata"` which will only load the minimum amount of data needed for the player to get basic information about the video, like its duration.

The tradeoff with using `preload="metadata"` or `preload="none"` is that when the user plays the video they will experience a slower startup time because the video has to load before playback can start.

<Callout type="info">
  Mobile browsers, especially on iOS and Android, often ignore auto and metadata due to data-saving policies.

  While preload serves as a hint, browsers ultimately decide how to handle video loading. If you need precise control, consider managing video loading via JavaScript.
</Callout>

## Lazy loading

Lazy loading can be beneficial because you can opt to only load the player when the user is ready to watch the video, like scrolling it into view. If the player isn't loaded, you're not charged for any video delivery yet. See our guide on how to implement lazy loading for Mux Player [here](/docs/guides/player-lazy-loading).

## Delivery Usage API

This is not a cost optimization feature, but is a way to get asset level delivery visibility. You can utilize the <ApiRefLink href="/docs/api-reference/video/delivery-usage">Delivery Usage API</ApiRefLink> to retrieve information about the delivery of a specific video in a given time period. The Delivery Usage API allows you to get delivery and streaming usage details for each asset and across all assets.

Delivery usage details are aggregated every hour at the top of the hour and can be requested for a specified time window within the last 90 days starting at 12 hours prior to when the request is made.

# Cost levers you can leverage on your own

## Player buffer length

A player has a buffer for the media it plays. Segments are downloaded into the buffer, decoded, and then played. The forward buffer is the media that has not yet been played. In most modern web players, you can set the buffer length of the playback engine.

The main tradeoff when customizing these parameters is performance. Shortening the buffer length leaves your player vulnerable to rebuffering and the viewer waiting if there's a temporary network disconnection or hiccup and that buffer runs out. This is an advanced option, so please keep that in mind.

By reducing this value, you save on the delivered minutes portion of your bill because you're reducing the actual video delivery from the player. The mechanism to control this sometimes differs from player to player but in Mux Player and hls.js, you can set this in a couple of places by:

```javascript
const player = document.querySelector('mux-player');
player._hls.config.maxBufferLength = { number in seconds }
player._hls.config.maxBufferSize = { bytes }
player._hls.config.maxMaxBufferLength = { number in seconds }
```

[maxBufferLength](https://github.com/video-dev/hls.js/blob/master/docs/API.md#maxmaxbufferlength) = Maximum buffer length in seconds. If buffer length becomes less than this value, a new fragment will be loaded.

[maxBufferSize](https://github.com/video-dev/hls.js/blob/master/docs/API.md#maxbuffersize) = 'Minimum' maximum buffer size in bytes. If buffer size upfront is bigger than this value, no fragment will be loaded.

[maxMaxBufferLength](https://github.com/video-dev/hls.js/blob/master/docs/API.md#maxmaxbufferlength) = Maximum buffer length in seconds. Hls.js will never exceed this value, even if maxBufferSize is not reached yet. hls.js tries to buffer up to a maximum number of bytes (60 MB by default) rather than to buffer up to a maximum nb of seconds.

For more information, see the [hls.js documentation](https://github.com/video-dev/hls.js/blob/master/docs/API.md) on these options.

<Callout type="error">
  These options are all via hls.js and Mux Player. Your own player and playback engine will differ.
</Callout>

## Delete live stream assets when streaming ends

To save on storage costs, you can delete the resulting asset that gets created once your live stream has completed. This way you will limit storage charges and prevent further delivery costs. The ingest/encoding cost is still the same once the live stream has completed, this only affects storage.

<Callout type="info">
  Storage is calculated by minutes of video stored. Storage is prorated by the percentage of the month that the video is stored. For example, if a 10-minute asset is stored for only half a month, you will be charged for only 5 minutes.
</Callout>

## Pause when out of viewport

One way of reducing your delivery costs is to reduce the time viewers spend having your video play and buffer. You could implement a way to pause your video player when the viewer's browser window is out of focus or not visible. This can prevent unnecessary playback and delivery charges.

You can achieve this by listening to the `visibilitychange` event on the window object:

```javascript
document.addEventListener("visibilitychange", function () {
    if (document.visibilityState !== "visible") {
        console.log("Window is inactive, pausing video player");
        // replace the below with the corresponding pause method of the player you're using
        player.pause()
    }
});
```

## Are you still watching?

Many streaming services want to reduce their bandwidth and streaming delivery costs so they have implemented an "Are you still watching?" dialog popup that interrupts playback when the viewer has been watching on autoplay for an extended period of time with no interaction.

You could implement this in your own application as well. Below is a small proof of concept on how you might achieve this using React.

```jsx
import { useState } from "react";
import MuxPlayer from "@mux/mux-player-react";

export default function App() {
  const [lastPlayedTimestamp, setLastPlayedTimestamp] = useState();

  const playbackId = "g11xsFT2MA9E92016CuQTSh8kv01aaUhJK"
  const secondsToStopVideo = 10; // timer in seconds

  const handleAllUserActivity = (event) => {
    setLastPlayedTimestamp(event.target.currentTime) // reset the last played timestamp after each play
  };

  const handleTimeUpdate = (event) => {
    const player = event.target;
    const timeElapsed = player.currentTime - lastPlayedTimestamp;
    if (!player.paused && timeElapsed > secondsToStopVideo) {
      player.pause();
      alert("Are you still watching?");
    }
  };

  return (
    <>
      <MuxPlayer
        playbackId={playbackId}
        onPlaying={handleAllUserActivity}
        onSeeking={handleAllUserActivity}
        onRateChange={handleAllUserActivity}
        onVolumeChange={handleAllUserActivity}
        onTimeUpdate={handleTimeUpdate}
      />
    </>
  );
}
```

## Not loading multiple videos on one webpage

Since Mux customers are charged for any delivered video, if a video player is loaded on a webpage it *may* pre-load some amount of video before playback has been initiated.

This would result in minutes delivered just on page load before the viewer even hits the play button.

<Callout type="info">
  If you're displaying multiple videos on page load for each viewer, this could end up multiplying your bill as many videos are causing delivery charges at once. This could be very costly.
</Callout>

## Limit the duration of your uploads

If you're looking to put a duration cap on your videos, you can set duration limits upon upload. This is not supported directly in Mux's API, but you can set this up on your end by checking the duration of the video before you upload it to Mux and reject any videos that are too long. This is a good way to limit your costs by not uploading videos that are unnecessarily long.

<Callout type="info">
  This is done usually by UGC platforms (social media) given the short form content focus, but also by platforms looking to make sure they're not paying for unnecessary ingests costs.
</Callout>

Below is a small proof of concept on how you might achieve this using React.

```jsx
import React, { useRef, useState } from 'react';
import * as UpChunk from '@mux/upchunk';

function VideoUpload() {
  const pickerRef = useRef(null);
  const [uploading, setUploading] = useState(false);

  const getVideoDuration = (file) => {
    return new Promise((resolve) => {
      const video = document.createElement('video');
      video.preload = 'metadata';

      video.onloadedmetadata = () => {
        window.URL.revokeObjectURL(video.src);
        resolve(video.duration);
      };

      video.src = URL.createObjectURL(file);
    });
  };

  const getUploadUrl = () =>
    fetch('/the-backend-endpoint').then((res) => res.text());

  const handleUpload = async () => {
    const file = pickerRef.current?.files[0];
    
    if (!file) {
      alert('Please select a file');
      return;
    }

    console.log(file);
    const duration = await getVideoDuration(file);

    if (duration > 300) {
      // 5 minutes
      console.log(duration);
      alert('Video must be under 5 minutes');
      pickerRef.current.value = '';
      return;
    }

    setUploading(true);

    const upchunkUpload = UpChunk.createUpload({
      endpoint: getUploadUrl,
      file: file,
      chunkSize: 5120, // Uploads the file in ~5mb chunks
    });

    // subscribe to events
    upchunkUpload.on('error', (err) => {
      console.error('💥 🙀', err.detail);
      setUploading(false);
    });

    upchunkUpload.on('success', () => {
      console.log('Upload complete! 🎉');
      setUploading(false);
      pickerRef.current.value = '';
    });

    upchunkUpload.on('progress', (progress) => {
      console.log(`Upload progress: ${progress.detail}%`);
    });
  };

  return (
    <div>
      <input
        ref={pickerRef}
        id="picker"
        type="file"
        accept="video/*, audio/*"
        disabled={uploading}
      />
      <button 
        id="send" 
        onClick={handleUpload}
        disabled={uploading}
      >
        {uploading ? 'Uploading...' : 'Upload'}
      </button>
    </div>
  );
}

export default VideoUpload;
```
