A privacy-focused Manifest V3 Chrome extension that finds currency amounts on webpages and converts them using daily European Central Bank rates.
- Two conversion modes:
- Hybrid: Converts prices across the page and also shows selection tooltips.
- Interactive: Leaves the page unchanged and shows conversions only when you select a price.
- Detects currency symbols, ISO codes, and currency names.
- Handles US, European, Indian, and Swiss number grouping.
- Supports negative amounts, accounting-style refunds, and compact values such as
$2.5M. - Converts prices in embedded frames and open shadow roots.
- Lets you choose defaults for ambiguous symbols such as
$,¥, andkr. - Keeps input detection and converted-value display formats separate.
- Copies converted values from the selection tooltip.
- Disables the extension on individual sites.
- Offers an option to disable extension animations.
- Uses cached ECB rates when the network is unavailable.
- Contains no analytics, tracking, ads, or remote code.
- Clone this repository.
- Open
chrome://extensions/in Chrome. - Enable Developer mode.
- Select Load unpacked and choose this project folder.
- Reload the extension from
chrome://extensions/after changing source files.
There is no build step. Chrome loads the project source directly.
Select the extension icon to open the popup.
- Extension toggle: Enable or disable the extension everywhere.
- On this site: Enable or disable conversion for the current top-level site and all its frames.
- Mode: Choose Hybrid or Interactive behavior.
- Convert to: Search for and select the target currency.
- Currency recognition: Choose what ambiguous symbols mean.
- Number formats: Configure how source prices are read and converted values are displayed.
- Disable animations: Show page replacements and selection tooltips without motion.
- Disabled sites: Review and re-enable sites from one list.
- Sync now: Refresh ECB rates manually, subject to a one-minute rate limit.
The extension scans page text in small idle-time chunks and replaces recognized prices with converted values. Hover over a replacement to see its original amount. Selecting a price also opens the detailed conversion tooltip.
Dynamic page updates, embedded frames, and open shadow roots are scanned as they appear. Editable fields, password and payment forms, scripts, styles, and extension-owned elements are excluded.
Select text containing a currency amount. A tooltip appears near the selection with the converted amount. For an ambiguous symbol, the tooltip lets you switch between the possible source currencies. You can also copy the converted value.
Exchange rates come from the European Central Bank. ECB rates use EUR as the base, so non-EUR pairs are calculated through EUR.
Rates are cached locally for offline use. User settings are stored with chrome.storage.sync and may be synchronized by Chrome when browser sync is enabled.
Run the browser-independent regression suite with:
for file in scripts/*.test.js; do node "$file"; doneCreate the Chrome Web Store archive with:
python scripts/pack_extension.pyThe output is open-source-currency-converter.zip.
Notable changes are recorded in CHANGELOG.md. Published versions and their Chrome Web Store archives are available from GitHub Releases.
This project is available under the MIT License.