Skip to main content

Does npr.org fingerprint you?

Fingerprinting indicators observed.

The latest measured scans include canvas drawing and readback by the same script. This is a fingerprinting indicator, not proof of tracking intent or transmission.

Open evidence JSON ↗

All 8 source records are included in the JSON. Scan timestamps and versions are shown as recorded. The tabs show the latest usable homepage measurement for each setup. Later failed attempts remain in the history. Scan scope and methodology ↗

Inside the scan

← All websites

Draw + readback

5 of 5 signal families observed

Canvas: ObservedWebGL: ObservedAudio: ObservedFonts: ObservedDevice: Observed
Measurement
Measured · Partial load
Page context
Page document
Scan time
2026-10-22T22:10:47.326848Z
Browser / scanner
156.0.8078.4 / 0.4

Captured titleNPR - Breaking News, Analysis, Music, Arts & Podcasts : NPR

CanvasDraws text and reads canvas output.6 API entries

Observed requires a text-drawing API and a canvas readback API. Guide ↗

canvas.getContext1 calls
  • https://www.npr.org/line 121 · col 1098
canvas.getContext1 calls
  • https://www.npr.org/line 121 · col 1098
canvas.getContext4 calls

Frame: https://www.npr.org/

  • Inline caller recorded
  • https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
canvas.toDataURL1 calls

Frame: https://www.npr.org/

  • https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
canvas2d.fillText2 calls

Frame: https://www.npr.org/

  • https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
canvas2d.measureText11 calls

Frame: https://www.npr.org/

  • https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
WebGLQueries the graphics environment.4 API entries

Observed requires at least three distinct WebGL probing APIs. Guide ↗

webgl2renderingcontext.getExtension4 calls

Frame: https://www.npr.org/

  • https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
webgl2renderingcontext.getParameter22 calls

Frame: https://www.npr.org/

  • https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
webglrenderingcontext.getExtension1 calls

Frame: https://www.npr.org/

  • https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
webglrenderingcontext.getParameter2 calls

Frame: https://www.npr.org/

  • https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
AudioRenders or reads audio samples.7 API entries

Observed requires offline rendering, buffer reads, or analyser reads. Guide ↗

analyser.getFloatFrequencyData1 calls

Frame: https://www.npr.org/

  • https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
analyser.getFloatTimeDomainData1 calls

Frame: https://www.npr.org/

  • https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
audio.createAnalyser2 calls

Frame: https://www.npr.org/

  • https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
audio.createDynamicsCompressor1 calls

Frame: https://www.npr.org/

  • https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
audio.createOscillator2 calls

Frame: https://www.npr.org/

  • https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
audiobuffer.getChannelData1 calls

Frame: https://www.npr.org/

  • https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
offlineaudio.startRendering1 calls

Frame: https://www.npr.org/

  • https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
FontsMeasures text repeatedly.1 API entries

Observed requires at least ten text-measurement calls. Guide ↗

canvas2d.measureText11 calls

Frame: https://www.npr.org/

  • https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
DeviceReads browser and display properties.14 API entries

Observed requires at least three distinct browser, screen, or window properties. Guide ↗

navigator.deviceMemory2 calls

Frame: https://www.npr.org/

  • https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
navigator.hardwareConcurrency2 calls

Frame: https://www.npr.org/

  • https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
navigator.language1 calls

Frame: https://www.npr.org/

  • https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
navigator.languages4 calls

Frame: https://www.npr.org/

  • https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
navigator.maxTouchPoints2 calls

Frame: https://www.npr.org/

  • https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
navigator.platform4 calls

Frame: https://www.npr.org/

  • https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
navigator.plugins19 calls

Frame: https://www.npr.org/

  • https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
navigator.userAgent7 calls

Frame: https://www.npr.org/

  • https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
navigator.webdriver3 calls

Frame: https://www.npr.org/

  • https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
screen.colorDepth2 calls

Frame: https://www.npr.org/

  • https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
screen.height2 calls

Frame: https://www.npr.org/

  • https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
screen.pixelDepth2 calls

Frame: https://www.npr.org/

  • https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
screen.width2 calls

Frame: https://www.npr.org/

  • https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
window.devicePixelRatio3 calls

Frame: https://www.npr.org/

  • https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
Scripts with both text drawing and canvas readback 1

These source URLs appear in both call groups. Aggregated logs do not preserve the full execution sequence or establish the purpose of the collection.

  • https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
Providers, script signatures, and DNS 2 provider labels

Provider labels and static signatures are scanner observations. A library-name match does not establish that its code executed.

  • Google Tag Managerwww.googletagmanager.com
  • Piano (paywall/analytics)cdn.piano.io
