Skip to content

Media Fingerprinting

Media fingerprinting checks which video and audio codecs the browser supports, plus available media devices.

Collected signals

Video codecs tested: H.264 (baseline/high), H.265, AV1, VP8, VP9, Theora

Audio codecs tested: AAC, MP3, Vorbis, Opus, WAV, FLAC

Media devices: Enumerated via navigator.mediaDevices.enumerateDevices() (kind only, no labels)

Feature detection: MediaSession API, Picture-in-Picture support

Why it works

Codec support depends on:

  • Browser engine (Chromium supports more codecs than Firefox)
  • OS (macOS has hardware H.265, most Linux distros don't)
  • Hardware decoders (GPU-accelerated AV1 on newer chips)

Entropy and stability

PropertyValue
Entropy~7 bits
Stability0.85
Typical duration5-7ms

Usage

ts
const fp = await neoprint.get({ collectors: ['media'] })
const media = fp.components.media.value

console.log(media.videoCodecs)  // supported video formats
console.log(media.audioCodecs)  // supported audio formats
console.log(media.deviceKinds)  // ['audioinput', 'videoinput', 'audiooutput']

Released under the MIT License.