Skip to content

<audio> - The Audio Element

Media Element HTML5

The audio element embeds sound content into documents. It supports multiple audio formats, provides built-in playback controls, and includes a powerful JavaScript API for custom audio players and interactive experiences.

Result
<audio src="audio.mp3" controls></audio>
<!-- With multiple sources -->
<audio controls>
<source src="audio.opus" type="audio/opus">
<source src="audio.mp3" type="audio/mpeg">
Your browser doesn't support audio.
</audio>

Displays the browser’s default audio controls (play, pause, volume, progress):

Result

Specifies the audio file URL:

Result

Starts playing automatically when the page loads:

Result

Repeats the audio when it reaches the end:

Result

Starts with audio muted:

Result

Controls how much audio to download on page load:

<!-- Don't preload: save bandwidth -->
<audio controls preload="none"
src="audio.mp3">
</audio>
AttributeDescriptionValuesDefault
srcAudio file URLURL-
controlsShow playback controlsBooleanfalse
autoplayAuto-start playbackBooleanfalse
loopRepeat playbackBooleanfalse
mutedStart mutedBooleanfalse
preloadPreload strategynone, metadata, autometadata
crossoriginCORS settingsanonymous, use-credentials-
FormatMIME TypeChromeFirefoxSafariEdge
MP3audio/mpeg
AACaudio/mp4
Opusaudio/opus
Ogg Vorbisaudio/ogg
WAVaudio/wav
FLACaudio/flac
Result

Provide text transcripts for audio content:

Result
Result
Result
Result
Result
Result
Result
EventDescriptionWhen Fired
playPlayback startedUser clicks play or .play() called
pausePlayback pausedUser clicks pause or .pause() called
endedPlayback finishedAudio reaches the end
timeupdateCurrent time changedDuring playback (4-60 times per second)
volumechangeVolume changedUser or script changes volume
loadstartLoading startedBrowser starts loading
loadeddataFirst frame loadedEnough data to start playing
canplayCan start playingEnough data buffered
canplaythroughCan play without bufferingEntire file can play without stopping
errorError occurredLoading or playback error
Result
Result
Result
Result
Result
Result
Result
  1. Use appropriate preload values

    • none for audio users may not play
    • metadata for typical use cases (default)
    • auto for audio likely to be played
  2. Compress audio files

    • Use tools like Audacity or FFmpeg
    • Target bitrates: 128kbps for music, 64kbps for voice
  3. Choose the right format

    • MP3: Universal compatibility
    • Opus: Best quality/size ratio for modern browsers
    • AAC: Good alternative to MP3
  4. Lazy load when possible

    • Don’t load audio until needed
    • Use JavaScript to set src on user interaction
FeatureChromeFirefoxSafariEdge
Basic <audio>3+3.5+4+12+
controls attribute3+3.5+4+12+
autoplay attribute3+3.5+4+12+
loop attribute3+3.5+4+12+
preload attribute3+4+4+12+
JavaScript API3+3.5+4+12+