Network and worker observations 154 requests
Captured scripts
4
Instrumented frames
3
Google Ads observed
No
Transmission evidence
Not validated

Legacy transmission hints are excluded. A request after an API call does not establish that the extracted value was sent.

Third-party hosts

  • cdn.cookielaw.org
  • cdn.piano.io
  • cpftuhdzdstc5rz8x.ay.delivery
  • js.stripe.com
  • npr.brightspotcdn.com
  • s.go-mpulse.net
  • www.googletagmanager.com
Other recorded API calls 2
  • document.cookie.read7 calls
  • document.cookie.write2 calls
Source record and integrity
Original source
results/headful/npr-org-20261022T221047.json
Original file SHA-256
b4bdbd010e2a9fefd12adca9c92f6c4a90e15d1b699621505c487e5d361b5e25

Run ID: headful-b4bdbd010e2a. The JSON contains sanitized observations, not the original private scan payload.

Other scan attempts (4)

Navigation failed

Navigation failed

Canvas: UnmeasuredWebGL: UnmeasuredAudio: UnmeasuredFonts: UnmeasuredDevice: Unmeasured
Measurement
Navigation failed
Page context
Page not measured
Scan time
2026-10-21T22:19:29.060284Z
Browser / scanner
156.0.8078.4 / 0.3
Navigation failed — no usable scan result

Navigation or page loading failed in this browser setup. The record does not establish why it failed.

Source record and integrity
Original source
results/headful/npr-org-20261021T221929.json
Original file SHA-256
b5ac363820fb865257c18cef014fdf0d7f41bfa5bf6f656566ccda109e1906de

Run ID: headful-b5ac363820fb. The JSON contains sanitized observations, not the original private scan payload.

Navigation failed

Navigation failed

Canvas: UnmeasuredWebGL: UnmeasuredAudio: UnmeasuredFonts: UnmeasuredDevice: Unmeasured
Measurement
Navigation failed
Page context
Page not measured
Scan time
2026-10-22T15:16:14.908979Z
Browser / scanner
156.0.8078.4 / 0.4
Navigation failed — no usable scan result

Navigation or page loading failed in this browser setup. The record does not establish why it failed.

Source record and integrity
Original source
results/headful/npr-org-20261022T151614.json
Original file SHA-256
2e4fb3cba5df63e7ebf2ad00a2360f07e6899453f502733c243609f5e36476b5

Run ID: headful-2e4fb3cba5df. The JSON contains sanitized observations, not the original private scan payload.

Navigation failed

Navigation failed

Canvas: UnmeasuredWebGL: UnmeasuredAudio: UnmeasuredFonts: UnmeasuredDevice: Unmeasured
Measurement
Navigation failed
Page context
Page not measured
Scan time
2026-10-22T20:50:27.898776Z
Browser / scanner
156.0.8078.4 / 0.4
Navigation failed — no usable scan result

Navigation or page loading failed in this browser setup. The record does not establish why it failed.

Source record and integrity
Original source
results/headful/npr-org-20261022T205027.json
Original file SHA-256
f9b5e31af350d4230ddbbbe3066cbce3d2d4fe57065a0aa29c3056dc3005d16f

Run ID: headful-f9b5e31af350. The JSON contains sanitized observations, not the original private scan payload.

Scanner error

Scanner error

Canvas: UnmeasuredWebGL: UnmeasuredAudio: UnmeasuredFonts: UnmeasuredDevice: Unmeasured
Measurement
Scanner error
Page context
Page not measured
Scan time
2026-10-22T22:10:46.525494Z
Browser / scanner
156.0.8078.4 / 0.4
Scanner error — no usable scan result

The scanner crashed while collecting this page. No usable API results were saved for this setup. A fresh scan is needed; this is not a site-blocking verdict.

Source record and integrity
Original source
results/headful/npr-org-20261022T221046.json
Original file SHA-256
e56b773b5db96e770928923a2cb6d70c49e7d81d061dfbd9789048fb5f587aba

Run ID: headful-e56b773b5db9. The JSON contains sanitized observations, not the original private scan payload.

Signals observed

1 of 5 signal families observed

Canvas: Not observedWebGL: Not observedAudio: Not observedFonts: Not observedDevice: Observed
Measurement
Measured · Partial load
Page context
Page document
Scan time
2026-10-22T23:04:00.554184Z
Browser / scanner
156.0.8078.4 / 0.4

Captured titleNPR - Breaking News, Analysis, Music, Arts & Podcasts : NPR

