Below we provide a list of JavaScript API keywords frequently used by fingerprinting scripts. To this end, we measure the relative prevalence of API keywords in fingerprinting scripts by computing the ratio of their fraction of occurrence in fingerprinting scripts to their fraction of occurrence in non-fingerprinting scripts. A higher value of the ratio for a keyword means that it is more prevalent in fingerprinting scripts than non-fingerprinting scripts. Note that infinity
means that the keyword is only present in fingerprinting scripts. For example, a value of 1.0 means that we only observe that keyword in fingerprinting scripts, whereas a value of 0.5 means we observe it in an equal number of fingerprinting and non-fingerprinting scripts.
Table includes keywords that have pervasiveness values greater than or equal to 10. Scripts (count) represents the number of distinct fingerprinting scripts in which the keyword is used and Websites (count) represents the number of websites on which those scripts are embedded.
API Keywords | Ratio | Scripts (count) | Websites (count) |
---|---|---|---|
onpointerleave | infinity |
4 | 1366 |
StereoPannerNode | infinity |
1 | 1363 |
FontFaceSetLoadEvent | infinity |
1 | 1363 |
PresentationConnectionAvailableEvent | infinity |
1 | 1363 |
MediaDeviceInfo | infinity |
1 | 1363 |
msGetRegionContent | infinity |
1 | 1363 |
peerIdentity | infinity |
1 | 1363 |
MSManipulationEvent | infinity |
1 | 1363 |
VideoStreamTrack | infinity |
1 | 1363 |
mozSetImageElement | infinity |
1 | 1363 |
magnetometer | infinity |
215 | 241 |
requestWakeLock | infinity |
1 | 174 |
PresentationRequest | infinity |
16 | 16 |
audioWorklet | infinity |
3 | 8 |
onwebkitanimationiteration | infinity |
3 | 3 |
onpointerenter | infinity |
3 | 3 |
onwebkitanimationstart | infinity |
3 | 3 |
onlostpointercapture | infinity |
3 | 3 |
RTCCertificate | infinity |
2 | 2 |
PresentationConnectionList | infinity |
1 | 1 |
onMSVideoOptimalLayoutChanged | infinity |
1 | 1 |
PresentationAvailability | infinity |
1 | 1 |
BaseAudioContext | infinity |
1 | 1 |
activeVRDisplays | infinity |
1 | 1 |
BluetoothRemoteGATTCharacteristic | infinity |
1 | 1 |
VisualViewport | infinity |
1 | 1 |
PresentationConnection | infinity |
1 | 1 |
onMSVideoFormatChanged | infinity |
1 | 1 |
onMSVideoFrameStepCompleted | infinity |
1 | 1 |
BluetoothDevice | infinity |
1 | 1 |
onuserproximity | 543.77 | 18 | 18 |
ongotpointercapture | 362.52 | 3 | 3 |
onpointerout | 362.52 | 3 | 3 |
accelerometer | 326.71 | 219 | 247 |
chargingchange | 302.10 | 20 | 20 |
onafterscriptexecute | 217.51 | 18 | 1380 |
channelCountMode | 199.03 | 28 | 39 |
getDevices | 187.62 | 59 | 80 |
maxChannelCount | 184.44 | 29 | 40 |
baseLatency | 181.26 | 3 | 8 |
onpointerover | 181.26 | 3 | 3 |
onbeforescriptexecute | 181.26 | 18 | 1380 |
onicegatheringstatechange | 179.78 | 61 | 61 |
MediaDevices | 161.12 | 4 | 1366 |
numberOfInputs | 157.09 | 26 | 36 |
channelInterpretation | 147.69 | 11 | 22 |
speedOfSound | 140.98 | 7 | 11 |
dopplerFactor | 140.98 | 7 | 11 |
midi | 138.72 | 225 | 251 |
ondeviceproximity | 131.35 | 25 | 282 |
HTMLMenuItemElement | 121.40 | 218 | 244 |
updateCommands | 120.84 | 1 | 1363 |
FRAGMENT_SHADER_DERIVATIVE_HINT_OES | 120.84 | 1 | 2 |
getSupportedProfiles | 120.84 | 1 | 2 |
initCompositionEvent | 120.84 | 1 | 1 |
initAnimationEvent | 120.84 | 1 | 1 |
vrdisplayfocus | 120.84 | 1 | 1 |
initTransitionEvent | 120.84 | 1 | 1 |
vrdisplayblur | 120.84 | 1 | 1 |
exportKey | 105.97 | 57 | 57 |
onauxclick | 90.63 | 3 | 3 |
microphone | 90.43 | 223 | 250 |
iceGatheringState | 90.30 | 68 | 1481 |
ondevicelight | 88.31 | 19 | 36 |
renderedBuffer | 87.17 | 189 | 439 |
WebGLContextEvent | 82.52 | 28 | 44 |
ondeviceorientationabsolute | 80.56 | 4 | 1366 |
startRendering | 79.33 | 193 | 458 |
createOscillator | 78.77 | 191 | 445 |
knee | 76.65 | 170 | 419 |
OfflineAudioContext | 74.68 | 199 | 721 |
timeLog | 72.50 | 12 | 12 |
getFloatFrequencyData | 72.50 | 6 | 10 |
WEBGL_compressed_texture_atc | 72.50 | 3 | 4 |
illuminance | 72.50 | 3 | 3 |
reduction | 69.64 | 170 | 419 |
modulusLength | 69.39 | 58 | 58 |
WebGL2RenderingContext | 68.71 | 29 | 30 |
enumerateDevices | 64.12 | 208 | 666 |
AmbientLightSensor | 63.60 | 10 | 267 |
attack | 61.31 | 173 | 434 |
AudioWorklet | 60.42 | 22 | 32 |
Worklet | 60.42 | 22 | 32 |
AudioWorkletNode | 60.42 | 22 | 32 |
lastStyleSheetSet | 60.42 | 1 | 1363 |
DeviceProximityEvent | 60.42 | 1 | 1363 |
DeviceLightEvent | 60.42 | 1 | 1363 |
enableStyleSheetsForSet | 60.42 | 1 | 1363 |
UserProximityEvent | 60.42 | 1 | 1363 |
vrdisplaydisconnect | 60.42 | 1 | 1 |
mediaDevices | 60.03 | 230 | 850 |
vibrate | 57.68 | 232 | 1793 |
vendorSub | 56.17 | 251 | 1728 |
setValueAtTime | 55.29 | 167 | 417 |
getChannelData | 55.18 | 195 | 460 |
MAX_DRAW_BUFFERS_WEBGL | 54.93 | 10 | 12 |
reliable | 52.36 | 39 | 103 |
WEBGL_draw_buffers | 52.09 | 25 | 27 |
EXT_sRGB | 51.79 | 3 | 4 |
setSinkId | 50.35 | 5 | 1367 |
namedCurve | 50.29 | 67 | 74 |
minDecibels | 48.34 | 2 | 2 |
UNKNOWN_ERR | 48.34 | 2 | 2 |
WEBGL_debug_shaders | 45.31 | 3 | 4 |
productSub | 42.79 | 734 | 2819 |
hardwareConcurrency | 41.92 | 716 | 3661 |
publicExponent | 41.52 | 67 | 74 |
requestMIDIAccess | 40.28 | 1 | 1363 |
mozIsLocallyAvailable | 40.28 | 1 | 174 |
ondevicemotion | 40.28 | 4 | 4 |
maxDecibels | 40.28 | 2 | 2 |
getLayoutMap | 40.28 | 1 | 1 |
Animatable | 40.28 | 1 | 1 |
GeckoActiveXObject | 40.28 | 1 | 1 |
XPathResult | 39.73 | 218 | 417 |
mozBattery | 39.04 | 42 | 322 |
IndexedDB | 38.73 | 25 | 25 |
generateKey | 37.46 | 62 | 62 |
buildID | 36.52 | 272 | 414 |
getSupportedExtensions | 36.46 | 534 | 1007 |
MAX_TEXTURE_MAX_ANISOTROPY_EXT | 35.85 | 521 | 980 |
oscpu | 35.33 | 681 | 1196 |
oninvalid | 34.75 | 65 | 1428 |
vpn | 34.53 | 24 | 24 |
lastEventID | 34.53 | 2 | 2 |
mozCaptureStream | 34.53 | 2 | 2 |
createDynamicsCompressor | 33.54 | 189 | 442 |
privateKey | 33.46 | 67 | 74 |
EXT_texture_filter_anisotropic | 32.91 | 479 | 949 |
isPointInPath | 32.17 | 481 | 949 |
getContextAttributes | 31.76 | 460 | 920 |
BatteryManager | 31.23 | 23 | 50 |
getShaderPrecisionFormat | 30.81 | 450 | 915 |
depthFunc | 30.81 | 452 | 921 |
uniform2f | 30.71 | 460 | 930 |
rangeMax | 30.36 | 449 | 902 |
rangeMin | 30.24 | 446 | 897 |
EXT_disjoint_timer_query | 30.21 | 3 | 4 |
scrollByPages | 30.21 | 1 | 1363 |
CanvasCaptureMediaStreamTrack | 30.21 | 1 | 18 |
onlanguagechange | 30.21 | 4 | 4 |
RTCDataChannelEvent | 30.21 | 1 | 2 |
onMSFullscreenChange | 30.21 | 1 | 1 |
clearColor | 29.16 | 457 | 916 |
createWriter | 28.93 | 17 | 17 |
getUniformLocation | 28.61 | 466 | 948 |
getAttribLocation | 28.58 | 464 | 945 |
drawArrays | 28.53 | 466 | 948 |
useProgram | 28.37 | 467 | 949 |
enableVertexAttribArray | 28.37 | 466 | 948 |
createShader | 28.31 | 467 | 949 |
compileShader | 28.30 | 467 | 936 |
shaderSource | 28.27 | 466 | 936 |
attachShader | 28.25 | 464 | 934 |
bufferData | 28.24 | 466 | 938 |
linkProgram | 28.23 | 464 | 933 |
vertexAttribPointer | 28.22 | 464 | 933 |
bindBuffer | 28.14 | 463 | 932 |
createProgram | 27.95 | 464 | 934 |
OES_standard_derivatives | 27.46 | 20 | 1384 |
appCodeName | 27.03 | 325 | 1890 |
getAttributeNodeNS | 26.49 | 16 | 21 |
ARRAY_BUFFER | 25.36 | 471 | 941 |
suffixes | 25.14 | 775 | 1441 |
TouchEvent | 25.01 | 481 | 1130 |
MIDIPort | 24.17 | 2 | 19 |
MAX_COLOR_ATTACHMENTS_WEBGL | 24.17 | 1 | 2 |
lowpass | 24.17 | 1 | 1 |
onaudioprocess | 23.64 | 9 | 17 |
showModalDialog | 23.56 | 39 | 1419 |
globalStorage | 23.48 | 245 | 1681 |
camera | 22.76 | 229 | 255 |
onanimationiteration | 22.66 | 3 | 3 |
webkitNotification | 21.97 | 2 | 2 |
textBaseline | 21.76 | 888 | 3234 |
MediaStreamTrackEvent | 21.32 | 3 | 1365 |
deviceproximity | 21.13 | 25 | 26 |
taintEnabled | 20.89 | 14 | 24 |
alphabetic | 20.65 | 671 | 2986 |
userproximity | 20.28 | 24 | 25 |
globalCompositeOperation | 20.15 | 507 | 975 |
outputBuffer | 20.14 | 12 | 34 |
WebGLUniformLocation | 20.14 | 1 | 1363 |
WebGLShaderPrecisionFormat | 20.14 | 1 | 1363 |
OffscreenCanvas | 20.14 | 1 | 1 |
MIDIInput | 20.14 | 1 | 1 |
ServiceWorkerContainer | 20.14 | 1 | 1 |
pranswer | 20.14 | 1 | 1 |
ScriptProcessorNode | 20.14 | 1 | 1 |
MIDIAccess | 20.14 | 1 | 1 |
vrdisplayconnect | 20.14 | 1 | 1 |
customelements | 20.14 | 1 | 1 |
SVGAnimationElement | 20.14 | 1 | 1 |
createScriptProcessor | 20.14 | 11 | 20 |
createBuffer | 19.98 | 472 | 954 |
UIEvent | 19.93 | 47 | 63 |
toSource | 19.54 | 416 | 2224 |
createAnalyser | 19.33 | 12 | 17 |
fillRect | 19.22 | 898 | 3432 |
requestAutocomplete | 18.59 | 2 | 2 |
evenodd | 18.49 | 504 | 960 |
fillText | 18.09 | 957 | 3502 |
candidate | 18.03 | 178 | 1847 |
WEBGL_debug_renderer_info | 17.83 | 406 | 2214 |
toDataURL | 17.64 | 951 | 3507 |
dischargingTime | 17.53 | 38 | 54 |
bluetooth | 17.28 | 225 | 424 |
vrdisplaydeactivate | 17.26 | 1 | 1 |
MediaKeySession | 17.26 | 1 | 1 |
vrdisplayactivate | 17.26 | 1 | 1 |
FLOAT | 16.89 | 467 | 939 |
battery | 16.82 | 152 | 1853 |
devicelight | 16.51 | 25 | 26 |
onanimationstart | 16.48 | 3 | 3 |
getExtension | 16.43 | 575 | 1115 |
onemptied | 16.11 | 4 | 4 |
captureStream | 16.11 | 2 | 2 |
MediaStreamTrack | 15.90 | 10 | 10 |
WebGLRenderingContext | 15.75 | 472 | 2432 |
oncomplete | 15.70 | 256 | 505 |
onratechange | 15.59 | 4 | 4 |
fillStyle | 15.55 | 962 | 3517 |
getGamepads | 15.10 | 14 | 1807 |
BiquadFilterNode | 15.10 | 1 | 1363 |
SVGZoomEvent | 15.10 | 1 | 1363 |
filterNumber | 15.10 | 1 | 1 |
NotSupported | 15.10 | 1 | 1 |
PermissionStatus | 15.10 | 1 | 1 |
ignoreBOM | 15.10 | 1 | 1 |
queryInfo | 15.10 | 1 | 1 |
onspeechend | 15.10 | 1 | 1 |
maxTouchPoints | 15.09 | 741 | 2700 |
frequencyBinCount | 14.87 | 8 | 12 |
credential | 14.82 | 66 | 66 |
iceTransportPolicy | 14.65 | 4 | 4 |
iceCandidatePoolSize | 14.50 | 3 | 3 |
DeviceMotionEvent | 14.26 | 40 | 1603 |
rtcpMuxPolicy | 14.22 | 4 | 4 |
webgl | 14.17 | 557 | 1510 |
indexedDB | 13.92 | 887 | 3095 |
rotationAngle | 13.85 | 22 | 22 |
setTargetAtTime | 13.73 | 5 | 5 |
iceServers | 13.62 | 195 | 519 |
clipboard | 13.59 | 233 | 260 |
onconnectionstatechange | 13.43 | 2 | 2 |
connectionstatechange | 13.43 | 2 | 2 |
meetOrSlice | 13.43 | 1 | 1 |
remoteCandidateId | 13.43 | 1 | 1 |
channelCount | 13.17 | 34 | 45 |
getParameter | 13.08 | 581 | 1112 |
selectionDirection | 13.01 | 7 | 7 |
closePath | 12.98 | 513 | 970 |
NetworkInformation | 12.95 | 9 | 266 |
emma | 12.95 | 3 | 3 |
createOffer | 12.68 | 176 | 480 |
languages | 12.57 | 699 | 2950 |
setLocalDescription | 12.46 | 178 | 495 |
requestFileSystem | 12.39 | 28 | 1080 |
createDataChannel | 12.33 | 173 | 477 |
onicecandidate | 12.32 | 175 | 1841 |
Float32Array | 12.30 | 534 | 1024 |
requestPointerLock | 12.08 | 2 | 1365 |
ValidityState | 12.08 | 1 | 1363 |
onwebkitresourcetimingbufferfull | 12.08 | 1 | 1363 |
gathering | 12.08 | 4 | 4 |
MediaQueryList | 12.08 | 1 | 1 |
tooltipNode | 12.08 | 1 | 1 |
drawWindow | 12.08 | 1 | 1 |
Sensor | 12.08 | 1 | 1 |
TEMPORARY | 12.05 | 129 | 227 |
SpeechRecognition | 11.79 | 4 | 4 |
recognition | 11.69 | 3 | 3 |
beginPath | 11.59 | 523 | 1079 |
smoothingTimeConstant | 11.51 | 2 | 2 |
systemLanguage | 11.50 | 672 | 1375 |
acceleration | 11.46 | 48 | 236 |
multiply | 11.36 | 527 | 986 |
arc | 11.35 | 528 | 1193 |
fonts | 11.35 | 474 | 2553 |
gbk | 11.33 | 21 | 21 |
outerText | 11.31 | 22 | 23 |
deriveBits | 11.19 | 10 | 17 |
doNotTrack | 11.16 | 871 | 2847 |
publicKey | 11.07 | 75 | 82 |
storageArea | 10.99 | 6 | 6 |
EMS | 10.99 | 2 | 2 |
xMaxYMin | 10.99 | 1 | 1 |
DataError | 10.99 | 1 | 1 |
remoteId | 10.99 | 1 | 1 |
RTCPeerConnection | 10.97 | 171 | 1963 |
createMediaStreamSource | 10.74 | 4 | 4 |
getImageData | 10.56 | 255 | 293 |
bundlePolicy | 10.36 | 3 | 3 |
PERSISTENT | 10.28 | 4 | 21 |
ANGLE_instanced_arrays | 10.07 | 4 | 1367 |
hasPointerCapture | 10.07 | 2 | 1364 |
focusMode | 10.07 | 2 | 3 |
xMidYMin | 10.07 | 1 | 1 |