# Track playing time by rendition

See how much time viewers spend watching each video rendition (resolution, bitrate, frame rate, and codec) in the Mux dashboard.

Every view moves through one or more **renditions** — the specific resolution, bitrate, frame rate, and codec combination a player is actually receiving at a given moment, as network conditions and player logic shift the stream up or down an encoding ladder. Playing time by rendition tells you how much aggregate player wall clock time viewers actually spent in *each* rendition, across the full lifetime of the view sessions.

Use this to answer questions like:

* How much of my viewers' time is spent at 1080p vs. 720p vs. lower resolutions?
* Is a new 4K offering actually being watched, or rarely reached?
* Are there rungs on my bitrate ladder that are underutilized?
* For a specific title, country, or device, what rendition mix are viewers actually experiencing?
* Are there regional or device differences that jump out in a breakdown comparison?

This guide covers the Mux dashboard experience for playing time by rendition. Programmatic access via the Data API is coming soon — this guide will be updated once it ships.

<Callout type="info" title="Minimum player SDK version">
  Rendition-level playing time is only collected by recent Mux Data SDK releases. Views recorded on older SDKs won't contribute data here, even if the feature is enabled for your environment.

  | Platform | Package | Minimum version |
  | :-- | :-- | :-- |
  | Web | `@mux/mux-player` | v3.11.4 (bundles `mux-embed` ≥5.16.1) |
  | Android | `mux-player-android` | v1.5.3 (bundles `mux-stats-sdk-java` ≥8.8.0) |
  | iOS | `mux-player-swift` | v1.2.1 or later, **and** a resolved `mux-stats-sdk-avplayer` ≥4.10.0 |

  If you're on a [custom integration](/docs/guides/build-a-custom-data-integration) instead of Mux Player, confirm your core SDK version directly: `mux-embed` ≥5.13.0, `stats-sdk-java` ≥8.6.0, or `stats-sdk-objc` ≥5.7.0.

  On iOS, updating `mux-player-swift` opens the door to a qualifying `stats-sdk-objc` version, but an existing `Package.resolved` lock can keep you pinned to an older one. Re-resolve your dependencies (`swift package update`) and confirm `mux-stats-sdk-avplayer` resolves to 4.10.0 or later.
</Callout>

## View total playing time by rendition

### In the dashboard

Go to the **Metrics** page in your environment and open **Playing time by rendition** under the **Views** section in the metrics explorer. The page opens with total playing time for the current filters and time range shown above the chart, with the default timeseries breakdown and ranked rendition table below it.

<Image sm alt="Metrics navigation menu in the Mux dashboard, with Playing Time by Rendition listed under the Views metric group and marked with a NEW badge." src="/docs/images/playing-time-by-rendition-nav.png" width={1172} height={1382} />

<Image alt="Playing Time by Rendition dashboard page showing total playing time, a stacked bar timeseries chart broken down by rendition, and a ranked table of renditions below." src="/docs/images/playing-time-by-rendition-A.png" width={3212} height={1826} />

## See a breakdown over time

By default, the page charts playing time per rendition across the selected time range, so you can see how your audience's rendition mix shifts over time — for example, after a new encoding profile ships.

### In the dashboard

The timeseries chart is the default visualization. Each color represents a distinct rendition (grouped according to your current [group by selection](#customize-which-rendition-attributes-to-group-by)); select rows in the table below the chart to highlight specific renditions.

<Image alt="Stacked bar chart showing Playing Time broken down by rendition across each day over a 30 day period." src="/docs/images/playing-time-by-rendition-B.png" width={3166} height={688} />

Select a rendition's checkbox in the table to highlight just that rendition in the chart above; deselect others to isolate a single one or a subset for comparison.

<Image alt="Renditions table with the 1920w/1080h and 2.6Mb/1280w/720h renditions checked, highlighting only those two renditions in the stacked bar timeseries chart above while the rest of the chart is grayed out." src="/docs/images/playing-time-by-rendition-G.png" width={1794} height={1220} />

## Rank renditions by playing time

Below the chart, a table lists every rendition (or rendition combination) ranked by playing time, with its share of the total.

### In the dashboard

The table below the chart lists each rendition with its playing time and percentage of total, sorted highest to lowest. Use the pagination controls below the table to paginate through additional rows if your ladder has more renditions than fit on one page.

<Image alt="Renditions table listing each rendition with its total hours and percentage of total playing time, sorted highest to lowest, with pagination showing 1 to 10 of 29 renditions." src="/docs/images/playing-time-by-rendition-C.png" width={3114} height={1246} />

## Customize which rendition attributes to group by

Renditions are made up of several attributes. By default, rows are grouped by the full combination of all of them, but you can narrow which attributes define a distinct row.

### In the dashboard

Select **Group by** above the table to open the **Choose rendition parameters** dialog, and choose which attributes to group by: Height, Width, Fps, Bitrate, Video Codec, or Rendition Name. The chart and table update together when you save.

<Image sm alt="Choose rendition parameters dialog with checkboxes for Height, Width, Fps, Bitrate, Video Codec, and Rendition Name to select which attributes to group renditions by." src="/docs/images/playing-time-by-rendition-D.png" width={656} height={656} />

## Compare renditions across a dimension

To see how rendition mix differs across up to four values of a dimension — for example, four specific titles, or four countries — use the **Compare across:** view. This replaces the timeseries chart with one pie chart per selected value, and pivots the table to show each value as its own column.

### In the dashboard

Select **Compare across:** below the chart, choose a dimension (for example, **Video Title** or **Country**), and select up to four values to compare. The page shows one pie chart per selected value, each broken down by rendition, and the table below adds a column per value.

<Image alt="Playing Time by Rendition page comparing four countries side by side, each shown as its own pie chart broken down by rendition, with a table below showing hours and percentage for each rendition per country." src="/docs/images/playing-time-by-rendition-E.png" width={3202} height={1788} />

<Callout type="info">
  Each pie chart shows only the top 10 renditions by playing time for that value across the timeframe, with the rest folded into an `other` slice. To narrow the renditions shown instead of just capping the count, apply a [rendition filter](#filter-your-results) (for example, restrict to a resolution or codec) before comparing across a dimension.
</Callout>

## Filter your results

Playing time by rendition supports the same dimension filtering as the rest of Mux Data.

### In the dashboard

Use **Filters** in the page header to filter by any supported dimension, including rendition attributes like resolution. See [Filter your data](/docs/guides/filter-your-data) for the general filtering pattern.

<Image alt="Filters panel open on the Playing Time by Rendition page, showing the Video Title dimension filter set to '4th Of July Special'." src="/docs/images/playing-time-by-rendition-F.png" width={2380} height={486} />

## Limitations

* Views recorded on Mux Data SDKs below the minimum versions above won't contribute rendition-level playing time data.
* Comparing across a dimension is capped at 4 values per request.
* Historical (long-term) time ranges aren't supported yet — standard time ranges only at launch.

## Next steps

* [Understand metric definitions](/docs/guides/understand-metric-definitions)
* [Filter your data](/docs/guides/filter-your-data)
* [Build a custom dashboard](/docs/guides/build-a-custom-dashboard)
