100% Private

Web Video Formats: Why Your Video Won't Play and How to Fix It

If you've ever uploaded a video to your website only to see a blank player or error message, you're not alone. Video compatibility on the web is more complex than it appears. This guide explains why videos fail to play in browsers and how to convert them to universally supported formats.

Quick Fix: Most video playback issues are solved by converting to MP4 with H.264 codec. Use our Video to MP4 Converter to create web-compatible files instantly.

Why Videos Don't Play in Browsers

When a video refuses to play in a web browser, the cause is almost always one of these issues:

Wrong Container Format

Files like .mkv, .avi, .wmv, or .flv cannot play directly in browsers. Only .mp4, .webm, and .ogg are natively supported.

Unsupported Codec

Even MP4 files can fail if they use H.265/HEVC codec. Browsers require H.264 (AVC) for universal compatibility. Safari is the only browser with limited HEVC support.

Missing Faststart

Video metadata at the end of the file forces the browser to download everything before playing. The "faststart" flag moves metadata to the beginning for instant playback.

CORS or Server Issues

If the video file is hosted on a different domain without proper CORS headers, browsers may block playback. Check your server's Access-Control-Allow-Origin header.

A Brief History: From Flash to HTML5

The Flash Era (2005-2017)

Before HTML5 video became standard, Adobe Flash Player dominated web video. The FLV (Flash Video) format was everywhere—YouTube, Vimeo, and countless websites relied on it. Flash offered features browsers couldn't match at the time: adaptive streaming, DRM, and interactive elements.

However, Flash had critical problems:

  • Security vulnerabilities made it a constant target for malware
  • Battery drain on mobile devices was severe
  • No iOS support—Apple famously refused to allow Flash on iPhones
  • Poor performance compared to native browser capabilities

In 2017, Adobe announced Flash's end-of-life. As of December 2020, Flash Player is dead. FLV files no longer play in any modern browser.

Have old FLV files? They won't play anywhere today. Convert them to MP4 using our Video to MP4 Converter.

The HTML5 Revolution (2010-Present)

HTML5 introduced the <video> element, allowing browsers to play video natively without plugins. This was a game-changer, but it came with a catch: browser vendors couldn't agree on a single codec.

