Repository Analysis

fingerprintjs/fingerprintjs

The most advanced free and open-source browser fingerprinting library

3.5 Likely human-written View on GitHub
3.5
Adjusted Score
3.5
Raw Score
100%
Time Factor
2026-05-27
Last Push
27,208
Stars
TypeScript
Language
10,710
Lines of Code
144
Files
25
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 0HIGH 2MEDIUM 2LOW 21

Pattern Findings

25 matches across 4 categories. Click a row to expand file-level details.

Hyper-Verbose Identifiers19 hits · 19 pts
SeverityFileLineSnippet
LOW…ources/content_blocking/get_unique_filter_selectors.ts98async function getSelectorsFromDirectory(directoryPath: string) {
LOWresources/content_blocking/make_selectors_tester.ts68function getSelectorFromFilterRule(rule: string): string | undefined {
LOWresources/content_blocking/make_selectors_tester.ts109async function getJsToDetectBlockedSelectors(selectors: readonly string[]) {
LOWtests/utils/index.ts93export function getBrowserEngineMajorVersion(): number | undefined {
LOWsrc/agent.ts81function componentsToCanonicalString(components: UnknownComponents) {
LOWsrc/utils/async.ts22export function requestIdleCallbackIfAvailable(fallbackTimeout: number, deadlineTimeout = Infinity): Promise<void> {
LOWsrc/sources/canvas.ts35export function getUnstableCanvasFingerprint(skipImages?: boolean): CanvasFingerprint {
LOWsrc/sources/canvas.ts165function doesBrowserPerformAntiFingerprinting() {
LOWsrc/sources/audio.ts41export function getUnstableAudioFingerprint(): number | (() => Promise<number>) {
LOWsrc/sources/audio.ts98function doesBrowserSuspendAudioContext() {
LOWsrc/sources/audio.ts106function doesBrowserPerformAntifingerprinting() {
LOWsrc/sources/private_click_measurement.ts13export default function getPrivateClickMeasurement(): string | undefined {
LOWsrc/sources/audio_base_latency.ts12export default function getAudioContextBaseLatency(): number {
LOWsrc/sources/audio.test.ts42function doesBrowserPerformAntifingerprinting() {
LOWsrc/sources/audio.test.ts48function doesBrowserSuspendAudioContext() {
LOWsrc/sources/screen_resolution.ts25export function getUnstableScreenResolution(): ScreenResolution {
LOWsrc/sources/webgl.ts241export function shouldAvoidDebugRendererInfo(): boolean {
LOWsrc/sources/webgl.ts249export function shouldAvoidPolygonModeExtensions(): boolean {
LOWsrc/sources/hardware_concurrency.ts30export function getUnstableHardwareConcurrency(): number | undefined {
Cross-Language Confusion (JS/TS)2 hits · 10 pts
SeverityFileLineSnippet
HIGH…ources/content_blocking/get_unique_filter_selectors.ts67 print(`Filter "${filterName}" has no selectors`)
HIGH…ources/content_blocking/get_unique_filter_selectors.ts80 print(message)
AI Slop Vocabulary2 hits · 6 pts
SeverityFileLineSnippet
MEDIUMrollup.config.ts58 // UMD for users who use Require.js or Electron and want to leverage them
MEDIUMsrc/sources/cookies_enabled.ts12 // navigator.cookieEnabled cannot detect custom or nuanced cookie blocking configurations. For example, when blocking
Over-Commented Block2 hits · 2 pts
SeverityFileLineSnippet
LOW.github/workflows/codeql_analysis.yml1# For most projects, this workflow file will not need changing; you simply need
LOWsrc/confidence.ts41 // Windows