How to Select a Camera (and Its Microphone) in Firefox
How Firefox lets you choose a camera and microphone, how to change a remembered choice, why a webcam's mic must be picked separately, and how developers can switch devices cleanly.
The short answer
Firefox has no single global "default camera" setting. You choose a camera, and separately a microphone, each time a website asks for access. When a site requests your camera, Firefox shows a permission prompt near the address bar, and that prompt is where you pick the device. If you previously told Firefox to remember your decision, the prompt no longer appears. To pick a different camera, you first clear that site's saved permission and then reload the page. Many conferencing sites also have their own device menu, and that menu can override what you chose in the prompt.
Some details depend on your Firefox version and operating system, including menu wording, whether device lists appear in the prompt, and how the system default device is labeled. This guide describes the general behavior. It does not document any specific release, and it is not based on hands-on testing.
Choosing a camera when a site asks
- 1. Open the site and start the action that needs video, such as joining a call or opening a camera preview.
- 2. In the Firefox permission prompt, look for the camera selector and choose the device you want. If the site also requests audio, a separate microphone selector appears.
- 3. Decide whether Firefox should remember the decision for this site. If you leave it unremembered, you can choose again on the next visit.
- 4. Allow access. If the wrong camera still appears, check the site's own settings, because it may be requesting a specific device itself.
Changing a camera you already allowed
- 1. While on the site, click the camera or permissions icon in the address bar.
- 2. Remove or reset the saved camera and microphone permissions for that site.
- 3. Reload the page and trigger the camera request again. The device selector returns.
- 4. To review every site with saved camera access, open Firefox Settings, go to Privacy & Security, scroll to Permissions, and open the Camera settings. Microphone permissions are listed separately in the same section.
Why the webcam's microphone is a separate choice
A webcam with a built-in microphone usually appears to the computer as two devices: a video input and an audio input. The audio input is often named after the webcam. Selecting the webcam as your camera does not automatically select its microphone. Firefox, or the site, may keep using the laptop's internal mic, a headset, or the system default instead. If speech quality matters, check the microphone selector as carefully as the camera selector.
Browsers usually apply speech processing to microphone input by default:
• Echo cancellation removes speaker sound that the mic picks up again.
• Noise suppression reduces steady background sound.
• Automatic gain control evens out loudness.
These features help on calls, but they can make voice recordings or audio tests sound different from the raw microphone signal. A site may let you turn them off. Firefox's own interface generally does not expose them as user settings.
Evidence gap: no measurements or comparisons of specific webcam microphones in Firefox were available for this guide. Claims about how a particular model sounds would need independent testing.
For developers: selecting devices and managing tracks
A web app can offer its own camera and microphone picker. It does this by listing devices with enumerateDevices and requesting one by deviceId through getUserMedia. Some points that matter in practice:
• Device labels are generally empty until the user has granted permission at least once.
• Device IDs are scoped to your site's origin and can change when the user clears site data.
• The devicechange event fires when a device is plugged in or removed, so you can refresh the list.
Track lifecycle is where switching usually goes wrong. Call stop() on each old track you no longer need. Until you do, the device may stay in use, the camera indicator may stay lit, and some systems will not release the hardware to another app. During a live WebRTC call, you can use replaceTrack on the existing sender. This swaps the outgoing video or audio without renegotiating the connection.
async function switchCamera(sender, oldStream, deviceId) {
const newStream = await navigator.mediaDevices.getUserMedia({
video: { deviceId: { exact: deviceId } }
});
const newTrack = newStream.getVideoTracks()[0];
await sender.replaceTrack(newTrack);
oldStream.getVideoTracks().forEach(track => track.stop());
return newStream;
}
The same pattern works for audio. Request the chosen microphone with an exact deviceId in the audio constraint. Replace the sender's audio track. Then stop the previous audio track. Using exact makes the request fail if the device is unavailable, instead of silently falling back to another one. Handle that error and show the device list again.