Privacy Tools Guide

Modern web browsers expose powerful APIs that allow websites to access cameras and microphones. While these capabilities enable video conferencing, streaming, and interactive applications, they also create significant privacy risks through device enumeration and fingerprinting. Understanding how these APIs work and the information they expose helps you make informed decisions about your digital privacy.

The MediaDevices API Explained

The MediaDevices interface, part of the WebRTC specification, provides access to connected media input devices like cameras and microphones. websites can enumerate available devices, request permissions, and stream audio/video content. This API has legitimate uses but also enables tracking techniques that work independently of cookies.

When a website calls navigator.mediaDevices.enumerateDevices(), the browser returns an array of MediaDeviceInfo objects. Each device object contains several properties that reveal information about your hardware:

async function listMediaDevices() {
  try {
    // Request permission first (required in most browsers)
    await navigator.mediaDevices.getUserMedia({ audio: true, video: true });

    const devices = await navigator.mediaDevices.enumerateDevices();

    devices.forEach(device => {
      console.log('Device Kind:', device.kind);
      console.log('Device Label:', device.label);
      console.log('Group ID:', device.groupId);
      console.log('Device ID:', device.deviceId);
    });
  } catch (error) {
    console.error('Error accessing media devices:', error);
  }
}

The device.deviceId property is particularly significant for fingerprinting. This unique identifier persists across browsing sessions, allowing trackers to recognize returning users even when they clear cookies or use private browsing mode.

What Information Gets Exposed

Each MediaDeviceInfo object reveals several data points that contribute to device fingerprinting:

Device Labels: After granting permission, the browser exposes human-readable labels like “FaceTime HD Camera” or “Built-in Microphone.” These labels contain manufacturer names, model numbers, and sometimes serial number fragments that create highly unique identifiers.

Group Identifiers: The groupId property groups devices that belong to the same physical device. For example, a laptop’s built-in camera and microphone share a group ID, creating a fingerprinting signal that identifies the specific hardware configuration.

Persistent Device IDs: The deviceId remains constant across sessions unless the user manually clears site data or resets permissions. This ID persists even in incognito mode, making it a powerful tracking vector that bypasses traditional privacy protections.

Device Kind: The type classification (videoinput, audioinput, audiooutput) reveals your hardware capabilities and often indicates whether you’re using built-in or external devices.

Permission Side Effects: Once you grant permission for a website to access media devices, that site gains the ability to enumerate devices with full labels—exposing camera brand, microphone model, and other hardware details. Even if you never actually use the camera or microphone, granting permission exposes this information for tracking.

The deviceId property warrants particular attention for privacy analysis. This property returns a unique identifier stable across sessions unless the user resets permissions. Unlike cookies, which browsers can clear, device IDs persist independently. Even in incognito or private browsing mode, the device ID remains the same. This makes it a powerful tracking vector that bypasses traditional privacy protections.

Fingerprinting Techniques and Applications

Trackers combine media device information with other browser signals to create persistent identifiers. The enumeration API becomes particularly powerful when combined with other fingerprinting vectors:

Hardware Correlation: Device enumeration data correlates with other hardware fingerprints—canvas fingerprints, audio context fingerprints, and WebGL renderer information. When combined, these signals create highly unique device profiles that remain stable over time.

Cross-Site Tracking: A tracker that loads on multiple websites can collect device fingerprints and correlate browsing activity across domains. Since the deviceId persists, users can be identified even without accounts or cookies.

Device Profiling: The specific combination of camera model, microphone model, and audio characteristics creates a fingerprint that identifies not just the browser but the physical device. This enables techniques like login fingerprinting, where websites detect when the same device accesses different accounts.

IMEI and Hardware Serial Detection: Some websites attempt to extract hardware identifiers like IMEI numbers or device serial numbers through clever combinations of APIs. While modern browsers limit this, sophisticated scripts can sometimes infer hardware details from device enumeration combined with other fingerprinting vectors.

The practical threat from media device enumeration combines with other tracking vectors. A tracker might correlate device enumeration data with canvas fingerprinting, WebGL information, and browser plugin data to create a composite fingerprint that survives cookie deletion and incognito browsing.

Behavioral Tracking Through Media API

Beyond passive device information, websites can observe user behavior through media APIs. When a user grants permission to access cameras and microphones, websites can detect:

This behavioral metadata creates additional tracking signals independent of the device enumeration data itself.

Browser Privacy Protections

Major browsers have implemented varying levels of protection against media device fingerprinting:

