Codectionary / Developer documentation / HTML

<video>

The <video> element embeds video content directly in a web page without needing a third-party plugin. It supports built-in playback controls, multiple source formats via nested <source> elements for browser compatibility, and various attributes for controlling autoplay, looping, and muting.

Syntax

<video src="movie.mp4" controls width="640"></video>

Examples

Basic Video Player

A video with standard browser playback controls, using MDN’s hosted flower sample. An internet connection is required.

<video controls playsinline preload="metadata" width="640" style="max-width: 100%; height: auto;">
  <source src="https://developer.mozilla.org/shared-assets/videos/flower.mp4" type="video/mp4">
  Your browser does not support the video tag.
</video>

Multiple Source Formats

Providing fallback formats for broader browser support.

<video controls playsinline preload="metadata" width="640" style="max-width: 100%; height: auto;">
  <source src="https://developer.mozilla.org/shared-assets/videos/flower.webm" type="video/webm">
  <source src="https://developer.mozilla.org/shared-assets/videos/flower.mp4" type="video/mp4">
  Your browser does not support HTML5 video.
</video>

Autoplay Muted Background Video

A muted looping video with controls so visitors can pause it. Browser settings may still prevent autoplay.

<video controls autoplay muted loop playsinline width="640" style="max-width: 100%; height: auto;">
  <source src="https://developer.mozilla.org/shared-assets/videos/flower.mp4" type="video/mp4">
</video>

Attributes

  • controls (boolean): Shows the browser's built-in playback controls
  • autoplay (boolean): Starts playback automatically (most browsers require muted for this to work)
  • loop (boolean): Restarts the video automatically when it ends
  • muted (boolean): Mutes audio by default
  • poster (URL): An image shown before playback starts

Best practices

  • Always include the controls attribute unless you have a very specific reason to hide them — autoplay-only videos are a poor user experience
  • Autoplay only works reliably in most browsers when combined with muted
  • Provide multiple <source> formats (MP4, WebM) for cross-browser compatibility
  • Include fallback text between the tags for very old browsers that do not support <video>
  • Use the poster attribute to show a meaningful thumbnail before playback

Browser compatibility

Support applies to the named feature, not every attribute or behaviour in this article. Versions refer to browsers, not operating systems.

Element support does not guarantee every codec, media file or autoplay policy. Choose each relevant attribute below; actual playback also depends on the media resource and browser policy.

<video>

Desktop

Chrome
Supported
From 3
Firefox
Supported
From 3.5
Safari
Supported
From 3.1
Edge
Supported
From 12
Opera
Supported
From 10.5

Mobile

Safari on iOS
Supported
From 3
Chrome for Android
Supported
From 18
Firefox for Android
Supported
From 4
Samsung Internet
Supported
From 1.0

MDN BCD record for this feature · MDN reference

Support history and limitations

Chrome

  • From 3

Firefox

  • From 3.5

Safari

  • From 3.1

Edge

  • From 12

Opera

  • From 10.5

Safari on iOS

  • From 3

Chrome for Android

  • From 18

Firefox for Android

  • From 4

Samsung Internet

  • From 1.0
<video> controls

Desktop

Chrome
Supported
From 3
Firefox
Supported
From 3.5
Safari
Supported
From 3.1
Edge
Supported
From 12
Opera
Supported
From 10.5

Mobile

Safari on iOS
Supported
From 3
Chrome for Android
Supported
From 18
Firefox for Android
Supported
From 4
Samsung Internet
Supported
From 1.0

MDN BCD record for this feature

Support history and limitations

Chrome

  • From 3

Firefox

  • From 3.5

Safari

  • From 3.1

Edge

  • From 12

Opera

  • From 10.5

Safari on iOS

  • From 3

Chrome for Android

  • From 18

Firefox for Android

  • From 4

Samsung Internet

  • From 1.0
<video> autoplay

Desktop

Chrome
Supported
From 3
Firefox
Supported
From 3.5
Safari
Supported
From 3.1
Edge
Supported
From 12
Opera
Supported
From 10.5

Mobile

Safari on iOS
Supported
From 10
Chrome for Android
Supported
From 18
Firefox for Android
Supported
From 4
Samsung Internet
Supported
From 1.0

MDN BCD record for this feature

Support history and limitations

Chrome

  • From 3

Firefox

  • From 3.5

Safari

  • From 3.1

Edge

  • From 12

Opera

  • From 10.5

Safari on iOS

  • From 10

Chrome for Android

  • From 18

Firefox for Android

  • From 4

Samsung Internet

  • From 1.0
<video> loop

Desktop

Chrome
Supported
From 3
Firefox
Supported
From 11
Safari
Supported
From 3.1
Edge
Supported
From 12
Opera
Supported
From 10.5

Mobile

