Fix video playback problems

Find the cause of an HEVC playback problem and the steps that fix it. Each entry has steps you can take yourself and steps for your IT department. After a playback test, the Test page lists the entries that match your device.

Problems and fixes

The entries are grouped by platform. Open an entry to read the cause, the fixes and the sources.

Check whether the browser uses hardware decoding

These pages and tools show which decoder the browser uses. Type each internal page address into the address bar. Browsers do not open these pages from links.

Chrome and Edge

  1. Type chrome://gpu into the address bar. In Edge, type edge://gpu.
  2. Under Graphics Feature Status, check that Video Decode shows Hardware accelerated.
  3. Under Video Acceleration Information, look for Decode hevc main and Decode hevc main 10. When they are missing, the graphics hardware or its driver does not offer HEVC decoding to the browser.
  4. While a video plays, open chrome://media-internals (in Edge, edge://media-internals) in a second tab, select the player, and find kVideoDecoderName. D3D11VideoDecoder, VDAVideoDecoder, VaapiVideoDecoder, V4L2VideoDecoder and VideoToolboxVideoDecoder mean hardware decoding. FFmpegVideoDecoder, VpxVideoDecoder and Dav1dVideoDecoder mean software decoding. On a Mac, VideoToolbox can also decode in software.
  5. On Windows, open Task Manager, select Performance and then the GPU, and watch Video Decode (Intel and NVIDIA) or Video Codec (AMD) while the video plays.

Firefox

  1. Type about:support into the address bar.
  2. Scroll to the Media section and open Codec Support Information.
  3. Read the HEVC row. It shows whether Firefox supports software decoding and hardware decoding. On Windows, Install extension means the HEVC Video Extensions package is missing.

Safari

Safari has no page that lists its decoders. For Safari, the playback test reports hardware decoding from the power efficient answer of Media Capabilities.

On a Mac, you can also open Activity Monitor while a video plays and look for VTDecoderXPCService, the process that runs VideoToolbox video decoding.

Install HEVC Video Extensions on Windows

Microsoft Edge and Firefox on Windows decode HEVC through a codec package from the Microsoft Store. Chrome, Brave and Opera decode HEVC through the graphics driver and do not need the package.

HEVC codec packages in the Microsoft Store
Package Store ID Price Requirements
HEVC Video Extensions from Device Manufacturer (opens in a new tab) 9N4WGH0Z6VHQ Free Windows 10 version 1709 (build 16299) or later on x64 or Arm64
HEVC Video Extensions (opens in a new tab) 9NMZLZ57R3T7 0.99 US dollars Windows 10 version 1709 (build 16299) or later on x86, x64 or Arm64

For you

  1. Open one of the two Microsoft Store listings above and install the package.
  2. Close the browser completely, open it again, and run the playback test.
  3. If the Microsoft Store is blocked on a work computer, ask your IT department to install the package.

For IT

  • To check whether the package is installed, run Get-AppxPackage -AllUsers *HEVC* in an elevated PowerShell window.
  • To install the free package without the Store app, run winget install --id 9N4WGH0Z6VHQ --source msstore --accept-package-agreements --accept-source-agreements.
  • In Intune, add the free package as a Microsoft Store app (new) with the Store ID 9N4WGH0Z6VHQ, set Install behavior to System, and assign it as Required. Intune does not deploy paid Store apps.
  • If edge://gpu shows License check for app failed (0xC00DB3B3), the package came from outside the Microsoft Store. Remove it with Remove-AppxPackage and Remove-AppxProvisionedPackage, restart the computer, and install it again from the Store.

What each test checks

The playback test plays each file in a visible player for a few seconds and counts the video frames the browser presents. Each test uses one of these paths.

File playback
The browser plays an MP4, QuickTime or WebM file in a video element.
Media Source Extensions
The page downloads a fragmented MP4 file and passes it to the video element in pieces, the way streaming players do.
HLS stream
The browser plays HLS streams with HEVC variants. One stream lists the codecs of each variant, one leaves them out, and one stores each variant in a single file that the playlist reads in byte ranges. Browsers with built-in HLS play the streams directly, and other browsers play them through the hls.js library.
WebCodecs decoder
The page decodes raw HEVC frames with the WebCodecs VideoDecoder API, without a video element.
Two players at once
The page plays the same HEVC file in two visible video elements at the same time and counts the frames each one presents.
Audio playback
The page plays three seconds of audio without sound and measures the signal level of the test beeps.
Network check
The page asks the server for the first two bytes of a video file. A correct server answers with 206 Partial Content. A 200 answer means a proxy or filter on the network removed the range request. The page also asks the server which headers arrived with the request. A Via, Forwarded or X-Forwarded-For header, or a header that a known proxy product adds, means the request passed through a proxy.

What the results mean

Test sets