Why Qwacky? • Download • Features • Screenshots • Security & Privacy • Manual Installation • Development • Support the Project • Acknowledgments
DuckDuckGo Email Protection is a great service, but using it requires installing the full DuckDuckGo extension, which comes with some limitations:
- Tracking protection can only be disabled per website, not globally
- Your default search engine gets changed to DuckDuckGo
- No way to use email protection as a standalone feature
Qwacky solves this by providing a lightweight, standalone alternative focused entirely on the email protection service, packed with extra features you won't find in the original extension.
- Generate and manage private @duck.com email addresses
- Copy generated addresses to clipboard with one click
- Auto-fill email fields from context menu or keyboard shortcut (
Alt+Shift+Q) - Reverse alias support to convert any email into a duck.com address for sending
- Notes and tags for each generated address with search and filtering
- My Account page to view profile, email stats, and manage forwarding address
- Multiple accounts support
- Backup and restore with selective account export
- Cross-device sync for addresses, reverse aliases, and session data
Qwacky is designed to work seamlessly on both Chrome and Firefox. The build process automatically handles browser-specific requirements:
- Chrome: Uses service workers for background scripts (Manifest V3)
- Firefox: Uses background scripts with polyfill support (Manifest V3)
Both versions maintain feature parity while adhering to each browser's best practices and security models.
A big thanks to @m.miriam12398 for contributing by making such a cool designs for the project!
- Uses minimal permissions required for functionality
- All data is stored locally on your device
- No tracking or analytics
- Manifest V3 for better security
- Open source for transparency
Storage: Required to store your generated addresses and settings locallyContext Menu Autofill: This toggle enables generating aliases from the context menu, auto-detecting email fields, It requires the following optional permissions:contextMenus: Enables the context menu for quick address generationactiveTab: Required to access and inject scripts into the current tab only when you explicitly interact with the extension (e.g., using the context menu to fill email addresses)clipboardWrite: Needed to copy the generated address to the clipboardscripting: Required for programmatically injecting the content script when using the context menu
Firefox and Chrome differ in how they manage and display extension permissions like contextMenus:
- Firefox requires
contextMenusto be listed in the manifest'spermissionsblock at install time. Unlike Chrome, Firefox does not support requestingcontextMenusas an optional permission in Manifest V3. This is because the permission directly affects browser UI elements (like the right-click menu), and Firefox enforces that such changes be explicitly declared up front. - Chrome, on the other hand, allows
contextMenusto be declared inoptional_permissionsand requested at runtime. However, even after removing permissions programmatically usingchrome.permissions.remove(), they may still appear underchrome://extensionsas "granted" - even if they're no longer active.
To maintain compatibility and avoid unexpected behavior:
- We include
contextMenusin the required permissions for Firefox. - We still use runtime permission requests for Chrome where possible, in line with its model.
This difference in behavior is a known limitation in Chrome and has been discussed by the Chromium team:
- Chromium Extensions Group – Optional Permission Removal Behavior
- Chrome Developers Documentation – Optional Permissions
- Mozilla Discourse –
contextMenusas an optional permission is not supported in Firefox
- Download the latest release from the GitHub Releases page
- Unzip the downloaded file
- Open Chrome and go to
chrome://extensions/ - Enable "Developer mode" in the top right
- Click "Load unpacked" and select the unzipped folder
- Download the Firefox version (.xpi file) from the GitHub Releases page
- Open Firefox and go to
about:addons - Click the gear icon and select "Install Add-on From File..."
- Select the downloaded .xpi file
- Node.js (v16 or higher)
- npm (v7 or higher)
# 1. Clone the repository
git clone https://github.com/Lanshuns/Qwacky.git
cd qwacky
# 2. Install dependencies
npm install# For Chrome
npm run dev
# For Firefox
npm run dev:firefox# For Chrome
npm run build
# For Firefox
npm run build:firefoxThe built extension will be available in dist_chrome/ or dist_firefox/ respectively.
Note: For development and temporary installation in Firefox, you can use
about:debuggingmethod:
- Go to
about:debugging- Click "This Firefox" in the left sidebar
- Click "Load Temporary Add-on"
- Select the
manifest.jsonfile from thedist_firefox/folder
There are a few ways you can support Qwacky's development:
- Star the repository on GitHub it helps others discover the project
- Leave a review on the Chrome Web Store or Firefox Add-ons it makes a big difference!
- Donate via cryptocurrency:
| Currency | Address |
|---|---|
| Bitcoin (BTC) | bc1qmmwwsn4cvpsx39sf53qsqcjyjzsqp90lus365w |
| Ethereum (ETH) | 0x08658772EeC32e72456048Be5D5a52bd3bcb01bc |
| Litecoin (LTC) | LKYDeJWeo3kMG1TbY4cqSi87wFeR6YUXP2 |
| USDT (TRON/TRX) | TAhdRW3nJxinWjrdYfSWB31RdjRkQKvkEq |
| USDT (BEP-20) | 0x08658772EeC32e72456048Be5D5a52bd3bcb01bc |
If you'd like to be recognized for your donation, feel free to open an issue with your name and transaction ID, and I'll add you to the supporters list!
This project is a derivative work based on DuckDuckGo's Email Protection service, which is licensed under the Apache License 2.0. The original work's copyright notice:
Copyright (c) 2010-2021 Duck Duck Go, Inc.
For the full license text, see APACHE-LICENSE.