Safari on iOS
Supported
From 6
Chrome for Android
Supported
From 18
Firefox for Android
Supported
From 14
Samsung Internet
Supported
From 1.0

MDN BCD record for this feature

Support history and limitations

Chrome

  • From 3

Firefox

  • From 11

Safari

  • From 3.1

Edge

  • From 12

Opera

  • From 10.5

Safari on iOS

  • From 6

Chrome for Android

  • From 18

Firefox for Android

  • From 14

Samsung Internet

  • From 1.0
<video> muted

Desktop

Chrome
Supported
From 30
Firefox
Supported
From 11
Safari
Supported
From 5
Edge
Supported
From 12
Opera
Supported
From 17

Mobile

Safari on iOS
Supported
From 4.2
Chrome for Android
Supported
From 30
Firefox for Android
Supported
From 14
Samsung Internet
Supported
From 2.0

MDN BCD record for this feature

Support history and limitations

Chrome

  • From 30

Firefox

  • From 11

Safari

  • From 5

Edge

  • From 12

Opera

  • From 17

Safari on iOS

  • From 4.2

Chrome for Android

  • From 30

Firefox for Android

  • From 14

Samsung Internet

  • From 2.0
<video> poster

Desktop

Chrome
Supported
From 3
Firefox
Supported
From 3.6
Safari
Supported
From 3.1
Edge
Supported
From 12
Opera
Supported
From 10.5

Mobile

Safari on iOS
Supported
From 3
Chrome for Android
Supported
From 18
Firefox for Android
Supported
From 4
Samsung Internet
Supported
From 1.0

MDN BCD record for this feature

Support history and limitations

Chrome

  • From 3

Firefox

  • From 3.6

Safari

  • From 3.1

Edge

  • From 12

Opera

  • From 10.5

Safari on iOS

  • From 3

Chrome for Android

  • From 18

Firefox for Android

  • From 4

Samsung Internet

  • From 1.0
<source>

Desktop

Chrome
Supported
From 3
Firefox
Supported
From 3.5
Safari
Supported
From 3.1
Edge
Supported
From 12
Opera
Supported
From 15

Mobile

Safari on iOS
Supported
From 2
Chrome for Android
Supported
From 18
Firefox for Android
Supported
From 4
Samsung Internet
Supported
From 1.0

MDN BCD record for this feature · MDN reference

Support history and limitations

Chrome

  • From 3

Firefox

  • From 3.5 · Until Firefox 15, Firefox picked the first source element that has a type matching the MIME-type of a supported media format; see bug 449363 for details.

Safari

  • From 3.1

Edge

  • From 12

Opera

  • From 15

Safari on iOS

  • From 2

Chrome for Android

  • From 18

Firefox for Android

  • From 4 · Until Firefox for Android 15, Firefox for Android picked the first source element that has a type matching the MIME-type of a supported media format; see bug 449363 for details.

Samsung Internet

  • From 1.0
<video> playsinline

Desktop

Chrome
Supported
From 75
Firefox
Not supported
Safari
Supported
From 10
Edge
Supported
From 79
Opera
Supported
From 62

Mobile

Safari on iOS
Supported
From 10
Chrome for Android
Supported
From 75
Firefox for Android
Not supported
Samsung Internet
Supported
From 11.0

MDN BCD record for this feature

Support history and limitations

Chrome

  • From 75

Firefox

  • Not supported

Safari

  • From 10
  • From 8 · Alternative name: webkit-playsinline

Edge

  • From 79

Opera

  • From 62

Safari on iOS

  • From 10
  • From 8 · Alternative name: webkit-playsinline

Chrome for Android

  • From 75

Firefox for Android

  • Not supported

Samsung Internet

  • From 11.0
<video> preload

Desktop

Chrome
Supported
From 3
Firefox
Supported
From 4
Safari
Supported
From 3.1
Edge
Supported
From 12
Opera
Supported
From 15

Mobile

Safari on iOS
Supported
From 3
Chrome for Android
Supported
From 18
Firefox for Android
Supported
From 4
Samsung Internet
Supported
From 1.0

MDN BCD record for this feature

Support history and limitations

Chrome

  • From 3 · Defaults to metadata in Chrome 64.

Firefox

  • From 4

Safari

  • From 3.1

Edge

  • From 12

Opera

  • From 15 · Defaults to metadata in Opera 51.

Safari on iOS

  • From 3

Chrome for Android

  • From 18 · Defaults to metadata in Chrome Android 64.

Firefox for Android

  • From 4

Samsung Internet

  • From 1.0 · Defaults to metadata in Samsung Browser 9.0.

MDN BCD 8.1.5 · Dataset built 2026-10-08 · Mapping reviewed 2026-10-21. These dates are not individual browser-test or claim-verification dates. Unknown means the data does not establish support.

HTML Living Standard

Specifications & further reading