W3C

DNT Implementation report

This report shows compliance to the TPE for various client and server implementations.

Implementation information is documented in the relevant Github issue, Pull Request (PR), or documentation for developers.

User agent implementations

Clients

API Test Bouncer Dt. Telekom Edge Internet Explorer Chrome Firefox Safari Notes
Generates DNT header Y Y Y Y Y Y Y
navigator.doNotTrack Y Y N N Y Y Y Edge supports window.doNotTrack
Consent API v1 exists Y Y Y Y N N N
Consent API v2 exists Y Y N N N N N
Parses TSR, shows Tk headers Y Y N N N N N Indicates level of DNT support by resources & subresources
DNT header "0" after Web-Wide store Y Y Y Y N N N Edge & IE using API v1. Edge not working for XHR subresources
navigator.doNotTrack "0" after Web-Wide store Y Y N N N N N Edge window.doNotTrack works>
trackingExceptionExists true after Web-Wide store Y Y Y Y N N N Edge & IE via v1 confirm*TrackingException after refresh
DNT header "1" after Web-Wide remove Y Y Y Y N N N
trackingExceptionExists false after Web-Wide remove Y Y Y Y N N N Edge & IE via v1 confirm*TrackingException after refresh
DNT header "0" to subresource after Site-Specific store Y Y N Y N N N Edge not working for XHR to subresources
navigator.doNotTrack "0" to subresource after Site-Specific store Y Y N N N N N
trackingExceptionExists true for subresource after Site-Specific store Y Y N Y N N N
DNT header "1" to subresource after Site-Specific remove Y Y N Y N N N
trackingExceptionExists false to subresource after Site-Specific remove Y Y N Y N N N
DNT header "1" to subresource before Site-Specific store Y Y Y Y N N N
DNT header "0" to subresource just after Site-Specific store with maxAge specified Y Y N Y N N N
DNT header "1" to subresource after maxAge duration Y Y N N N N N

Uncertain implementations

Microsoft Edge and Internet Explorer

navigator.doNotTrack not supported but value is available as window.doNotTrack on Edge
This works for all tests where a valid DNT header is sent, but on window rather than navigator on Edge
maxAge consent expiry not supported
storeSiteSpecificTrackingException and storeWebWideTrackingException only work after a page refresh
On Edge storeSiteSpecificTrackingException does not work for XHRs to subresources, though this works for IE

Server implementations

https://axe.com/de, https://becel.si/, https://rexona.com/de, https://cartedor.co.uk/ & several thousand EU consumer brand sites that use the CookieQ ePrivacy tool

https://axe.com/de
TPE feature Supports? Notes
Signals consent using Site Specific API Y All subresources sent DNT:0 if consent obtained & API supported
Indicates Consent duration using maxAge property Y
Signals consent using Web Wide API Not applicable
Supports TSR at .well-known/dnt N
Supports TSR at other location Y location indicated by proprietary header delivered by meta http-equiv
removes or does not place cookies if DNT is "1" Y deletes first-party cookies unless user informed they are "strictly necessary"
blocks non-DNT respecting subresources if DNT is "1" Y blocks domains via CSP header
Uses Tk header to signal consent N but Tk: C header is delivered by meta http-equiv in content

https://medium.com/

https://medium.com
TPE feature Supports? Notes
Signals consent using Site Specific API N
Indicates Consent duration using maxAge property N
Signals consent using Web Wide API Not applicable
Supports TSR at .well-known/dnt Y
Supports TSR at other location Not applicable
removes or does not place cookies if DNT is "1" Y does not place first-party cookies if DNT is "1" and user logged out, other than Google Analytics
blocks non-DNT respecting subresources if DNT is "1" N
Uses Tk header to signal consent Y Tk: C response header if logged in, otherwise Tk: T

https://www.natuurlijkehaarkleuring.nl/ No-tracking example with Lambda@Edge implementation of HTTP response header

https://www.natuurlijkehaarkleuring.nl
TPE feature Supports? Notes
Signals consent using Site Specific API Not applicable
Indicates Consent duration using maxAge property Not applicable
Signals consent using Web Wide API Not applicable
Supports TSR at .well-known/dnt Y https://www.natuurlijkehaarkleuring.nl/.well-known/dnt
Supports TSR at other location Not applicable
removes or does not place cookies if DNT is "1" Y No placement of first-party tracking cookies; 3rd party cookies are functional non-tracking cookies under a data processing agreement
blocks non-DNT respecting subresources if DNT is "1" Not applicable
Uses Tk header to signal no tracking Y Server implementation with Lambda@Edge HTTP response header

https://baycloud.com/

https://baycloud.com
TPE feature Supports? Notes
Signals consent using Site Specific API Y Specific subresources sent DNT:0 if consent obtained & API supported
Indicates Consent duration using maxAge property Y
Signals consent using Web Wide API Not applicable
Supports TSR at .well-known/dnt Y https://baycloud.com/.well-known/dnt
Supports TSR at other location Not applicable
removes or does not place cookies if DNT is "1" Y deletes first-party cookies unless user informed they are "strictly necessary"
blocks non-DNT respecting subresources if DNT is "1" Y blocks domains via CSP header
Uses Tk header to signal consent Y Tk: C response header if consent given, otherwise Tk: N

https://paulbernal.mydnt.org/

https://paulbernal.mydnt.org
TPE feature Supports? Notes
Signals consent using Site Specific API Y Specific subresources sent DNT:0 if consent obtained & API supported
Indicates Consent duration using maxAge property Y
Signals consent using Web Wide API Not applicable
Supports TSR at .well-known/dnt Y https://paulbernal.mydnt.org/.well-known/dnt
Supports TSR at other location Not applicable
removes or does not place cookies if DNT is "1" Y deletes first-party cookies unless user informed they are "strictly necessary"
blocks non-DNT respecting subresources if DNT is "1" Y blocks domains via CSP header
Uses Tk header to signal consent Y Tk: C response header if consent given, otherwise Tk: N