HTML5 check if audio is playing

In HTML5, you can check if an audio element is currently playing by using the paused property. This property returns a boolean value indicating whether the audio is paused or playing.

Syntax

Following is the basic syntax to check if audio is playing −

audioElement.paused

The paused property returns false when the audio is playing and true when it is paused or stopped.

Using a Function to Check Audio Status

Following function checks if an audio element is currently playing −

function isPlaying(audelem) {
    return !audelem.paused;
}

This function takes an audio element as a parameter and returns true if the audio is playing, false otherwise.

Example

Following example demonstrates how to check if audio is playing using a button −

<!DOCTYPE html>
<html>
<head>
    <title>Check Audio Playing Status</title>
</head>
<body style="font-family: Arial, sans-serif; padding: 20px;">
    <h2>Audio Playing Status Check</h2>
    <audio id="myAudio" controls>
        <source src="https://www.soundjay.com/misc/sounds/bell-ringing-05.wav" type="audio/wav">
        Your browser does not support the audio element.
    </audio>
    <br><br>
    <button onclick="checkStatus()">Check Audio Status</button>
    <p id="status">Click the button to check audio status.</p>
    
    <script>
        function isPlaying(audelem) {
            return !audelem.paused;
        }
        
        function checkStatus() {
            var audio = document.getElementById("myAudio");
            var statusElement = document.getElementById("status");
            
            if (isPlaying(audio)) {
                statusElement.textContent = "Audio is currently playing.";
                statusElement.style.color = "green";
            } else {
                statusElement.textContent = "Audio is paused or stopped.";
                statusElement.style.color = "red";
            }
        }
    </script>
</body>
</html>

The output shows an audio player with controls and a button to check its status. The status message changes color based on whether the audio is playing or not.

Toggle Play/Pause Functionality

You can also create a toggle function that plays or pauses the audio based on its current state −

function togglePause() {
    if (newAudio.paused && newAudio.currentTime > 0 && !newAudio.ended) {
        newAudio.play();
    } else {
        newAudio.pause();
    }
}

This function checks multiple conditions −

  • newAudio.paused − Checks if the audio is paused
  • newAudio.currentTime > 0 − Ensures the audio has started playing
  • !newAudio.ended − Confirms the audio hasn't reached the end

Example

Following example demonstrates a complete audio player with play/pause toggle functionality −

<!DOCTYPE html>
<html>
<head>
    <title>Audio Toggle Control</title>
</head>
<body style="font-family: Arial, sans-serif; padding: 20px;">
    <h2>Custom Audio Player</h2>
    <audio id="toggleAudio">
        <source src="https://www.soundjay.com/misc/sounds/bell-ringing-05.wav" type="audio/wav">
        Your browser does not support the audio element.
    </audio>
    <br><br>
    <button id="toggleBtn" onclick="togglePlay()">Play</button>
    <button onclick="checkPlayingStatus()">Check Status</button>
    <p id="playStatus">Audio is ready to play.</p>
    
    <script>
        var audio = document.getElementById("toggleAudio");
        var toggleBtn = document.getElementById("toggleBtn");
        
        function togglePlay() {
            if (audio.paused) {
                audio.play();
                toggleBtn.textContent = "Pause";
            } else {
                audio.pause();
                toggleBtn.textContent = "Play";
            }
        }
        
        function checkPlayingStatus() {
            var statusElement = document.getElementById("playStatus");
            if (!audio.paused) {
                statusElement.textContent = "Audio is currently playing.";
                statusElement.style.color = "green";
            } else if (audio.currentTime > 0) {
                statusElement.textContent = "Audio is paused.";
                statusElement.style.color = "orange";
            } else {
                statusElement.textContent = "Audio is ready to play.";
                statusElement.style.color = "blue";
            }
        }
        
        // Update button text when audio ends
        audio.addEventListener('ended', function() {
            toggleBtn.textContent = "Play";
        });
    </script>
</body>
</html>

This example creates a custom audio player where the button text changes between "Play" and "Pause" based on the audio state, and the status check provides detailed information about the current audio state.

Audio Properties for Status Checking

The HTML5 audio element provides several useful properties for checking playback status −

Property Description Return Value
paused Indicates if the audio is paused Boolean (true/false)
ended Indicates if the audio has ended Boolean (true/false)
currentTime Current playback position in seconds Number
duration Total length of the audio in seconds Number
readyState Ready state of the audio element Number (0-4)

Example − Comprehensive Status Check

Following example shows how to use multiple properties for a detailed audio status check −

<!DOCTYPE html>
<html>
<head>
    <title>Detailed Audio Status</title>
</head>
<body style="font-family: Arial, sans-serif; padding: 20px;">
    <h2>Audio Status Monitor</h2>
    <audio id="detailAudio" controls>
        <source src="https://www.soundjay.com/misc/sounds/bell-ringing-05.wav" type="audio/wav">
        Your browser does not support the audio element.
    </audio>
    <br><br>
    <button onclick="getDetailedStatus()">Get Detailed Status</button>
    <div id="detailStatus" style="margin-top: 10px; padding: 10px; border: 1px solid #ccc; background: #f9f9f9;">
        Click button to see detailed audio status.
    </div>
    
    <script>
        function getDetailedStatus() {
            var audio = document.getElementById("detailAudio");
            var statusDiv = document.getElementById("detailStatus");
            
            var isPlaying = !audio.paused;
            var hasEnded = audio.ended;
            var currentTime = audio.currentTime.toFixed(2);
            var duration = audio.duration ? audio.duration.toFixed(2) : 'Unknown';
            
            var statusHTML = "<strong>Audio Status:</strong><br>" +
                           "Playing: " + (isPlaying ? "Yes" : "No") + "<br>" +
                           "Paused: " + audio.paused + "<br>" +
                           "Ended: " + hasEnded + "<br>" +
                           "Current Time: " + currentTime + "s<br>" +
                           "Duration: " + duration + "s<br>" +
                           "Ready State: " + audio.readyState;
            
            statusDiv.innerHTML = statusHTML;
        }
    </script>
</body>
</html>

This example provides comprehensive information about the audio element's current state, including playback position, duration, and ready state.

Conclusion

The paused property is the primary method to check if HTML5 audio is playing. Use !audioElement.paused to determine if audio is currently playing. Combine this with other properties like currentTime and ended for more sophisticated audio control and status monitoring.

Updated on: 2026-03-16T21:38:53+05:30

5K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements