2 items
Use your own fonts on any website, including ones that block other font extensions. Import from a file, a URL, or your system. Typeswap replaces the fonts a website renders with fonts you choose. One font everywhere, or a different font for every site — set once, and every page you open afterwards is in the type you picked. It also works on the sites where other font extensions quietly fail. ──────────────────────────────── GETTING FONTS IN ──────────────────────────────── • Drop in a font file — TTF, OTF, WOFF, or WOFF2. • Drop in a .zip and Typeswap unpacks the whole family, working out weights and styles from the font's own metadata rather than guessing from filenames. • Paste a URL to a font file, a .zip, or a stylesheet. Point it at a Google Fonts CSS link and it reads the @font-face rules and downloads the faces those rules refer to. • Or use a font already installed on your computer, with no import at all. Imported fonts live in your browser's own storage. They are not uploaded anywhere, and they stay available offline. ──────────────────────────────── RULES: WHERE EACH FONT APPLIES ──────────────────────────────── Every rule has a scope: • All sites • All sites except — a list of domains you name • Only these sites — a list of domains you name There is an "Add current site" shortcut for the page you are looking at, so most rules take one click. Rules can be switched off individually without deleting them, and when two rules could apply to the same page, the more specific one wins. ──────────────────────────────── SMART COVERAGE ──────────────────────────────── Repainting every element on a page with one font breaks things. Two categories break loudly, so Smart mode — the default — leaves them alone: • Icon fonts. Font Awesome, Material Icons and Symbols, SVG contents, and elements marked as icons are skipped. Without this, a site's icons turn into a row of empty boxes, because you replaced the font whose private glyph slots those icons live in. • Code. <code>, <pre>, <kbd> and <samp> keep the site's monospace stack, so indentation and column alignment survive. If you actually want everything repainted, Everything mode does exactly that. The fallback stack behind your chosen font keeps emoji and CJK text rendering correctly, so picking a Latin-only font does not leave you with boxes where Chinese, Japanese, Korean, or emoji used to be. ──────────────────────────────── VARIABLE FONTS ──────────────────────────────── A variable font is advertised to the browser with its full range, not just its default instance — so a family with a 100–900 weight axis actually renders across that range instead of collapsing to one weight. Per rule, you can set: • Weight (wght) • Width (wdth) • Slant (slnt) and Italic (ital) • Optical size (opsz) • Grade (GRAD) with a one-click reset back to the font's defaults. Old Apple GX fonts that use a non-CSS axis scale are detected and handled rather than rendered wrongly. In a document editor the font is the document. Change it and you change where lines break, how many pages there are, and how the file looks to everyone else who opens it — while your own screen looks fine. That is a bad surprise to hand someone. So Typeswap recognises collaborative document editors, office suites, note and wiki tools, and design and typesetting apps, and skips them by default — even under an "all sites" rule. The built-in list covers the major English and Chinese-language tools in those categories, and you can add your own internal wikis and editors to it. If you do want your font in one of them, an explicit "use a font here anyway" override is one click away. The protection is a sensible default, not a wall. ──────────────────────────────── WHY IT WORKS WHERE OTHER FONT EXTENSIONS DO NOT ──────────────────────────────── Many sites ship a Content-Security-Policy that forbids loading fonts from anywhere the site did not authorise. An extension that injects an ordinary @font-face rule pointing at a file or a data: URI is blocked outright on those sites — the font request never completes, and the page silently stays in its original type. Typeswap does not make a font request at all. It hands the font to the page as raw bytes through the browser's CSS Font Loading API. There is no network request, so there is no policy for the browser to enforce against, and the font applies normally. The stylesheet it injects is also built to outrank the site's own styling, so pages that mark their fonts as !important do not win by default. ──────────────────────────────── PRIVACY ──────────────────────────────── • No account, no sign-in. • No analytics, no telemetry, no crash reporting, no ads. • No server operated by the developer — there is nothing to send anything to. • Your fonts and rules stay in your browser and are deleted when you uninstall. • The only network request Typeswap ever makes is the one you ask for by pasting a font URL, and it goes only to the address you entered. Typeswap does not read the text of the pages you visit, your form input, your passwords, or your cookies. It reads element structure in order to style the page, and page addresses in order to work out which of your rules applies — both on your own device, neither logged nor transmitted. ──────────────────────────────── OPEN SOURCE ──────────────────────────────── Typeswap is MIT licensed. The code that runs in your browser is the code you can read. Built by Calyndrae — https://calyndrae.com Questions, bugs, or font-parsing oddities: calyndrae@gmail.com
Aug 3, 2026
rating_count is the Chrome Web Store ratings count, not a written-review count.
Media assets
Screenshots and videos on the listing.
Has promo video
Whether the listing includes at least one video.
Languages
Declared language locales.
Developer website
Listing exposes a developer website URL.
Contact email
Listing exposes a contact email.
Keyword in name
Case-insensitive substring match in the name.
Keyword in description
Case-insensitive substring match in the description.
Keyword occurrences in description
Count of case-insensitive occurrences in the description.
Category user-count percentile
Share of same-category extensions with fewer users (null if unknown).
These are transparent listing completeness / keyword signals, not a prediction of Chrome Web Store search ranking.