CanvasDraws text and reads canvas output.2 API entries

Observed requires a text-drawing API and a canvas readback API. Guide ↗

canvas.getContext1 calls
  • https://www.npr.org/line 121 · col 1098
canvas.getContext1 calls

Frame: https://www.npr.org/

  • Inline caller recorded
WebGLQueries the graphics environment.0 API entries

Observed requires at least three distinct WebGL probing APIs. Guide ↗

No matching API call was captured.

AudioRenders or reads audio samples.0 API entries

Observed requires offline rendering, buffer reads, or analyser reads. Guide ↗

No matching API call was captured.

FontsMeasures text repeatedly.0 API entries

Observed requires at least ten text-measurement calls. Guide ↗

No matching API call was captured.

DeviceReads browser and display properties.4 API entries

Observed requires at least three distinct browser, screen, or window properties. Guide ↗

navigator.getBattery1 calls

Frame: https://www.npr.org/

  • https://s.go-mpulse.net/boomerang/[redacted-id]line 10 · col 166254
navigator.platform1 calls

Frame: https://www.npr.org/

  • https://cdn.piano.io/api/tinypass.min.jsline 1 · col 461641
navigator.userAgent1 calls
  • https://s.go-mpulse.net/boomerang/[redacted-id]line 10 · col 123065
navigator.userAgent3 calls

Frame: https://www.npr.org/

  • https://cdn.piano.io/api/tinypass.min.jsline 1 · col 93261
Providers, script signatures, and DNS 3 provider labels

Provider labels and static signatures are scanner observations. A library-name match does not establish that its code executed.

  • Google Adssecurepubads.g.doubleclick.net
  • Google Tag Managerwww.googletagmanager.com
  • Piano (paywall/analytics)cdn.piano.io

Static script signatures

  • https://cdn.piano.io/api/tinypass.min.jsreCAPTCHA · 0 API patterns
Network and worker observations 107 requests
Captured scripts
7
Instrumented frames
2
Google Ads observed
Yes
Transmission evidence
Not validated

Legacy transmission hints are excluded. A request after an API call does not establish that the extracted value was sent.

Third-party hosts

  • c.amazon-adsystem.com
  • c.go-mpulse.net
  • cdn.cookielaw.org
  • cdn.piano.io
  • cpftuhdzdstc5rz8x.ay.delivery
  • js.stripe.com
  • npr.brightspotcdn.com
  • s.go-mpulse.net
  • securepubads.g.doubleclick.net
  • www.googletagmanager.com
Other recorded API calls 2
  • document.cookie.read45 calls
  • document.cookie.write14 calls
Source record and integrity
Original source
results/headless/npr-org-20261022T230400.json
Original file SHA-256
4a64cbf90ffbc470d7a0617f6cc5b13f2d34f382b4befed354f97ee15454de62

Run ID: research-4a64cbf90ffb. The JSON contains sanitized observations, not the original private scan payload.

Other scan attempts (2)

Navigation failed

Navigation failed

Canvas: UnmeasuredWebGL: UnmeasuredAudio: UnmeasuredFonts: UnmeasuredDevice: Unmeasured
Measurement
Navigation failed
Page context
Page not measured
Scan time
2026-10-21T20:47:30.624251Z
Browser / scanner
156.0.8078.4 / 0.3
Navigation failed — no usable scan result

Navigation or page loading failed in this browser setup. The record does not establish why it failed.

Source record and integrity
Original source
results/headless/npr-org-20261021T204730.json
Original file SHA-256
6c44d880a01716ddd1bfbf3a8cf727baeca191e50f41cfa661b9e59d249cf0bf

Run ID: research-6c44d880a017. The JSON contains sanitized observations, not the original private scan payload.

Navigation failed

Navigation failed

Canvas: UnmeasuredWebGL: UnmeasuredAudio: UnmeasuredFonts: UnmeasuredDevice: Unmeasured
Measurement
Navigation failed
Page context
Page not measured
Scan time
2026-10-22T18:41:05.830449Z
Browser / scanner
156.0.8078.4 / 0.4
Navigation failed — no usable scan result

Navigation or page loading failed in this browser setup. The record does not establish why it failed.

Source record and integrity
Original source
results/headless/npr-org-20261022T184105.json
Original file SHA-256
b619e6031db43c0cede3ff51288bbc752715f0a6037d9f183abe37c455f17c03

Run ID: research-b619e6031db4. The JSON contains sanitized observations, not the original private scan payload.

Queries, request bodies, cookies, extracted values, raw errors, and session payloads are excluded before publication. The source digest identifies the original private record.

Read the sanitized JSON →