Firefox Camera Is On Notification: What It Means and How to Turn It Off
Why Firefox says your camera (and often your webcam microphone) is on, what keeps the indicator lit, and how users and developers can release the device correctly.
The short answer
Firefox shows a camera-in-use indicator when a web page currently holds an active video capture from your webcam. If the page also asked for audio, a separate microphone indicator usually appears, and on many setups that microphone is the one built into the webcam. The indicator stays on as long as at least one capture track from that device is still live. It clears when the page stops every track it obtained, when you revoke the permission, or when you close the tab. One condition matters most: hiding the video, pausing a call or muting in an app's interface does not necessarily release the device, so the notification can persist even when nothing seems to be happening.
Evidence note: no product-specific test data, version numbers or measurements were supplied for this guide. What follows is based on how browser media capture generally works and on Firefox's documented permission and sharing indicators. Exact icon placement and wording can differ between Firefox versions and operating systems.
What the indicator is telling you
A site gets camera and microphone access through the browser's media capture interface (getUserMedia). The browser returns a media stream containing one or more tracks: typically one video track for the camera and one audio track for the microphone. Each track stays in a "live" state until it is stopped, either deliberately by the page or because the browser or device ends it. Firefox's indicators reflect whether any of those tracks is still live. They do not reflect what you see on screen.
For speech capture, this distinction matters. Camera and microphone are separate tracks with separate indicators. A page can stop the camera and keep listening, or the reverse. If you only check for the camera icon, you can miss that the webcam's microphone is still open.
If you are a user: how to find and stop it
- Look at the address bar of each open tab for camera or microphone icons. The tab using the device is the one to deal with.
- Click the icon to see which permissions the site holds. From there you can stop sharing or remove the permission.
- If you can't find the tab, check other Firefox windows. Desktop Firefox may also show a small floating sharing indicator that lists active camera and microphone use.
- Close the tab if a site won't release the device. Closing it ends that page's capture.
- If the webcam light stays on after every Firefox tab is closed, another application may be using the camera, or the browser may need a restart. That is outside what the Firefox indicator can tell you.
If you are a developer: why the indicator won't go away
Most persistent-indicator problems come from track lifecycle mistakes. The device is released only when every live track that references it has been stopped. Common causes are listed below.
- Removing the video element or setting its source to null. This detaches playback but leaves the track live.
- Stopping only the video track. The audio track from the webcam microphone keeps running, and the microphone indicator stays on.
- Cloned tracks. Each clone is an independent track and must be stopped separately.
- Repeated getUserMedia calls, for example on every device switch or component re-render. Each call can create new tracks while references to old ones are lost.
- Toggling track.enabled to false to mute. Disabling a track stops sending media, but it is not the same as releasing the device. Indicator and camera-light behavior for disabled tracks varies by browser and version, so don't rely on it as a release mechanism.
- Tracks passed into other objects, such as a peer connection, a recorder or an audio processing graph. They stay live there until they are stopped.
The reliable pattern is to keep a reference to every stream you acquire and stop all of its tracks when capture should end:
function releaseStream(stream) {
if (!stream) return;
stream.getTracks().forEach((track) => track.stop());
}
// Stop only the camera but keep capturing speech:
stream.getVideoTracks().forEach((track) => track.stop());
After stopping, each track's readyState should report "ended". If an indicator remains, log every stream your code holds and check for any track still reporting "live". Firefox also provides an internal diagnostics page (about:webrtc) that can help trace active WebRTC sessions.
Switching audio input without leaving devices open
When users switch from a webcam's built-in microphone to a headset or USB microphone, request the new device by its device ID and stop the old audio track once the new one is in place. If you skip the stop, the webcam microphone can stay open and its indicator stays lit, even though speech is now coming from a different input. In a call, swap the outgoing track on the existing sender (RTCRtpSender's replaceTrack) instead of renegotiating, then stop the replaced track.
What this means for speech capture
An active microphone indicator is the clearest signal of whether speech can still be captured. If a call or recording seems finished but the microphone icon remains, the page can still receive audio from that input. Treat a persistent indicator as unfinished cleanup or an open session, not a cosmetic glitch. A cleared indicator after closing the tab or revoking the permission is the practical confirmation that capture has ended.
Gaps in the available evidence
This guide doesn't cover version-specific indicator designs, timing of camera-light shutoff for disabled tracks, or differences between particular webcam models, because no verified data on those points was available. If exact behavior matters, for example in a compliance review or a privacy audit, test it on the specific Firefox version, operating system and webcam involved.