Convert HEVC to WebM — Free Online Tool

Convert HEVC/H.265 video files to WebM format using VP9 video compression and Opus audio — ideal for bringing high-efficiency encoded content into an open, web-native format that plays natively in browsers without plugins. This tool runs entirely in your browser via FFmpeg.wasm, so your files never leave your device.

FFmpeg Command

Copy this command to run the same conversion locally with FFmpeg on your desktop. Download FFmpeg

Free — no uploads, no signups. Your files never leave your browser.

Estimated output:

Conversion Complete!

Download

How It Works

HEVC (H.265) video must be fully decoded and re-encoded during this conversion because WebM does not support the H.265 codec — it exclusively uses VP9 (or AV1) for video. Every frame is decompressed from H.265 and then re-compressed using the libvpx-vp9 encoder at a CRF of 33, which targets a visually good quality level. The special flag '-b:v 0' is required to enable true constant-quality mode in VP9, overriding its default behavior of targeting a specific bitrate. If your HEVC file contains audio, it is transcoded from whatever codec it uses (commonly AAC or AC3) into Opus audio at 128k using libopus, which is the modern, high-quality audio codec native to the WebM container. The result is a fully self-contained .webm file ready for HTML5 video playback.

What Each Flag Does

Flag What it does
ffmpeg Invokes the FFmpeg program, the open-source multimedia processing engine that handles all decoding, encoding, and container operations in this conversion pipeline.
-i input.hevc Specifies the input file — in this case an HEVC/H.265 raw bitstream or container file. FFmpeg will probe this file to detect the H.265 video stream and any accompanying audio before processing begins.
-c:v libvpx-vp9 Selects the VP9 video encoder (libvpx-vp9) for the output, which is the only video codec compatible with the WebM container used here. This triggers a full re-encode of every video frame from H.265 into VP9.
-c:a libopus Selects the Opus audio encoder (libopus) for the output audio stream, which is the primary and preferred audio codec for the WebM container. Any audio from the source HEVC file — typically AAC or AC3 — will be transcoded to Opus.
-crf 33 Sets the Constant Rate Factor for VP9 encoding to 33, targeting a consistent visual quality level across the output. Lower values (toward 0) produce higher quality and larger files; higher values (toward 63) produce smaller files with more compression artifacts. This value is only active as a quality target when combined with '-b:v 0'.
-b:a 128k Sets the Opus audio bitrate to 128 kilobits per second, which provides good stereo audio quality suitable for most content including music and dialogue. Opus at 128k generally outperforms AAC or MP3 at the same bitrate.
-b:v 0 Explicitly sets the video bitrate target to zero, which is required to enable true constant-quality (CRF) mode in the VP9 encoder. Without this flag, libvpx-vp9 defaults to a constrained bitrate mode and largely ignores the -crf value.
output.webm Specifies the output filename and instructs FFmpeg to use the WebM container format (inferred from the .webm extension), which packages the VP9 video and Opus audio streams into an open, royalty-free Matroska-based container ready for HTML5 playback.

Common Use Cases

  • Publishing HDR or 4K footage originally captured or delivered in HEVC to a website that requires browser-native video without relying on platform-specific decoders
  • Preparing HEVC-encoded screencasts or tutorials for embedding in a web application where H.265 licensing restrictions make WebM a more legally straightforward choice
  • Converting HEVC video from a modern iPhone or camera drone into a format that can be embedded directly in an HTML5 video tag and played on Chrome or Firefox without transcoding on the fly
  • Archiving or sharing HEVC content in a royalty-free container for open-source projects or platforms that prohibit patent-encumbered formats
  • Reducing the codec compatibility burden for a web player by converting HEVC files — which Safari supports but Chrome does not — into WebM VP9, which has broad cross-browser support
  • Delivering compressed, high-quality video content through a web CDN where WebM's open format and VP9 efficiency are preferred over proprietary HEVC licensing

Frequently Asked Questions

Yes — this conversion involves a full decode-and-re-encode of the video, which means some generation loss is unavoidable. The H.265 stream is fully decompressed and then compressed again using VP9. The default CRF of 33 for VP9 is a reasonable middle ground for web delivery, but if your source HEVC file was already heavily compressed, you may notice some additional quality degradation. To minimize loss, lower the CRF value (closer to 0 means higher quality but larger file size).
The WebM container specification only supports VP8, VP9, and AV1 as video codecs — it does not support H.265/HEVC at all. This is a deliberate design choice by the WebM project to remain entirely royalty-free and patent-unencumbered, whereas H.265 carries significant licensing fees. Because of this incompatibility at the codec level, a full re-encode from H.265 to VP9 is mandatory for any HEVC-to-WebM conversion.
H.265 and VP9 are roughly comparable in compression efficiency at similar quality levels, so the output WebM file should be in a similar size range to the source HEVC file — though this varies significantly based on content type and the CRF values used in each. HEVC encoded at a low CRF (high quality) will generally produce a larger VP9 output when re-encoded at CRF 33. If file size is a priority, you can lower the VP9 CRF (paradoxically, a lower CRF means higher quality and larger file) or raise it toward 40–51 to compress more aggressively.
WebM with VP9 does support HDR video, including HDR10 content. However, HDR metadata (such as mastering display color volume or content light level information) embedded in an HEVC file may not always be automatically passed through during re-encoding without explicit FFmpeg flags. If HDR fidelity is critical, you should verify the output using a tool like MediaInfo and may need to add flags such as '-color_primaries bt2020 -color_trc smpte2084 -colorspace bt2020nc' to your FFmpeg command manually.
Adjust the '-crf' value in the command to control VP9 quality. The scale runs from 0 (lossless, very large file) to 63 (lowest quality, smallest file), with 33 as the default for a good balance. For example, use '-crf 24' for noticeably higher quality at the cost of a larger file, or '-crf 40' for a smaller file with more compression. Critically, the '-b:v 0' flag must remain in the command — without it, the CRF value is ignored and VP9 reverts to bitrate-based encoding.
Yes — the FFmpeg command displayed on this page is the exact command used by the browser-based tool, and you can copy it and run it on your desktop with FFmpeg installed. Simply replace 'input.hevc' with your actual file path and 'output.webm' with your desired output path. For files over 1GB, running FFmpeg locally is recommended since the browser tool has a 1GB file size limit. Make sure your local FFmpeg installation includes libvpx-vp9 and libopus support, which is standard in most pre-built FFmpeg distributions.

Technical Notes

HEVC-to-WebM conversion is a computationally intensive process because it requires a full software decode of H.265 (a complex codec) followed by a full VP9 encode — there is no fast-path or stream copy available. In-browser conversion via FFmpeg.wasm will be significantly slower than native FFmpeg on the same machine due to the WebAssembly execution overhead, so expect longer processing times for high-resolution or long-duration HEVC files. The libvpx-vp9 encoder used here is a software encoder; it does not use GPU acceleration in the WebAssembly environment. Metadata preservation is limited: basic tags may carry over, but HEVC-specific metadata such as SEI messages, HDR10+ dynamic metadata, Dolby Vision layer information, and chapter markers will not survive the conversion without additional manual FFmpeg flags. Audio codec compatibility is also important to note — WebM's default audio codec is Opus (libopus), which is excellent for speech and music but is distinct from the AAC or AC3 typically found in HEVC files; the audio will be transcoded, not copied. If your source HEVC has no audio track, the '-c:a libopus' and '-b:a 128k' flags are harmless but can be replaced with '-an' to explicitly skip audio encoding.

Related Tools