Tasty Custom Fonts WP Registry grade A. No security issues foundWP RegistryNo security issues foundOpen the reportA
Tasty Fonts gives designers, agencies, and WordPress professionals one place to upload, import, preview, and publish the fonts that power a site. Manage local fonts, Google Fonts, Bunny Fonts, and Adobe Fonts from a single dashboard, then push the right typography across the frontend, Gutenberg, and Etch without juggling disconnected tools.
Install
Upload it under Plugins → Add New Plugin → Upload Plugin, then activate.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/sathyvelukunashegaran/tasty-fonts/releases/download/1.16.0-beta.3/tasty-fonts-1.16.0-beta.3.zipOne Plugin to Manage Every Font on Your WordPress Site
Tasty Custom Fonts is the free WordPress font manager from Tasty WP that unifies local fonts, custom CSS URL imports, Google Fonts, Bunny Fonts, and Adobe Fonts in a single dashboard — with a draft-first publishing workflow, GDPR-friendly self-hosting, and deep integrations for Gutenberg and your favourite page builders.
Stop juggling four workflows. Stop breaking Gutenberg presets. Stop rebuilding typography from scratch on every project.
Works with EtchWP · Automatic CSS · Bricks · Oxygen — and on any standard WordPress site without them.
The Problem With WordPress Fonts Today
Every WordPress project means the same painful loop: uploading fonts in one plugin, configuring a CDN in another, fixing broken Gutenberg presets in a third, worrying about GDPR violations from remote Google Fonts calls, and rebuilding the whole system when a client changes their typeface. There is no single place to see, control, and safely publish the fonts that shape your site.
Tasty Custom Fonts fixes that — one plugin, every font source, zero build tools.
Why Tasty Custom Fonts
- Stop rebuilding your font setup from scratch. One library, one workflow, reusable across every project.
- See exactly how typography looks before it goes live. Draft roles let you compare heading, body, and monospace output against the live site before a single visitor sees a change.
- Stay GDPR-friendly with one-click self-hosting. Import Google Fonts and Bunny Fonts into your own server — no third-party CDN requests at runtime, no compliance headaches.
- Switch delivery modes without rebuilding anything. Each font family stores multiple delivery profiles. Toggle between self-hosted and CDN without touching your CSS or role assignments.
- Keep every layer of WordPress in sync. Runtime CSS, Gutenberg font presets, preloads, preconnect hints, and builder outputs all generate from the same settings surface.
Everything You Need, Nothing You Don't
Add Any Font Source
Pull in fonts from wherever your project needs them — all managed from the same dashboard.
- Upload
WOFF2,WOFF,TTF, andOTFfiles directly from the WordPress admin - Import fonts from one public HTTPS CSS stylesheet URL containing
@font-facerules (WOFF2/WOFF in Phase 1) - Import Google Fonts as self-hosted files or serve from Google CDN
- Import Bunny Fonts as self-hosted files or serve from Bunny CDN
- Connect an Adobe Fonts web project and use Adobe-hosted families alongside local and imported fonts
- Rescan
wp-content/uploads/fonts/to pick up files added outside the plugin UI
Preview & Publish Safely
Your live site stays unchanged until you say so.
- Build draft heading, body, and optional monospace roles before applying them sitewide
- Preview typography across editorial, interface, reading, card, and code scenes
- Compare draft versus live output side by side
- Publish the full typography system in one action
Control How Fonts Are Delivered
Precise runtime control — no manual CSS required.
- Store multiple delivery profiles per family and choose which is active at runtime
- Enable variable font support for axis-aware controls and flexible weight behavior per role
- Generate CSS custom properties, optional utility classes, and
@font-facerules automatically - Configure
font-display, fallback stacks, and unicode-range handling per family - Emit WOFF2 preloads for self-hosted families and preconnect hints for CDN deliveries
Sync With Your Whole Stack
Published fonts reach every layer of your WordPress site automatically.
- Register runtime families as Gutenberg font presets
- Optionally sync published families into the core Block Editor Font Library
- Push typography to Etch, Bricks, Oxygen, and Automatic.css through dedicated integrations
- Inspect generated CSS, download the runtime stylesheet, and trace changes through the activity log
- Run Advanced Tools workflows from WP-CLI for scripted diagnostics, CSS regeneration, transfer bundles, snapshots, and support exports
See It in Action
![]() Deploy Fonts — compare draft vs. live before publishing |
![]() Font Library — all families, delivery profiles, and publish states |
![]() Settings — output controls, integrations, and runtime behavior |
![]() Advanced Tools — generated CSS, diagnostics, and activity log |
Supported Font Sources
| Source | Delivery options | Self-hostable | GDPR-friendly |
|---|---|---|---|
| Local files | Self-hosted | ✅ Yes | ✅ Yes |
| Custom CSS URL | Self-hosted or remote URL | ✅ Yes | ✅ Yes (when self-hosted) |
| Google Fonts | Self-hosted or Google CDN | ✅ Yes | ✅ Yes (when self-hosted) |
| Bunny Fonts | Self-hosted or Bunny CDN | ✅ Yes | ✅ Yes (when self-hosted) |
| Adobe Fonts | Adobe-hosted | — | ❌ No (Adobe-hosted) |
Each family stores one or more delivery profiles. The active profile controls what the plugin serves at runtime — switch it any time without rebuilding your typography system.
Self-hosted provider files are stored under your uploads directory:
- Custom CSS URL imports:
wp-content/uploads/fonts/custom/<family-slug>/ - Google Fonts:
wp-content/uploads/fonts/google/<family-slug>/ - Bunny Fonts:
wp-content/uploads/fonts/bunny/<family-slug>/
How It Works — 5 Steps
- Add fonts to your library — local files, custom CSS URLs, Google Fonts, Bunny Fonts, or Adobe Fonts, all from the same screen.
- Choose a delivery profile for each family — self-hosted for full GDPR control, CDN for convenience.
- Assign draft roles for heading, body, and optional monospace output — nothing goes live yet.
- Preview the full typography system and compare it against what is currently live on the site.
- Publish sitewide — the frontend, Gutenberg, and your page builder all update in one step.
No build tools. No CDN accounts. No custom code.
Built for the Tools You Already Use
All integrations are opt-in and activate automatically when the companion tool is present. Tasty Custom Fonts works on any standard WordPress install without requiring any of them.
- Gutenberg — published families register as editor font presets and optionally sync into the core Block Editor Font Library
- Etch — runtime stylesheet URLs and bridge CSS pass through the canvas bridge so preview typography stays aligned with the live site
- Automatic.css — heading and body font-family and font-weight settings sync automatically with your managed role variables
- Bricks — published families appear in Bricks builder selectors; matching Bricks typography choices mirror into Gutenberg editor styles
- Oxygen — published families surface through the compatibility shim; matching Oxygen choices mirror into Gutenberg editor styles
No Lock-In. No Bloat.
Tasty Custom Fonts has zero runtime PHP dependencies. There is no build step for plugin use. composer install and npm install/npm ci are only used for repository dev tooling like PHPStan, Stylelint, and CI.
Output is plain CSS and standard WordPress enqueues. Nothing proprietary, nothing that breaks if you deactivate the plugin.
Developers can filter the generated CSS, modify the font catalog, and hook into delivery behavior using standard WordPress filters. The generated CSS filter is a CSS contract: callbacks should return valid CSS, and Tasty Custom Fonts preserves it as CSS rather than passing it through broad HTML sanitization.
// Modify the generated runtime CSS
add_filter( 'tasty_fonts_generated_css', function( $css, $catalog, $roles, $settings ) {
return $css;
}, 10, 4 );
The catalog filter receives the structured unified family catalog and should return the same catalog shape. Runtime output boundaries such as preload links, preconnect hints, and provider stylesheet tags use context-specific URL or attribute escaping when rendered. See wiki/Architecture.md for the current filter contract table, including which hooks are intended extension points and which are internal escape hatches.
The plugin is translation-ready and uses the tasty-fonts text domain. Translation template at languages/tasty-fonts.pot.
Requirements
| Component | Minimum |
|---|---|
| WordPress | 6.5 |
| PHP | 8.1 |
| Etch / Bricks / Oxygen / Automatic.css | Optional |
Install
Fastest Path — Download Free From GitHub Releases
- Download the latest ZIP from GitHub Releases.
- In WordPress, go to
Plugins → Add New Plugin → Upload Plugin. - Upload the ZIP and activate Tasty Custom Fonts.
- Open Tasty Fonts in the WordPress admin menu.
No npm install. No Composer. No build step.
The packaged plugin directory is tasty-fonts/. Once installed from a release ZIP, you can follow the Stable, Beta, or Nightly update channel from Settings → Behavior → Update Channel — updates deliver automatically through the WordPress admin.
Manual / Git Install
- Clone or download this repository.
- Copy the
tasty-fontsfolder intowp-content/plugins/. - Activate the plugin from the WordPress Plugins screen.
- Open Tasty Fonts in the WordPress admin menu.
Frequently Asked Questions
Do I need Etch, Bricks, or another page builder?No. Tasty Custom Fonts works on any standard WordPress site without any companion plugins. Etch, Automatic.css, Bricks, and Oxygen integrations are opt-in and only activate when those tools are already installed.
Is this plugin GDPR compliant? Can I self-host Google Fonts?Yes. Google Fonts, Bunny Fonts, and supported custom CSS URL imports can be imported into your own server storage. The plugin downloads the font files to wp-content/uploads/fonts/ and generates @font-face rules that point to your own domain — no calls to those source hosts happen at runtime when you use self-hosted mode.
Search for a Google Fonts family inside the Font Library, choose Self-hosted as the delivery mode, and import. The plugin downloads the font files to wp-content/uploads/fonts/google/<family-slug>/ and generates the runtime CSS automatically. A valid Google Fonts API key is required to browse/search and import Google Fonts from inside the dashboard, but once imported in Self-hosted mode the fonts are served from your own site with no calls to Google at runtime.
No. A Google Fonts API key is free. It is only needed if you want live Google Fonts search inside the dashboard. Local uploads, custom CSS URL imports, self-hosted imports, Bunny Fonts, and Adobe Fonts workflows do not require a key at all.
Does Tasty Custom Fonts work with Bricks Builder?Yes. The Bricks integration exposes published families in Bricks builder selectors and mirrors matching Bricks typography choices into Gutenberg editor styles. It activates automatically when Bricks is installed — no extra configuration needed.
Can I use variable fonts in WordPress with this plugin?Yes. Enable variable font support from Settings → Behavior → Enable Variable Fonts. Once active, axis-aware controls unlock per role and the plugin tracks weight behavior for variable families correctly.
The plugin supports per-site activation inside a multisite network. Network-wide activation is not supported because font assets and settings are stored and generated per site.
Where are font files stored?All generated assets and imported files live under wp-content/uploads/fonts/, with provider-specific subdirectories for custom CSS URL (/custom/), Google (/google/), Bunny (/bunny/), and local upload (/upload/) imports. The runtime CSS file is written to wp-content/uploads/fonts/.generated/tasty-fonts.css.
Yes, since 1.13.0. Go to Settings → Behavior → Admin Access, toggle Enable custom access, and select additional roles or specific users. Administrator access is always preserved. Individual user grants are site-local and are stripped when a site transfer bundle is imported on a destination site.
What's New in 1.15.0
1.15.0 is the current stable release. It ships broader import, diagnostics, library-refresh, and service-architecture improvements for power users and agencies:
- In-place Font Library refreshes after uploads, hosted imports, Custom CSS URL imports, delivery changes, publish-state changes, and Adobe project saves
- Custom CSS URL Imports for one public HTTPS
@font-facestylesheet at a time, with dry-run review, duplicate handling, self-hosted downloads, and remote delivery profiles - Advanced Tools health triage with clearer Action Needed, Worth Reviewing, Checks Passed, and runtime debug details
- Safer capability cleanup with rollback snapshots when variable-font or monospace support is disabled
- Clearer live/draft role states across role chips, library cards, delete guardrails, and delivery-profile actions
- Deeper service architecture for generated CSS, hosted imports, catalog discovery, delivery mutations, publish-state changes, capability cleanup, and admin maintenance
The current development line continues with polish for agency workflows, richer provider maintenance tools, and tighter diagnostics around advanced delivery setups.
Have a workflow you want prioritized? Open a feature request on GitHub Issues — real-world agency, client, and editorial use cases shape the roadmap directly.
Documentation
Full documentation on the GitHub Wiki:
| Guide | What's inside |
|---|---|
| Documentation Hub | Start here — overview and full navigation |
| Getting Started | Installation, first run, and initial setup |
| Deploy Fonts | Draft roles, preview, and publishing workflow |
| Font Library | Managing families, delivery profiles, and font-display |
| Custom CSS URL Imports | Phase 1 From URL workflow, limits, delivery choices, and troubleshooting |
| Settings | Output controls, integrations, and runtime behavior |
| Advanced Tools | Generated CSS, diagnostics, and activity log |
| Developer Docs | Architecture, filters, and extension points |
| FAQ | Common questions and edge cases |
| Glossary | Definitions for delivery profiles, roles, and more |
Development
There is no build step. Run composer install for PHPStan and npm ci when you want the optional CSS lint tooling used by CI.
composer install
npm ci
composer phpstan
npm run lint:css
php tests/run.php
node --test tests/js/*.test.cjs
find . -name '*.php' -not -path './output/*' -not -path './tmp/*' -not -path './vendor/*' -print0 | xargs -0 -n1 php -l
AI Usage
AI is used in this repository only to help generate test cases and documentation. Plugin code, architecture, and release behavior are authored and reviewed manually by Tasty WP.
Contributing
Contribution setup, verification commands, branch expectations, and good-first entry points live in CONTRIBUTING.md.
For larger changes, open an issue first so the direction is clear before implementation starts. Feature ideas, workflow requests, and usability feedback are welcome through GitHub Issues.
License
Tasty Custom Fonts is free and open-source software, licensed under the GNU General Public License v3 or later.
Releases
Newest 25 of 60 recorded releases. Each count is every asset in that release; expand a row for the breakdown.