Chrome: Requires explicit permission before exposing device labels and persistent IDs. The device ID rotates after 30 days of no interaction with the site, though this rotation doesn’t prevent fingerprinting within that window.

Firefox: Implements the privacy.resistFingerprinting preference which spoofs media device information. When enabled, Firefox reports generic device labels and rotates device IDs frequently.

Safari: Uses Intelligent Tracking Prevention and limits media device API access. Safari requires user gesture activation and periodically resets device permissions.

Edge and Other Chromium Browsers: Follow Chrome’s approach, requiring explicit permission before exposing device labels. Some implement additional protections through extended tracking prevention features.

Recent browser improvements include periodic permission resets. Firefox and Safari periodically reset media device permissions if a site hasn’t actually used the camera or microphone, reducing persistent fingerprinting windows. However, within the active permission window, fingerprinting remains possible.

Protecting Yourself as a User

Several strategies reduce your exposure to media device fingerprinting:

Review and Revoke Permissions: Regularly check which sites have camera and microphone access through browser settings. Remove unnecessary permissions:

Use Browser Extensions: Extensions like Privacy Badger or uBlock Origin block known fingerprinting scripts. The Canvas Blocker extension specifically randomizes canvas fingerprinting, though it may affect some legitimate website functionality.

Test Your Exposure: Visit sites like Cover Your Tracks (formerly Panopticlick) or amiunique.org to see how unique your browser’s fingerprint is and what information it exposes.

Deny Permission by Default: A simple privacy practice is to deny camera and microphone permissions by default. Only grant permission to applications you actively use for communication or content creation. For websites requesting these permissions, consider whether the request is legitimate—a news website has no legitimate reason to access your camera.

Physical Privacy: Consider using physical privacy covers (webcam covers, microphone tape) in addition to permission management. These provide defense-in-depth against exploitation of media APIs or other vulnerabilities.

Reset Permissions Periodically: Manually reset media permissions regularly through your browser settings. This breaks persistent fingerprinting vectors and requires websites to re-request permission.

Monitor Permission Changes: If you notice websites you don’t use frequently have suddenly gained media device access, investigate. This could indicate security compromise or unauthorized script injection.

Implementation Guidance for Developers

If you’re building applications that use media devices, following privacy-conscious practices protects your users:

// Request permissions only when needed
// Don't enumerate devices on page load
async function requestMediaAccess() {
  // Use constraints to request specific capabilities
  const stream = await navigator.mediaDevices.getUserMedia({
    video: { width: { ideal: 1280 }, height: { ideal: 720 } },
    audio: { echoCancellation: true, noiseSuppression: true }
  });

  // Don't store device IDs for tracking purposes
  // Process streams locally without sending identifiers to servers

  return stream;
}

Minimize Data Collection: Only request the permissions your application actually needs. Process media streams locally when possible, and avoid transmitting device identifiers to analytics services.

Implement Permission Handling: Build graceful fallbacks for users who deny permissions. Your application should function without camera or microphone access rather than blocking functionality.

Respect User Choices: Don’t attempt to work around browser privacy protections or use creative techniques to re-identify users who have denied permissions.

Implement Privacy-Preserving Alternatives: Where possible, implement alternatives to device enumeration. For video conferencing, let users select devices through UI dropdowns rather than enumerating and pre-selecting. For audio applications, use browser defaults when possible.

Audit Third-Party Scripts: Monitor which scripts on your site request media device access. Advertising libraries, analytics providers, or other third-party code may request these APIs without your knowledge. Use content security policies to restrict which domains can request permissions.

The Broader Privacy Context

Media device enumeration represents one component in a larger ecosystem of browser fingerprinting techniques. Understanding how these APIs interact with other tracking methods helps you develop privacy strategies.

The tension between useful web features and privacy protection continues to evolve. Browser vendors are implementing stricter defaults, but the underlying APIs remain powerful tools that can be abused. Staying informed about what information your browser reveals enables you to make choices that align with your privacy requirements.

For developers, building privacy-respecting applications means understanding these APIs thoroughly and implementing only the capabilities your users need. For power users, knowing what gets exposed helps you configure browser settings and extensions that balance functionality with privacy protection.

Advanced Browser Configuration for Device Privacy

Beyond basic permission management, several advanced techniques provide additional control over what device information websites access.

Firefox Advanced Settings: In about:config, set permissions.default.camera and permissions.default.microphone to 2, which means “deny by default.” This prevents any site from accessing these devices without explicit permission. Additionally, set media.peerconnection.enabled to false if you don’t need WebRTC—this eliminates another attack vector for device fingerprinting.