For years, the web was split:

  • Safari supported only H.264 (due to Apple's patent licensing)
  • Firefox initially refused H.264, supporting only Theora/Ogg
  • Chrome supported both, plus WebM

Today, this war is largely over. H.264 in MP4 containers works everywhere, and WebM (VP9) has broad support as an alternative.

Current Web Video Formats

FormatContainerVideo CodecAudio CodecBrowser SupportBest For
MP4/H.264.mp4H.264 (AVC)AACAll browsers, all devicesMaximum compatibility
WebM/VP9.webmVP9Opus/VorbisChrome, Firefox, Edge, Opera (not Safari)Smaller files, royalty-free
WebM/VP8.webmVP8VorbisChrome, Firefox, Edge, OperaLegacy WebM support
Ogg/Theora.ogg, .ogvTheoraVorbisFirefox, Chrome (limited)Open source projects
MP4/H.265.mp4H.265 (HEVC)AACSafari only (hardware decode)Apple ecosystem only
Recommendation: For maximum compatibility, always use MP4 with H.264 video and AAC audio. It plays on 100% of browsers and devices without transcoding.

The Future: AV1 Codec

AV1 (AOMedia Video 1) is the next-generation codec developed by the Alliance for Open Media—a consortium including Google, Apple, Microsoft, Netflix, Amazon, and Meta. It promises:

  • 30-50% better compression than H.264 at similar quality
  • Royalty-free licensing—no patent fees, unlike H.264/H.265
  • 8K and HDR support built into the specification

AV1 Browser Support (2024-2025)

BrowserAV1 Decode Support
Chrome 70+Yes (software decode)
Firefox 67+Yes (software decode)
Edge 79+Yes
Safari 17+Yes (macOS Ventura+, iOS 17+)
Opera 57+Yes

While AV1 support is growing, encoding is still slow and hardware support is limited to newer devices (2020+). For now, H.264 remains the safest choice for production websites, but consider AV1 for:

  • High-bandwidth video streaming (Netflix uses AV1)
  • Users with modern devices and browsers
  • Situations where bandwidth savings justify encoding time

HTML5 Video Code Examples

Basic Video Embed

<video controls width="640" height="360">
  <source src="video.mp4" type="video/mp4">
  Your browser does not support the video element.
</video>

Multiple Format Fallback

Provide WebM for browsers that support it, with MP4 fallback:

<video controls width="640" height="360">
  <source src="video.webm" type="video/webm">
  <source src="video.mp4" type="video/mp4">
  Your browser does not support the video element.
</video>

Video with Poster Image

<video controls poster="thumbnail.jpg" width="640" height="360">
  <source src="video.mp4" type="video/mp4">
</video>

Responsive Video (Full Width)

<video controls style="width: 100%; height: auto;">
  <source src="video.mp4" type="video/mp4">
</video>

Important: Autoplay Restrictions

Critical: Videos with sound CANNOT autoplay in modern browsers. This is not a bug—it's intentional user protection against unwanted audio.

Since 2018, all major browsers block autoplay for videos with audio. This policy exists because:

  • Users were frustrated by unexpected audio
  • It wastes bandwidth on mobile networks
  • Accessibility concerns for screen reader users

Autoplay Rules by Browser

ScenarioChromeFirefoxSafari
Muted videoAllowedAllowedAllowed
Video with soundBlockedBlockedBlocked
After user interactionAllowedAllowedAllowed

Correct Autoplay Code

<!-- This WORKS - muted autoplay -->
<video autoplay muted loop playsinline>
  <source src="background.mp4" type="video/mp4">
</video>

<!-- This FAILS - autoplay with sound -->
<video autoplay>
  <source src="video.mp4" type="video/mp4">
</video>

The playsinline attribute is important for iOS, which otherwise opens videos in fullscreen by default.

Workaround: Unmute on Click

<video id="bgVideo" autoplay muted loop playsinline>
  <source src="video.mp4" type="video/mp4">
</video>
<button id="unmuteBtn">🔊 Enable Sound</button>

<script>
document.getElementById('unmuteBtn').addEventListener('click', function() {
  const video = document.getElementById('bgVideo');
  video.muted = false;
  this.style.display = 'none';
});
</script>
SettingRecommended ValueNotes
ContainerMP4Universal support
Video CodecH.264 (AVC)Profile: High, Level: 4.0 or 4.1
Audio CodecAACStereo, 128-192 kbps
Resolution1080p or 720p720p is often sufficient for web
Frame Rate24-30 fps24fps for cinematic, 30fps for action
Bitrate2-5 Mbps (1080p)Use CRF 23-28 for quality-based encoding
FaststartEnabledRequired for progressive playback

Convert Your Video

Need to fix a video that won't play? These tools convert any video to web-compatible formats:

Video to MP4 Converter

Convert any video to web-optimized MP4 with H.264. Choose resolution and frame rate. Faststart enabled for streaming.

Video to WebM Converter

Convert to WebM format with VP9 codec. Royalty-free, smaller files for Chrome/Firefox.

Video Compressor

Reduce file size while maintaining quality. Three compression levels available.

Video Info Analyzer

Check your video's codec, resolution, and format before converting.

Need more video tools? See our complete Browser Video Editing Guide with 30+ tools for editing, effects, social media formats, and more.

Summary: The Quick Fix

If your video won't play in a browser:

  1. Convert to MP4 with H.264 codec using our Video to MP4 Converter
  2. Enable faststart (our converter does this automatically)
  3. Use muted attribute if you need autoplay
  4. Include playsinline for iOS compatibility
  5. Add controls so users can play/pause

Following these steps ensures your video plays on 100% of browsers and devices.

Privacy Notice: This site works entirely in your browser. We don't collect or store your data. Optional analytics help us improve the site. You can deny without affecting functionality.