Source: github.com/hoivikaj/GlobalClick2Dial
Turns phone numbers on any webpage into clickable links. You choose the link type in the extension settings.
Privacy: The extension reads page text only inside your browser to find US and toll-free (+1) numbers. It does not send page content or phone numbers to any external server.
Chrome Web Store (privacy blurb you can paste): This extension processes page text locally in your browser to detect US and NANP toll-free phone numbers and turn them into dial links. No page content or phone numbers are transmitted to the developer or third-party servers.
- Detects US numbers and NANP toll-free (+1) in common formats (e.g.
(201) 555-0123,800-234-5678,+1 201 555 0123). Other regions (e.g. UK, Canada +1 geographic) are not linked. - Normalizes matches to E.164 (e.g.
+12015550123) using libphonenumber-js. - Converts them to clickable links using one of:
- tel: – standard telephone links
- callto: – Callto / Skype-style
- zoomphonecall:// – Zoom Phone
- Custom prefix – e.g.
myapp://call/
- Open the extension popup and click Open settings, or right‑click the icon → Options.
- Link protocol – Choose
tel,callto,zoomphonecall, or Custom. For Custom, enter the prefix (e.g.myapp://call/). - Domain filter – Blacklist or whitelist sites where the extension runs.
Settings are stored in Chrome sync (if enabled).
Bundles are generated into the gitignored dist/ folder by esbuild. npm ci runs the build automatically via the postinstall script.
npm ci # installs deps and builds dist/phone-utils.js + dist/content.js
npm run build # rebuild after editing files in src/
npm test # vitestmanifest.json loads the extension code from dist/, so the folder must exist before Chrome can load the unpacked extension.
- Run
npm cisodist/phone-utils.jsanddist/content.jsare produced. - Open
chrome://extensions/. - Turn on Developer mode.
- Click Load unpacked and select this folder.
When you change anything under src/, re-run npm run build (or npm run dev for watch mode) and click Reload in chrome://extensions/.
| File | Purpose |
|---|---|
manifest.json |
Extension manifest (Manifest V3) |
options.html / options.js / options.css |
Settings UI |
popup.html / popup.js |
Toolbar popup (per-site toggle and settings link) |
background.js |
Service worker: badge updates, storage migration |
content.css |
Styles for generated dial links |
src/phone-utils.mjs |
Phone detection source (libphonenumber-js + US/toll-free filter) |
src/content-app.mjs |
Content script source |
src/content-helpers.mjs |
Shared URL/domain/href helpers (unit-tested) |
scripts/build.mjs |
esbuild script that produces dist/ |
dist/phone-utils.js |
Built bundle (gitignored; loaded by the extension) |
dist/content.js |
Built bundle (gitignored; loaded by the extension) |
MIT