Skip to content

Proposed Audio or video element avoids automatically playing audio

Description

This rule checks that audio or video that plays automatically does not have audio that lasts for more than 3 seconds or has an audio control mechanism to stop or mute it.

Applicability

This rule applies to any audio or video element for which all the following are true:

Expectation

For each test target, the outcome of at least one of the following rules is passed:

Background

The instruments used to pass this rule (if any), must meet all level A Success Criteria in order to fully satisfy Success Criterion 1.4.2 Audio Control. These extra requirements are left out of this rule, and should be tested separately.

Assumptions

Accessibility Support

The native video and audio controls in several browser and assistive technology combinations are not keyboard accessible and the video or audio element itself may not be announced. Authors are recommended to use custom controls for keyboard navigation and cross browser accessibility support in general. Some major browsers no longer automatically play the ‘video’ unless the ‘video’ is muted.

User agents do not always automatically play media, even when an autoplay attribute is present. This is done to avoid autoplaying media interrupting the user when they do not want to, especially when the media is likely to contain sound. The decision to respect the autoplay attribute or not depends on user settings and previous behavior (interaction with the site). Therefore, some media files may fail this rule but satisfy Success Criterion 1.4.2 Audio Control on some combination of User Agent and user settings. The rule considers that the presence of the autoplay attribute is an indication of the author intention to have automatically playing media, and therefore requires the author to provide a mechanism to control the sound.

Bibliography

Accessibility Requirements Mapping

Input Rules

Outcomes of the following rules are required as input for this rule.

Test Cases

This Javascript file is used in several examples:

File /test-assets/80f0bf/no-autoplay.js:

window.onload = function() {
	// Video
	var video = document.getElementById('video')

	// Buttons
	var playButton = document.getElementById('play-pause')
	var muteButton = document.getElementById('mute')

	// Event listener for the play/pause button
	playButton.addEventListener('click', function() {
		if (video.paused == true) {
			// Play the video
			video.play()

			// Update the button text to 'Pause'
			playButton.innerHTML = 'Pause'
		} else {
			// Pause the video
			video.pause()

			// Update the button text to 'Play'
			playButton.innerHTML = 'Play'
		}
	})

	// Event listener for the mute button
	muteButton.addEventListener('click', function() {
		if (video.muted == false) {
			// Mute the video
			video.muted = true

			// Update the button text
			muteButton.innerHTML = 'Unmute'
		} else {
			// Unmute the video
			video.muted = false

			// Update the button text
			muteButton.innerHTML = 'Mute'
		}
	})
}

Passed

Passed Example 1

Open in a new tab

This audio element has an instrument to pause, stop, or turn the audio volume off.

<audio src="/test-assets/moon-audio/moon-speech.mp3" autoplay controls></audio>

Passed Example 2

Open in a new tab

This video element does not play for longer than 3 seconds.

<video autoplay>
	<source src="/test-assets/rabbit-video/video.mp4#t=8,10" type="video/mp4" />
	<source src="/test-assets/rabbit-video/video.webm#t=8,10" type="video/webm" />
</video>

Passed Example 3

Open in a new tab

This video element autoplays and has an instrument to pause, stop, or turn the audio volume off.

<head>
	<style>
		button {
			color: #000;
		}
		button:hover {
			cursor: pointer;
			cursor: pointer;
			background-color: grey;
			color: white;
		}
	</style>
</head>
<body>
	<div id="video-container">
		<!-- Video -->
		<video id="video" autoplay>
			<source src="/test-assets/rabbit-video/video.mp4" type="video/mp4" />
			<source src="/test-assets/rabbit-video/video.webm" type="video/webm" />
		</video>
		<!-- Video Controls -->
		<div id="video-controls">
			<button type="button" id="play-pause" class="play">Play</button>
			<button type="button" id="mute">Mute</button>
		</div>
	</div>
	<script src="/test-assets/80f0bf/no-autoplay.js"></script>
</body>

Failed

Failed Example 1

