Install: JayQuery on the Chrome Web Store
Browser extension (Chrome / Edge, Manifest V3) that inspects the active tab’s hostname, resolves TXT records over DNS-over-HTTPS (Cloudflare primary, Google fallback), evaluates SPF, DMARC, and DKIM (common selectors), and shows a score out of 10 with a per-protocol breakdown.
Conceptually aligned with JohnDuprey/DNSHealth; this project implements similar checks in TypeScript for the browser instead of PowerShell.
- SPF and DKIM default to the root (registrable) domain (
wwwand subdomains stripped via the public suffix list). Toggle Tab hostname in the popup to check the exact host (e.g.wwwor a subdomain). - DMARC is always read from
_dmarcat the tab’s organisational domain. - More DNS checks (over DoH, same general areas as DNSHealth cmdlets): MX, NS, MTA-STS TXT at
_mta-sts, TLS-RPT TXT at_smtp._tls, DNSSEC (DNSKEY +AD-style signal). These use the organisational domain, not the tab-hostname toggle. - SPF / DMARC / DKIM cards include grading breakdowns (checklist with pass / warn / fail).
- Permissions:
tabsreads each tab’s URL once a navigation finishes loading (tabs.onUpdated,complete) and refreshes the toolbar icon after a reload or when the hostname changes (same host with only path/query/#changes does not re-run). Toolbar status glyphs are drawn withOffscreenCanvas(stroke paths) directly in the extension context; no SVG decode pipeline oroffscreendocument. Storage persists settings locally. - Host access (see
wxt.config.ts): DNS-over-HTTPS only —https://cloudflare-dns.com/*andhttps://dns.google/*(primary vs fallback is user-configurable). The Entra-related probe useshttps://login.microsoftonline.com/*. There is no broadhttp(s)://*/*host pattern;tabsis what exposesTab.urlfor the toolbar and popup. The extension does not inject content scripts or fetch arbitrary page URLs.
- Node.js 24+ and npm
npm install
npm run devLoad the extension from the .output/chrome-mv3 folder WXT prints (after npm run build, use the same path).
npm run buildOutput: .output/chrome-mv3/ (unpackaged extension).
- Open
chrome://extensions - Enable Developer mode
- Load unpacked → select your clone’s
.output/chrome-mv3folder
Pin the JayQuery action, visit a site served over HTTPS, then click the icon to open the popup.
- Open
edge://extensions - Enable Developer mode (sidebar)
- Load unpacked → same
.output/chrome-mv3folder
npm test- DKIM tries a fixed list of common selectors (
google,default,selector1,selector2, …); custom selectors may be missed. - Not included (would need broader permissions or extra APIs): MTA-STS HTTPS policy fetch, HTTPS certificate checks, WHOIS.
- Resolution uses public DNS; split-horizon or unpublished records will not appear.
This project is licensed under the PolyForm Noncommercial License 1.0.0; see LICENSE.
In short: you may use, study, modify, and share the project for noncommercial purposes (including personal use and many non-profit / educational uses). Commercial use, including selling the software, offering it for a fee, or building paid products or services on top of it, is not allowed under this licence without separate permission from the copyright holder.