Start · Sprachen · JavaScript · Referenz · Navigator.doNotTrack

Navigator.doNotTrack

Eigenschaft

Liefert die „Do Not Track“-Einstellung (DNT) des Benutzers als <code>"1"</code>, <code>"0"</code> oder <code>null</code>. Die Eigenschaft ist schreibgeschützt und veraltet.

seit JavaScript Veraltet (deprecated); nicht Baseline – Unterstütz deprecated seit ja Kategorie: webapi

Signatur

Navigator.doNotTrack

Beschreibung

Die schreibgeschützte Eigenschaft navigator.doNotTrack zeigt, ob der Benutzer im Browser die Option „Do Not Track“ eingeschaltet hat. Ist sie aktiv, schickt der Browser außerdem bei jeder Anfrage den HTTP-Header DNT: 1. Webseiten können den Wert per JavaScript auslesen und dann zum Beispiel Analyse- oder Werbeskripte gar nicht erst laden.

Mögliche Werte:

  • "1": Der Benutzer möchte nicht verfolgt werden.
  • "0": Der Benutzer erlaubt Tracking ausdrücklich.
  • null: Keine Einstellung gewählt (Standardfall) oder vom Browser nicht unterstützt.

Der W3C-Standard „Tracking Preference Expression“ wurde eingestellt. Einige Browser liefern die Eigenschaft deshalb nicht mehr oder liefern immer denselben Wert. Als Nachfolger gilt Global Privacy Control mit navigator.globalPrivacyControl und dem Header Sec-GPC. In manchen Rechtsordnungen, etwa unter dem CCPA in Kalifornien, ist dieses Signal rechtlich verbindlich. Setzen Sie DNT daher höchstens als zusätzliches Signal ein und nicht als einzige Grundlage für den Datenschutz.

Rückgabewert

Typ
string | null
Beschreibung
"1" (nicht verfolgen), "0" (Tracking erlaubt) oder null (nicht gesetzt oder nicht unterstützt). Ältere Browser liefern teils auch "yes", "no" oder "unspecified", oder undefined, wenn die Eigenschaft fehlt.

Beispiele

DNT-Einstellung auslesen

const dnt = navigator.doNotTrack;
console.log(`Do Not Track: ${dnt}`);
Do Not Track: 1

Browserübergreifende Prüfung mit Fallbacks

const isTrackingDisabled = () => {
  const value =
    navigator.doNotTrack ??
    window.doNotTrack ??          // ältere Safari-/IE-Versionen
    navigator.msDoNotTrack;       // IE 9/10
  return value === '1' || value === 'yes';
};

console.log(isTrackingDisabled());
true

Analyse-Skript nur ohne DNT/GPC-Signal laden

const respectsPrivacy = () =>
  navigator.globalPrivacyControl === true ||
  navigator.doNotTrack === '1';

const loadAnalytics = () => {
  const script = document.createElement('script');
  script.src = 'https://analytics.example.com/tracker.js';
  script.async = true;
  document.head.append(script);
};

if (respectsPrivacy()) {
  console.log('Tracking deaktiviert – Analyse wird nicht geladen.');
} else {
  loadAnalytics();
}
Tracking deaktiviert – Analyse wird nicht geladen.

// Wichtig · Fallstricke

  • Veraltet: Der DNT-Standard wurde aufgegeben. Safari hat die Unterstützung entfernt, dort ist die Eigenschaft undefined. Firefox hat die Einstellung ebenfalls zurückgebaut. Chromium unterstützt sie derzeit noch.
  • Uneinheitliche Werte: Ältere Browser liefern teils "yes"/"no" oder stellen den Wert nur als window.doNotTrack oder navigator.msDoNotTrack bereit. Prüfen Sie daher immer defensiv.
  • Nicht verbindlich: DNT ist nur eine Bitte an die Webseite. Kein Server muss sie beachten. Eine rechtssichere Einwilligung nach DSGVO ersetzt sie nicht.
  • Fingerprinting: Ein selten gesetzter Wert wie "1" kann den Benutzer ironischerweise leichter wiedererkennbar machen.
  • Serverseitige Alternative: Den Header DNT bzw. Sec-GPC kann auch der Server auswerten. So werden Tracking-Skripte gar nicht erst ausgeliefert.
  • Für neue Projekte ist navigator.globalPrivacyControl vorzuziehen, sofern verfügbar.