A Chrome extension that lets you force any website to use your preferred camera — even when the site ignores your choice.
Video chat sites like Chatroulette, Omegle, and similar platforms enumerate your cameras via navigator.mediaDevices.enumerateDevices() and pick one using their own logic. They don't give you a camera selector, and they often ignore virtual cameras entirely.
This means if you have a virtual camera set up (like OBS Virtual Camera), these sites will still default to your built-in webcam (e.g., FaceTime HD Camera) — and there's nothing you can do about it from the site's UI.
Cam Spoofer intercepts the browser's camera APIs and makes your chosen camera appear as the only available video device. The website has no choice but to use it.
You can also rename the device — for example, make "OBS Virtual Camera" appear as "FaceTime HD Camera" so the site can't tell anything has changed.
- Camera override — select which camera websites see, hiding all others
- Device renaming — optionally spoof the camera name to match any label
- Anti-detection — patched APIs pass
toString()andinstanceofchecks, appearing fully native - Per-session config — enable/disable with a toggle, changes apply on page reload
- Zero permissions abuse — only uses
storagepermission, no network requests, no data collection
- Download or clone this repository:
git clone https://github.com/hellsontime/camspoof.git
- Open Chrome and go to
chrome://extensions - Enable Developer mode (toggle in the top right)
- Click Load unpacked and select the
camspooffolder - The Cam Spoofer icon appears in your toolbar
-
Set up a virtual camera — In OBS Studio, click Start Virtual Camera (or use any virtual cam software)
-
Grant camera access — Navigate to the video chat site, open the Cam Spoofer popup, and click Grant camera access if prompted. This lets the extension see your available cameras.
-
Select your camera — Pick OBS Virtual Camera (or whichever camera you want) from the dropdown
-
Optional: rename it — Type a custom name like
FaceTime HD Camerain the Custom name field. The site will see this name instead of the real one. -
Enable and reload — Toggle the switch on and reload the page. The site now sees only your selected camera.
The popup shows all detected cameras with click-to-copy labels — useful when you want to rename your virtual camera to match a real device name exactly.
Works on any website that accesses your camera through standard browser APIs, including:
- Chatroulette (chatroulette.com)
- Omegle / Omegle alternatives (ome.tv, chathub.cam, etc.)
- Google Meet
- Jitsi Meet
- Zoom Web Client
- Discord (browser version)
- Any WebRTC-based video chat
Compatible virtual camera sources:
- OBS Virtual Camera (OBS Studio)
- ManyCam
- Snap Camera
- XSplit VCam
- Any virtual camera that registers as a video input device
The extension injects into the page's main JavaScript context (MAIN world) at document_start and patches two browser APIs:
enumerateDevices()— filtered to return only the selected camera (with an optional spoofed label)getUserMedia()— forces thedeviceIdconstraint to the selected camera and spoofs track labels
A separate content script in the ISOLATED world reads config from chrome.storage.local and passes it to the injected script via a DOM attribute.
All patched functions are cloaked with custom Function.prototype.toString overrides so they appear as native code to fingerprinting checks.
- No data collection — the extension stores your camera preference locally and nothing else
- No network requests — zero external communication
- No tracking — no analytics, no telemetry
- Minimal permissions — only
storagefor saving your settings
See CONTRIBUTING.md for development setup and guidelines.
