Website evidence · pilot dataset
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.
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 websitesVisitor setup
Draw + readback
5 of 5 signal families 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.
Observed requires a text-drawing API and a canvas readback API. Guide ↗
canvas.getContext1 callshttps://www.npr.org/line 121 · col 1098
canvas.getContext1 callshttps://www.npr.org/line 121 · col 1098
canvas.getContext4 callsFrame: https://www.npr.org/
- Inline caller recorded
https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
canvas.toDataURL1 callsFrame: https://www.npr.org/
https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
canvas2d.fillText2 callsFrame: https://www.npr.org/
https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
canvas2d.measureText11 callsFrame: https://www.npr.org/
https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
WebGLQueries the graphics environment.
Observed requires at least three distinct WebGL probing APIs. Guide ↗
webgl2renderingcontext.getExtension4 callsFrame: https://www.npr.org/
https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
webgl2renderingcontext.getParameter22 callsFrame: https://www.npr.org/
https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
webglrenderingcontext.getExtension1 callsFrame: https://www.npr.org/
https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
webglrenderingcontext.getParameter2 callsFrame: https://www.npr.org/
https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
AudioRenders or reads audio samples.
Observed requires offline rendering, buffer reads, or analyser reads. Guide ↗
analyser.getFloatFrequencyData1 callsFrame: https://www.npr.org/
https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
analyser.getFloatTimeDomainData1 callsFrame: https://www.npr.org/
https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
audio.createAnalyser2 callsFrame: https://www.npr.org/
https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
audio.createDynamicsCompressor1 callsFrame: https://www.npr.org/
https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
audio.createOscillator2 callsFrame: https://www.npr.org/
https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
audiobuffer.getChannelData1 callsFrame: https://www.npr.org/
https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
offlineaudio.startRendering1 callsFrame: https://www.npr.org/
https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
FontsMeasures text repeatedly.
Observed requires at least ten text-measurement calls. Guide ↗
canvas2d.measureText11 callsFrame: https://www.npr.org/
https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
DeviceReads browser and display properties.
Observed requires at least three distinct browser, screen, or window properties. Guide ↗
navigator.deviceMemory2 callsFrame: https://www.npr.org/
https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
navigator.hardwareConcurrency2 callsFrame: https://www.npr.org/
https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
navigator.language1 callsFrame: https://www.npr.org/
https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
navigator.languages4 callsFrame: https://www.npr.org/
https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
navigator.maxTouchPoints2 callsFrame: https://www.npr.org/
https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
navigator.platform4 callsFrame: https://www.npr.org/
https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
navigator.plugins19 callsFrame: https://www.npr.org/
https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
navigator.userAgent7 callsFrame: https://www.npr.org/
https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
navigator.webdriver3 callsFrame: https://www.npr.org/
https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
screen.colorDepth2 callsFrame: https://www.npr.org/
https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
screen.height2 callsFrame: https://www.npr.org/
https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
screen.pixelDepth2 callsFrame: https://www.npr.org/
https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
screen.width2 callsFrame: https://www.npr.org/
https://www.npr.org/4RVtb6dD7m/1aANIU/BC9u/N0Yt2XOY5zuG/JWEqIzcUNQ/LF4XAi/Q4KigW
window.devicePixelRatio3 callsFrame: 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.orgcdn.piano.iocpftuhdzdstc5rz8x.ay.deliveryjs.stripe.comnpr.brightspotcdn.coms.go-mpulse.netwww.googletagmanager.com
Other recorded API calls 2
document.cookie.read7 callsdocument.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)
Visitor setup
Navigation failed
Navigation failed
- 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 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.
Visitor setup
Navigation failed
Navigation failed
- 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 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.
Visitor setup
Navigation failed
Navigation failed
- 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 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.
Visitor setup
Scanner error
Scanner error
- Measurement
- Scanner error
- Page context
- Page not measured
- Scan time
- 2026-10-22T22:10:46.525494Z
- Browser / scanner
- 156.0.8078.4 / 0.4
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.
Research setup
Signals observed
1 of 5 signal families 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.
Observed requires a text-drawing API and a canvas readback API. Guide ↗
canvas.getContext1 callshttps://www.npr.org/line 121 · col 1098
canvas.getContext1 callsFrame: https://www.npr.org/
- Inline caller recorded
WebGLQueries the graphics environment.
Observed requires at least three distinct WebGL probing APIs. Guide ↗
No matching API call was captured.
AudioRenders or reads audio samples.
Observed requires offline rendering, buffer reads, or analyser reads. Guide ↗
No matching API call was captured.
FontsMeasures text repeatedly.
Observed requires at least ten text-measurement calls. Guide ↗
No matching API call was captured.
DeviceReads browser and display properties.
Observed requires at least three distinct browser, screen, or window properties. Guide ↗
navigator.getBattery1 callsFrame: https://www.npr.org/
https://s.go-mpulse.net/boomerang/[redacted-id]line 10 · col 166254
navigator.platform1 callsFrame: https://www.npr.org/
https://cdn.piano.io/api/tinypass.min.jsline 1 · col 461641
navigator.userAgent1 callshttps://s.go-mpulse.net/boomerang/[redacted-id]line 10 · col 123065
navigator.userAgent3 callsFrame: 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.comc.go-mpulse.netcdn.cookielaw.orgcdn.piano.iocpftuhdzdstc5rz8x.ay.deliveryjs.stripe.comnpr.brightspotcdn.coms.go-mpulse.netsecurepubads.g.doubleclick.netwww.googletagmanager.com
Other recorded API calls 2
document.cookie.read45 callsdocument.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)
Research setup
Navigation failed
Navigation failed
- 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 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.
Research setup
Navigation failed
Navigation failed
- 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 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 →