Appearance
Video codecs
Historical migration notice
This is the original July 2026 codec migration notice. Dates and compatibility notes below describe that announcement; test current playback on your supported clients.
Upcoming change: match videos move from H.264 to H.265
We are re-encoding match video output from H.264 (AVC) to H.265 (HEVC). At equivalent visual quality the files are roughly 60% smaller, so videos download and start playing noticeably faster when you serve them to your users in your own app or platform.
What is affected
This directly affects outputs API and results API
Only two outputs change codec:
- Raw video — the full unedited recording.
- Match without breaks — the full match with dead time removed.
Highlights are not affected and stay H.264. If your integration only consumes highlights, nothing changes for you.
What you need to do
Make sure your video player can decode both H.264 and H.265 before the rollout.
These two videos are replaced in place
- The object key does not change — the same key you already retrieve from the output API will return an H.265 file once it has been re-encoded
- There is no new field, no new endpoint, and no migration step on your side other than video player support.
Because the transition happens per video rather than all at once, your player must handle both codecs for the duration of the rollout.
Timeline
- 31st July 23:59PM UTC - 31st Aug 2026 23:59PM UTC:*
Making changes to your video players
Testing with different outputs
After 31st Aug 2026 23:59PM UTC:
- H.265 becomes the default for all partners
- H.264 is retired. Only H.265 is served.
Test files
Two matched samples from the same source recording. Same resolution, same frame rate, same footage — only the codec differs. Play both in your client and confirm each one decodes.
60-second clips — start here
| Codec | Size | Link |
|---|---|---|
| H.264 | 24.1 MB | clip60s-original-h264.mp4 |
| H.265 | 8.6 MB | clip60s-reencoded-h265.mp4 |
Full-length videos — for bandwidth and storage testing
| Codec | Size | Link |
|---|---|---|
| H.264 | 2.00 GB | sample-original-h264.mp4 |
| H.265 | 745 MB | sample-reencoded-h265.mp4 |
Both endpoints support HTTP range requests, so you can test seeking and progressive playback without downloading the whole file.
Player compatibility notes
⚠️ Our H.265 files are tagged
hvc1, nothev1. This matters. Safari, iOS, macOS, and Android hardware decoders require thehvc1tag; a file taggedhev1will show a black frame or fail to load. If you remux our files, preserve the tag with-tag:v hvc1.
Where H.265 stands across common clients:
| Platform | H.265 support | Action Needed |
|---|---|---|
iOS / iPadOS, native and WKWebView | Yes, hardware decode. | NO |
| Android, native and WebView | Yes on essentially all modern devices | NO |
| macOS (Safari, Chrome, Edge) | Yes, hardware decode | NO |
| Chrome / Edge (Windows) | Needs a hardware decoder, sometimes HEVC Video Extensions | YES |
| Chrome (Linux) | Usually unavailable | YES |
| Firefox (desktop) | Limited; depends on the OS decoder | YES |
| ExoPlayer / AVPlayer / VLC / ffmpeg | Yes | NO |
Mobile WebViews are fine. iOS WKWebView uses the same WebKit and AVFoundation decoder path as a native player, and Android's WebView decodes H.265 through the platform hardware decoder. If you embed video in a WebView inside your mobile app, you are in the same position as a native player.
Desktop browsers are the weak spot. macOS works everywhere. Windows usually works, but not always. Linux and Firefox often do not. ▎ If you show video in a desktop browser, test it there first — that is where you are most likely to need a change.
Checklist
- [ ] Play the 60-second H.264 clip in your client — confirm it works today.
- [ ] Play the 60-second H.265 clip in the same client.
- [ ] Test seeking and range requests against the full-length H.265 file.
- [ ] Test every platform you ship on, desktop browsers included.
- [ ] Confirm your code reads the codec from the file rather than assuming H.264.