Privacy Essentials
duckduckgo.com/appSimple extension by DuckDuckGo, which grades the security of each site. Download:
Chrome
Firefox
- Homepage: duckduckgo.com/app
- GitHub: github.com/duckduckgo/duckduckgo-privacy-extension
- Privacy: duckduckgo.com/privacy
- Web info: web-check.xyz/check/duckduckgo.com
Privacy Essentials Privacy Policy
Privacy Policy Summary
- No need to register
- The service makes critical changes to its terms without user involvement
- This service provides an onion site accessible over Tor
- You can delete your account and Duck Addresses
- No personal search or browsing history is saved
- Any liability on behalf of the service is only limited to the fees you paid as a user in the last 12 months or 100$
- If you offer suggestions to the service, they may use that without your approval or compensation, but they do not become the owner
- Invalidity of any portion of the Terms of Service does not entail invalidity of its remainder
- There is a date of the last update of the agreements
- The service is not responsible for linked or (clearly) quoted content from third-party content providers
- The service is provided 'as is' and to be used at your sole risk
- You agree not to use the service for illegal purposes
- The service provider makes no warranty regarding uninterrupted, timely, secure or error-free service
- The service assumes no liability for any damages the user incurs
- The service does not guarantee accuracy or reliability of the information provided
- This service does not guarantee that it or the products obtained through it meet your expectations or requirements
Score
Documents
- Privacy PolicyCreated 17 Jul 18, Last modified 1 year ago
- Commercial TermsCreated 12 Apr 24, Last modified 1 year ago
- Terms of ServiceCreated 01 May 25, Last modified 4 months ago
Domains Covered by Policy
- duckduckgo.com
- 3g2upl4pq6kufc4m.onion
- spreadprivacy.com
- duckduckhack.com
- donttrack.us
- duck.co
- duck.com
About the Data
This data is kindly provided by tosdr.org. Read full report at: #222
Privacy Essentials Source Code
Author
Description
DuckDuckGo Privacy Essentials browser extension for Firefox, Chrome.
Homepage
https://duckduckgo.com/appLicense
Apache-2.0
Created
11 Dec 17
Last Updated
18 Jul 26
Latest version
Primary Language
JavaScript
Size
124,245 KB
Stars
1,483
Forks
327
Watchers
1,483
Language Usage
Star History
Top Contributors
-
@jdorweiler (1017)
-
@dependabot[bot] (812)
-
@laurengarcia (718)
-
@MariagraziaAlastra (653)
-
@andrey-p (567)
-
@mrshu (381)
-
@kzar (281)
-
@sammacbeth (212)
-
@jonathanKingston (206)
-
@russellholt (189)
-
@dharb (86)
-
@moollaza (83)
-
@github-actions[bot] (67)
-
@GioSensation (34)
-
@daxmobile (34)
-
@shakyShane (28)
-
@kdzwinel (28)
-
@SlayterDev (23)
-
@muodov (23)
-
@Charlie-belmer (22)
-
@bsstoner (22)
-
@ladamski (18)
-
@alistairjcbrown (10)
-
@GuiltyDolphin (9)
-
@zachthompson (8)
-
@jeannamatthews (7)
-
@nshuba (6)
-
@Sayanc93 (5)
-
@AdamSC1-ddg (5)
-
@bbraithwaite (4)
-
@nilnilnil (4)
-
@tagawa (4)
-
@franfaccin (3)
-
@sixers (3)
-
@sballesteros (3)
-
@sahildua2305 (2)
-
@englehardt (2)
-
@mgurgel (1)
-
@0xnbk (1)
-
@nirajkaushal (1)
-
@heubergen (1)
-
@thisisrajat (1)
-
@imsoumya18 (1)
-
@soleo (1)
-
@ayao451 (1)
-
@saifhasan14 (1)
-
@gtfiorentino (1)
-
@frankieshakes (1)
-
@emmanuel-ferdman (1)
-
@eligrey (1)
-
@dbajpeyi (1)
-
@brindy (1)
-
@carolkng (1)
-
@Blueberryy (1)
Recent Commits
-
Dave Vandyke (16 Jul 26)
Fix a flake with the ATB integration tests (#3607) The initial exti request was sometimes firing before the request listener could be set up, which caused the ATB tests to hang. Let's add a two second timeout, to avoid failing when that happens.
-
Dave Vandyke (15 Jul 26)
Update Playwright Firefox harness dependency to 0.3.0 (#3605)
-
Dave Vandyke (14 Jul 26)
[DNR] Get the ddg2dnr unit tests running against Firefox too (#3595) So far, the Chrome build of the extension uses the MV3 APIs including the declarativeNetRequest (DNR) APIs for request blocking/redirection, but the Firefox build uses the MV2 APIs instead. Maintaining both MV2 and MV3 codepaths is expensive, so it would be nice to standardise to MV3 in the future. As a first step, let's get the DNR unit tests running against Firefox as well. That is worthwhile since the `declarativeNetRequest.testMatchOutcome` test cases are actually checking that the browser applies our DNR rules in the way that we are expecting. From there we should have more confidence to start adjusting the Firefox build.
-
Maxim Tsoy (13 Jul 26)
CPM heuristic pixel fix (#3602) * fix the heuristic summary pixel * Bump the embedded release version
-
Dave Vandyke (10 Jul 26)
[DNR] Split up the Smarter Encryption and Tracker Blocking reference tests (#3601) The Smarter Encryption and Tracker Blocking reference test assertions were running under one test group. This gave a muddied output (particular in the case of a test failure) and also meant that all the assertions shared the same two second timeout. This became a problem on Firefox, where the Tracker Blocking tests took longer than two seconds to run. Let's split out the tests now, ready for when we start running them against Firefox.
-
Dave Vandyke (10 Jul 26)
[DNR] Avoid hardcoding the resource types where possible (#3596) In the future, we would like to run the `declarativeNetRequest.testMatchOutcome` unit tests against Firefox as well as Chrome, but it turns out that the `declarativeNetRequest.ResourceType` enum differs between the browsers, which will cause the tests to fail. Instead of hardcoding the resourceTypes therefore, let's make use of `declarativeNetRequest.ResourceType` where possible. When it's not, let's fall back to a conservative subset of the resource types that both browsers support.
-
Dave Vandyke (09 Jul 26)
Update Playwright Firefox harness dependency to 0.2.0 (#3594)
-
Dax Mobile (08 Jul 26)
Update autoconsent to v16.8.1 (#3593) Co-authored-by: muodov <[email protected]>
-
Dave Vandyke (08 Jul 26)
Drop the Puppeteer dependency (#3589) We already use Playwright for the integration tests, so let's drop the Puppeteer dependency. For the cases where we were still using Puppeteer, we can switch to Playwright instead. Hopefully that should clear the way for us to start running the unit tests against Firefox in the future as well, since we already have a Firefox Playwright harness working for the integration tests.
-
Dax Mobile (08 Jul 26)
Update autoconsent to v16.8.0 (#3590) Co-authored-by: sammacbeth <[email protected]>
-
Maxim Tsoy (24 Jun 26)
Extra CPM breakage flags (#3575) * Implement additional CPM breakage flags * Reduce the number of native messages in CPM * add 2 more cpm stages * Add tests for diagnostics in embedded messaging * add unit tests * Reset the dashboard state on every top-level init * report reload loop in dashboard after popupFound * bump embedded version * type fix * fix tests * simplify serialization
-
Sam Macbeth (24 Jun 26)
Set heuristic mode config option based on user preference (#3571) * Set heuristic mode config option based on user preference * Lint fix * Update pixel parameters * Update shape of Autoconsent settings message response. Move settings messaging call inside the init response. * Add missing mock * Lint fix * Bump autoconsent * Standardize heuristic action check * Updated heuristic mode parameter * Fix settingsToHeuristicModeName docs * Fix typing narrowing of heuristicMode * Cover all heuristic off cases * Fix weak equalities * Fix comment * Remove checkAutoconsentSettingEnabled and add tests for checkAutoconsentSetting * Bump autoconsent to 16.0.0
-
Maxim Tsoy (18 Jun 26)
CPM: do not cache consentManaged flag per domain (#3570) * ts lint fixes * stop caching consentManaged flag per domain * remove unused variable * Bump embedded extension
-
Dax Mobile (15 Jun 26)
Update autoconsent to v14.95.0 (#3569) Co-authored-by: sammacbeth <[email protected]>
-
Dave Vandyke (11 Jun 26)
Update Playwright Firefox harness dependency to 0.1.1 (#3565)
-
Dave Vandyke (11 Jun 26)
Update Playwright dependency to 1.60.0 (#3564) Chrome 148 is included with the update, which broke one of our integration tests, since page-initiated requests to local networks are now blocked by default. Firefox 150 is included as well, which exacerbated an existing flake in the request blocking tests. Let's fix that here too. Let's also remove the background ServiceWorker retry fallback, as that Playwright issue has been fixed[1] upstream now. 1 - https://github.com/microsoft/playwright/issues/39075
-
Dave Vandyke (10 Jun 26)
Remove the Chrome MV2 build and test target (#3563) Now that we've got the integration tests running on Firefox, we no longer need the Chrome MV2 build target or test runner. Let's clear that all up now. While we're at it, let's tidy up: - Related checks in the tests for manifest version that no longer make sense (since Chrome test runs are always MV3 now). - Unnecessary plumbing/abstractions that turned out not to be necessary for the Firefox test runner. - Unnecessary separate GitHub workflow. - Redundant routeExtensionRequests helper.
-
Dave Vandyke (08 Jun 26)
Add experimental Firefox integration test support (#3520) Add experimental Firefox support to the integration tests, which can be called with the `npm run playwright-firefox` command. Makes use of our experimental harness[1]. Being able to run our integration tests against Firefox is important for a number of reasons: 1. A large portion of the extension users run Firefox, and so we want to ensure it works correctly for them. 2. We need Firefox test coverage to help make larger/riskier changes to the Firefox extension, like migrating to MV3. 3. We need to remove the existing `playwright-mv2` runner, which relies on Chrome MV2 support, which has now been removed. Not only does that runner not test what our users really see (e.g. it's the wrong browser), but it is also keeping us stuck on an older version of Playwright, for the corresponding Chrome MV2 compatibility. Assuming the Firefox harness works reliably, we'll remove the `playwright-mv2` runner, `chrome-mv2` build target, and update the Playwright dependency as a follow-up. 1 - https://github.com/kzar/firefox-webext-playwright-harness
-
Dax Mobile (27 May 26)
Update autoconsent to v14.85.0 (#3554) Co-authored-by: muodov <[email protected]>
-
Lucas Adamski (27 May 26)
Bump native-github-asana-sync ref to v2.4 (#3553) Task: https://app.asana.com/1/137249556945/task/1215113750466061 Co-authored-by: Cursor <[email protected]>
-
github-actions[bot] (22 May 26)
Release 2026.5.22 [ci release] (#3550) Co-authored-by: sammacbeth <[email protected]>
-
Sam Macbeth (22 May 26)
Add extension installed flag to homepage visits (#3544) * Add extensioninstalled parameter to homepage visits * Add integration tests * Fixes * Use duckduckgo about page for fingerprint HAR tests (#3545) Co-authored-by: Cursor Agent <[email protected]> * Include the extensioninstalled flag on start and noai homepages too * Share regex between both MV2 and MV3 match methods. * Update tests * Update integration-test/atb.spec.js Co-authored-by: Dave Vandyke <[email protected]> --------- Co-authored-by: Cursor Agent <[email protected]> Co-authored-by: Dave Vandyke <[email protected]>
-
Sam Macbeth (18 May 26)
No AI in Searches toggle on options page (#3439) * Implement SearchChoice component to allow alternative search subdomains to be configured. * Add 'Search page' dropdown to options page Add a new dropdown setting to the extension options page that allows users to choose their preferred DuckDuckGo search page variant: - duckduckgo.com (default) - noai.duckduckgo.com - safe.duckduckgo.com The dropdown updates the 'alternativeSearch' setting, which is consumed by the SearchChoice background component to redirect search queries to the selected subdomain. Changes: - Add alternativeSearch default setting in defaultSettings.js - Add setSetting method and alternativeSearch state to privacy options model - Add search page dropdown to privacy options template - Add change event handler for dropdown in privacy options view - Add dropdown styling (.options-dropdown, .search-page-setting) in options.scss Co-authored-by: Sam Macbeth <[email protected]> * Fix pre-existing prettier formatting in search-choice.js Co-authored-by: Sam Macbeth <[email protected]> * Refine search page dropdown to match existing conventions - Use i18n key (options:searchPageTitle) instead of hardcoded text - Position dropdown with position:absolute + right:14px to align with toggle buttons, removing the flex-based .search-page-setting class - Set select value via jQuery .val() in view setup() instead of fragile nanohtml selected=${bool} attributes in the template - Call rerender() after change for consistency with toggle handlers Co-authored-by: Sam Macbeth <[email protected]> * Move search page dropdown above the Show embedded Tweets setting Co-authored-by: Sam Macbeth <[email protected]> * Fix dropdown overlap: use float instead of absolute positioning The dropdown was absolutely positioned and taken out of the flow, causing the <li> to collapse and the dropdown to overlap the toggle below. Switch to float:right so the dropdown stays in the flow and the <li> naturally expands to contain it. Co-authored-by: Sam Macbeth <[email protected]> * Add padding below dropdown to prevent overlap with toggle The floated dropdown kept the <li> from collapsing, but there was zero gap between consecutive <li> items. The 30px dropdown and 24px toggle on adjacent rows ended up touching. Add overflow:hidden and padding-bottom:8px on the dropdown's <li> to create clear spacing. Co-authored-by: Sam Macbeth <[email protected]> * Replace search page dropdown with No AI Mode toggle Replace the three-option dropdown with a simple toggle switch that maps to the alternativeSearch setting: off='', on='noai'. This uses the same toggle pattern as every other setting on the page, removing all dropdown-specific code (CSS, _changeSetting handler, setSetting model method, .options-dropdown and .options-dropdown-li styles). Co-authored-by: Sam Macbeth <[email protected]> * Remove Show embedded Tweets toggle from options page Co-authored-by: Sam Macbeth <[email protected]> * Add integration tests for search choice redirect Tests verify that: - Search URLs are redirected to noai.duckduckgo.com when enabled - No redirect occurs when the setting is disabled - start.duckduckgo.com is also redirected - Non-search pages (e.g. /about) are not redirected Co-authored-by: Sam Macbeth <[email protected]> * Fix race condition between ATB and search-choice redirects The old implementation used webNavigation.onBeforeNavigate + tabs.update to redirect search URLs. This raced with ATB's redirect mechanisms: - MV3: ATB's DNR rule and search-choice's tabs.update are independent; the DNR redirect could commit before tabs.update, causing a double navigation with a visible flash of the wrong page. - MV2: ATB's webRequest.onBeforeRequest redirect and the onBeforeNavigate tabs.update operated at different pipeline stages, racing similarly. The fix moves the search-choice redirect into the same mechanism as ATB: - MV2: applySearchChoice() is called in before-request.js alongside ATB.addParametersMainFrameRequestUrl(), composing both hostname rewrite and ATB param in a single { redirectUrl }. - MV3: A combined DNR rule (ALTERNATIVE_SEARCH_RULE_ID) handles both the hostname transform and ATB param injection atomically. It runs at higher priority (2000001) than ATB's standalone rule (2000000) so it takes precedence when active. When disabled, ATB's rule handles params by itself. The rule is kept in sync via onSettingUpdate listeners for both 'alternativeSearch' and 'atb'. Co-authored-by: Sam Macbeth <[email protected]> * Move search redirect to be a separate DNR rule Prevents redirect of chrome_newtab navigations. * Make mv2 redirect criteria more explicit * Add description text below No AI Mode toggle Wraps the toggle in a heading + paragraph layout matching the GPC section style. Adds placeholder description text via i18n key noAiModeDesc. Co-authored-by: Sam Macbeth <[email protected]> * Settings design tweaks * Standardize heading spacing across all options page sections - Remove .options-content__gpc-enabled margin/h2 padding overrides that gave GPC 20px top padding vs the 14px default. - Remove .fire-title padding-top:0 override so Fire Button heading gets the same 14px top padding as all other sections. - All section headings now use the base .menu-title padding (14px 0) uniformly, with consistent divider spacing from .divider-bottom. - Skip start.duckduckgo.com integration test on MV3 (Playwright context routes intercept before DNR can redirect). Co-authored-by: Sam Macbeth <[email protected]> * Skip start.duckduckgo.com redirect test on all manifest versions Playwright's context.route() intercepts before both DNR (MV3) and webRequest (MV2) can redirect, not just MV3. Co-authored-by: Sam Macbeth <[email protected]> * Match design: rename to 'No AI in Searches', reorder sections - Rename toggle label from 'No AI Mode' to 'No AI in Searches' per design. - Move Unprotected Sites section above Email Protection to match design ordering: GPC > No AI > Fire Button > Unprotected Sites > Email. Co-authored-by: Sam Macbeth <[email protected]> * Add divider below Unprotected Sites section Co-authored-by: Sam Macbeth <[email protected]> * Reduce spacing between GPC bullet points and following paragraph Co-authored-by: Sam Macbeth <[email protected]> * Fix allowlist float containment blocking clicks on next section The allowlist 'Add' button and input use float-left/float-right but their parent <div> didn't contain the floats. After reordering sections, the Email Protection heading overlapped the floated elements, intercepting pointer events. Add overflow:hidden on the wrapper to establish a BFC that contains the floats. Co-authored-by: Sam Macbeth <[email protected]> * Fix double divider when Fire Button / YouTube sections are hidden Hidden sections (Fire Button on Firefox, YouTube when CTL disabled) had divider-bottom class even when hidden, and the outer wrapper also had divider-bottom. Now hidden sections get only is-hidden (no divider-bottom), and the outer wrapper has no divider class. Co-authored-by: Sam Macbeth <[email protected]> * Updated copy * Clean up the old search-choice component. * Lint fix * Review fixes * Remove test * Integration tests for alternative search redirects. * Fix ATB unit-test mock parameter de-structuring * Update settings link color * Fix section spacing * Use a single boolean setting for no-AI search, to better align with the UI. * Remove redundant requestDomains condition. * Use shared helper for AI search helper * Make setUseNoAiSearch helper more robust * Make MV2 and MV3 behavior consistent. * Lint fix * Also check ATB is correct * Fix test import * Fix helper import * Fix test eval * Fix test assertions * Ensure only the main SERP is redirected by the MV3 rule * Anchor regex filter * Update shared/js/background/atb.js Co-authored-by: Dave Vandyke <[email protected]> * AI settings translations * Fix translations missing spaces --------- Co-authored-by: Cursor Agent <[email protected]> Co-authored-by: Dave Vandyke <[email protected]>
-
Dave Vandyke (15 May 26)
Fix another flake with the click-attribution integration tests (#3542)
-
Dave Vandyke (15 May 26)
Properly anchor the getSpecialDomain() localhost checks (#3541) The `127.0.0.1` and `0.0.0.0` regexes in `getSpecialDomain()` weren't properly anchored, and so could match a hostname like `127.0.0.1.evil.example`. Let's fix that.
-
Dave Vandyke (07 May 26)
Correct the ServiceWorker initiated request blocking tests (#3530) The integration test that checks ServiceWorker initiated requests are allowed when an exception is active, was for some reason asserting that the requests should be blocked. That was causing the tests to fail when run with the WIP Firefox test runner. The test was passing on Chrome since the standard Playwright harness doesn't surface the events for those requests.
-
Dax Mobile (07 May 26)
Update autoconsent to v14.77.1 (#3532) Co-authored-by: muodov <[email protected]>
-
Sam Macbeth (07 May 26)
Update extension name in all locales. (#3529)
-
Sam Macbeth (07 May 26)
Remove deep-freeze dependency from store (#3515) Co-authored-by: Cursor Agent <[email protected]>
-
Dave Vandyke (06 May 26)
Fix flake in the request blocking integration tests (#3521) One of the assertions in the request blocking tests was flaking sometimes since it depended on the order that request events were being fired, which sometimes varies. Let's adjust that, so that it will pass more reliably.
Privacy Essentials Security
Privacy Essentials Website
Website
DuckDuckGo - Protection. Privacy. Peace of mind.
The Internet privacy company that empowers you to seamlessly take control of your personal information online, without any tradeoffs.
Redirects
Redirects to https://duckduckgo.com/"https:/html.duckduckgo.com/html"
Security Checks
All 65 security checks passed
Server Details
- IP Address 52.149.246.39
- Location Washington, Virginia, United States of America, NA
- ISP Microsoft Corporation
- ASN AS8075
Associated Countries
-
US
Safety Score
Website marked as safe
100%
Blacklist Check
duckduckgo.com was found on 0 blacklists
- AntiSocial Blacklist
- Artists Against 419
- Badbitcoin
- Bambenek Consulting
- CERT Polska
- CoinBlockerLists
- CRDF
- CryptoScamDB
- EtherAddressLookup
- EtherScamDB
- Fake Website Buster
- MetaMask EthPhishing
- NABP Not Recommended Sites
- OpenPhish
- PetScams
- PhishFeed
- PhishFort
- Phishing.Database
- PhishStats
- PhishTank
- Phishunt
- RPiList Not Serious
- Scam.Directory
- SecureReload Phishing List
- Spam404
- StopGunScams
- Suspicious Hosting IP
- ThreatFox
- ThreatLog
- TweetFeed
- URLhaus
- ViriBack C2 Tracker
Website Preview
Privacy Essentials Reviews
More Browser Extensions
-
-
-
-
-
Firefox Multi-Account Containers lets you keep parts of your online life separated into color-coded tabs that preserve your privacy. Cookies are separated by container, allowing you to use the web with multiple identities or accounts simultaneously. Download: Firefox
-
Displays a country flag depicting the location of the current website's server, which can be useful to know at a glance. Click icon for more tools such as site safety checks, whois, validation etc Download: Firefox
-
-
Linguist is a privacy‑focused translation solution in-browser that has an embedded offline translator and lets users create custom translators to use any translation API, even if it's locally deployed. Full-page translation, selected text translation, dictionary, history, and other features you may expect of a full-featured translation solution in-browser. Download: Chrome / Firefox
-
Emulates remote frameworks (e.g. jQuery, Bootstrap, Angular) and delivers them as local resource. Prevents unnecessary 3rd party requests to tracking CDNs Download: Firefox
-
Notifies you when visiting a known or potential phishing site, and detects suspicious JavaScript (including skimmers and miners). Also provides a simple rating for a given site's legitimacy and security. Great for less technical users. Netcraft also has a handy online tool: Site Report for checking what any given website is running. Download: Chrome \ Firefox \ Opera \ Edge
-
-
-
-
-
-
-
Spoofs browser's User-Agent string, making it appear that you are on a different device, browser and version to what you are actually using. This alone does very little for privacy, but combined with other tools, can allow you to keep your fingerprint changing, and feed fake info to sites tracking you. Some websites show different content, depending on your user agent. Download: Chrome - Firefox - Edge - Opera - Source
-
-
Provides user control over WebRTC privacy settings in Chromium, in order to prevent WebRTC leaks. Download: Chrome. For Firefox users, you can do this through browser settings. Test for WebRTC leaks, with browserleaks.com/webrtc
About the Data: Privacy Essentials
API
You can access Privacy Essentials's data programmatically via our API. Simply make a GET request to:
https://api.awesome-privacy.xyz/v1/services/privacy-essentials The REST API is free, no-auth and CORS-enabled. To learn more, view the API Docs or read the API Usage Guide.
Share Privacy Essentials
Help your friends compare Browser Extensions, and pick
privacy-respecting software and services.
Share Privacy Essentials and Awesome Privacy with your network!