Chrome Security Preferences: Use Chrome’s “Site settings” to implement an allowlist model. Rather than denying permission to all sites (which breaks legitimate functionality), explicitly grant permission only to sites you trust for media access. This reduces the number of tracking surfaces while maintaining usability.

Hardware-Level Protection: Consider using physical kill switches for your camera and microphone if your device supports them. Some business laptops and specialized privacy-focused devices include hardware toggles that completely disconnect these devices at the circuit level, providing protection against both software exploits and firmware-level attacks.

Network Monitoring: Use browser developer tools to monitor network requests when granting media permissions. Look for requests to analytics services or ad networks—these might indicate that permission grant events are being tracked for profiling purposes. If suspicious requests appear, revoke the permission immediately.

Fingerprinting in Mobile Applications

Mobile apps present different media device enumeration challenges than web browsers. Native Android applications using the WebRTC API can enumerate media devices without explicit permission prompts on older Android versions.

For Android users, the permission model has improved significantly with Android 6.0+, which requires explicit runtime permissions for camera and microphone access. However, developers should verify that apps actually request these permissions rather than silently accessing them through system APIs.

iOS provides stronger default privacy protections. The platform requires explicit permission requests and provides notification when apps access camera or microphone. Additionally, iOS limits the amount of device information available to applications, making fingerprinting more difficult than on Android.

Testing Your Device Fingerprinting Profile

Several open-source tools help you assess how unique your device’s fingerprint is based on media enumeration and related signals.

The iphonecheck and chromecheck projects allow you to evaluate your browser’s fingerprinting resistance. These tools examine not just media devices but the broader fingerprinting surface including WebGL, canvas fingerprinting, and hardware acceleration data.

For technical users, compiling your own fingerprinting assessment involves creating a test harness that collects device enumeration data alongside other browser signals. This helps you understand exactly what information is exposed and whether your current browser configuration provides adequate protection.

Regulatory and Industry Developments

Privacy regulations increasingly address browser fingerprinting and device enumeration. The GDPR treats device fingerprinting as personal data processing that requires consent. The UK’s ICO has published guidance specifically addressing browser fingerprinting practices.

Privacy-focused browser development is accelerating. Projects like Tor Browser implement aggressive device enumeration spoofing by reporting identical device information to all websites, making fingerprinting impossible even if a site manages to query the API.

Implementation Checklist for Users

Use this checklist to harden your device against media enumeration fingerprinting:

  1. Open your browser’s site settings (camera/microphone)
  2. Set default to “Ask before allowing”
  3. Review existing permissions and remove unnecessary ones
  4. Install a privacy extension (Privacy Badger or uBlock Origin)
  5. Test your fingerprint at amiunique.org or Cover Your Tracks
  6. For Firefox, enable privacy.resistFingerprinting
  7. Monitor app permissions quarterly and revoke access to apps you no longer use
  8. Consider using separate browser profiles for sensitive activities
  9. Keep your browser and OS updated to receive latest privacy protections
  10. For maximum privacy, use a privacy-focused OS like Tails or Whonix for sensitive communications

Distinguishing Between Legitimate and Tracking Uses

Understanding when media device access is legitimate helps you make informed decisions:

Legitimate Uses:

Suspicious Uses:

When you see permission requests, ask yourself: “Does this application’s core functionality actually require this permission?” If not, deny it.

Working With Multiple Devices

Media enumeration creates challenges across multiple devices:

Fingerprint Consistency Across Devices: Your smartphone, laptop, and tablet each have different hardware configurations. Trackers that correlate data across devices watch for:

Using different browsers on different devices breaks some correlation attempts. Using different user agents helps further:

// Example: Spoofing user agent to complicate tracking
// Using browser console or extension

const originalUA = navigator.userAgent;
const spoofedUA = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36';

Object.defineProperty(navigator, 'userAgent', {
    get: () => spoofedUA,
});

Real-World Fingerprinting Examples

Understanding how trackers combine media device info with other signals helps you protect yourself:

Example 1: Ad Network Tracking A user visits Site an and Site B. Both load ads from Network X. Network X collects:

Across Site an and Site B, these combined signals create a profile that persists despite cookie deletion.

Example 2: Cross-Site Fingerprinting A third-party analytics script on multiple websites collects device info. The script runs on:

Even without cookies, the analytics provider tracks you across all these sites using combined fingerprints.

These real-world examples show why defense-in-depth (extensions + settings + monitoring) is necessary.

Built by theluckystrike — More at zovo.one