Open in a new tab

This audio element autoplays, lasts for more than 3 seconds, and does not have an instrument to pause, stop, or mute the audio.

<audio src="/test-assets/moon-audio/moon-speech.mp3" autoplay></audio>

Failed Example 2

Open in a new tab

This video element audio autoplays for longer than 3 seconds, and does not have an instrument to pause, stop, or mute the audio

<video autoplay>
	<source src="/test-assets/rabbit-video/video.mp4" type="video/mp4" />
	<source src="/test-assets/rabbit-video/video.webm" type="video/webm" />
</video>

Inapplicable

Inapplicable Example 1

Open in a new tab

This video element audio autoplays for longer than 3 seconds but is muted.

<video autoplay muted>
	<source src="/test-assets/rabbit-video/video.mp4" type="video/mp4" />
	<source src="/test-assets/rabbit-video/video.webm" type="video/webm" />
</video>

Inapplicable Example 2

Open in a new tab

This video element has no audio output.

<video autoplay>
	<source src="/test-assets/rabbit-video/silent.mp4" type="video/mp4" />
	<source src="/test-assets/rabbit-video/silent.webm" type="video/webm" />
</video>

Inapplicable Example 3

Open in a new tab

This audio element does not play automatically.

<audio src="/test-assets/moon-audio/moon-speech.mp3" controls></audio>

Glossary

Attribute value

The attribute value of a content attribute set on an HTML element is the value that the attribute gets after being parsed and computed according to specifications. It may differ from the value that is actually written in the HTML code due to trimming whitespace or non-digits characters, default values, or case-insensitivity.

Some notable case of attribute value, among others:

This list is not exhaustive, and only serves as an illustration for some of the most common cases.

The attribute value of an IDL attribute is the value returned on getting it. Note that when an IDL attribute reflects a content attribute, they have the same attribute value.

Instrument to achieve an objective

An HTML element that when activated allows an end-user to achieve an objective.

Note: Any rule that uses this definition must provide an unambiguous description of the objective the instrument is used to achieve.

Outcome

A conclusion that comes from evaluating an ACT Rule on a test subject or one of its constituent test target. An outcome can be one of the five following types:

Note: A rule has one passed or failed outcome for every test target. When a tester evaluates a test target it can also be reported as cantTell if the rule cannot be tested in its entirety. For example, when applicability was automated, but the expectations have to be evaluated manually.

When there are no test targets the rule has one inapplicable outcome. If the tester is unable to determine whether there are test targets there will be one cantTell outcome. And when no evaluation has occurred the test target has one untested outcome. This means that each test subject always has one or more outcomes.

Outcomes used in ACT Rules can be expressed using the outcome property of the [EARL10-Schema][].

Web page (HTML)

An HTML web page is the set of all fully active documents which share the same top-level browsing context.

Note: Nesting of browsing context mostly happens with iframe and object. Thus a web page will most of the time be a “top-level” document and all its iframe and object (recursively).

Note: Web pages as defined by WCAG are not restricted to the HTML technology but can also include, e.g., PDF or DOCX documents.

Note: Although web pages as defined here are sets of documents (and do not contain other kind of nodes), one can abusively write that any node is “in a web page” if it is a shadow-including descendant of a document that is part of that web page.

Rule Versions

This is the first version of this ACT rule.

Implementations

This section is not part of the official rule. It is populated dynamically and not accounted for in the change history or the last modified date.

Implementation Type Consistency Report
Alfa (semi-automated) 0.80.0 Semi-automated tool Consistent Alfa (semi-automated) Report
QualWeb 3.0.0 Automated tool Consistent QualWeb Report
SortSite 6.45 Automated tool Consistent SortSite Report
Total Validator 17.4.0 Linter Consistent Total Validator Report
Total Validator (+Browser) 17.4.0 Automated tool Consistent Total Validator (+Browser) Report
Back to Top

This is an unpublished draft preview that might include content that is not yet approved. The published website is at w3.org/WAI/.