DriversRecommendedOutdated drivers can make a good PC feel brokenScan driver issues before chasing fixes manually.Scan NowOctober DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsWindows FixRecommendedWindows errors stealing your time? Find the fix fastScan stability, cleanup and performance issues.Fix Now×
Skip to content
Font Library

How to Add Custom Fonts in WordPress (Font Library and theme.json)

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The best way to add a custom font depends on your WordPress version and who should manage typography. On WordPress installations with the Font Library, editors can upload .ttf, .otf, .woff or .woff2 files from Appearance > Fonts. Theme developers can bundle font files and register them in theme.json. A plugin is mainly useful when your installation lacks the required native workflow or needs a specialized conversion feature.

Choose the right WordPress font method

Method Best for What you need to know
Font Library Site owners and editors Current WordPress documentation says it is available for block and classic themes starting with WordPress 7.0. Fonts are managed from the dashboard.
theme.json Theme authors and developers Font files ship with the theme and are registered as typography presets and generated @font-face rules.
Custom-font plugin Sites needing a workflow core or the theme does not provide Features, conversion services and compatibility vary by plugin and must be checked against the installed WordPress version.

Check Dashboard > Updates for the installed WordPress version before looking for the Font Library menu. Older releases may not show the same interface.

Method 1: Add a font with the WordPress Font Library

The WordPress.org Font Library documentation describes this feature as a way to upload font files, install fonts from Google Fonts and manage the fonts available on a site.

Upload a font file

  1. In the WordPress dashboard, open Appearance > Fonts.
  2. Open the Upload tab.
  3. Select the font file from your computer. The documented formats are .ttf, .otf, .woff and .woff2.
  4. Complete the upload and confirm that the font appears in the Font Library.
  5. Open the typography controls provided by your active theme or block editor and select the new family for the text, heading or block style you want to change.

Upload only a font whose license permits website use and distribution. A desktop-use license does not automatically grant web-font rights.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Install a font from Google Fonts

  1. Go to Appearance > Fonts and choose Install Fonts.
  2. Choose a family and select only the weights and styles your design needs.
  3. Approve the connection step shown by WordPress, then install the selection.
  4. Apply the installed family through the available typography controls.

According to WordPress documentation, this workflow downloads the selected Google Font files and hosts them on your site instead of loading them directly from Google. That describes the documented hosting behavior; your site’s privacy, caching and legal obligations still depend on its configuration and the font license.

Apply and verify the font

Registered fonts appear in typography controls for supported blocks and styles, but themes do not expose identical controls everywhere. After selecting a family, preview the editor and open a public page in a logged-out browser. Check headings, body text, menus and any components that use separate theme styles.

Rank #2
Sale
House Industries Lettering Manual
  • Lettering Manual
  • 8½" x 11" (22 cm x 28 cm)

Method 2: Bundle a font in a theme with theme.json

Use this route when you maintain a theme and want the font to travel with it. WordPress documents theme.json for block and classic themes; its settings and styles affect the front end and built-in editors.

Prepare the files

  • Place the web-font files inside the theme, such as assets/fonts/.
  • Prefer WOFF2 where available; register every weight and style that the design actually uses.
  • Use the real family name, weight, style and stretch descriptors supplied by the font.

Add a font family

Add a family object under settings.typography.fontFamilies in the active theme’s theme.json. The required family fields are name, slug and fontFamily. A semantic slug such as primary remains useful if the underlying typeface changes later.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
{
  "version": 3,
  "settings": {
    "typography": {
      "fontFamilies": [
        {
          "name": "Example Sans",
          "slug": "primary",
          "fontFamily": "'Example Sans', sans-serif",
          "fontFace": [
            {
              "fontFamily": "Example Sans",
              "fontWeight": "400",
              "fontStyle": "normal",
              "fontStretch": "normal",
              "src": ["file:./assets/fonts/example-sans-regular.woff2"]
            },
            {
              "fontFamily": "Example Sans",
              "fontWeight": "700",
              "fontStyle": "normal",
              "fontStretch": "normal",
              "src": ["file:./assets/fonts/example-sans-bold.woff2"]
            }
          ]
        }
      ]
    }
  }
}

The file:./... source is relative to theme.json. WordPress maps each fontFace entry to an @font-face declaration and creates a CSS custom property for the typography preset. The documented fields include fontFamily, fontWeight, fontStyle, fontStretch and src; at least one source file is required.

Use the registered family

Enable the relevant typography settings and choose the preset in supported block controls, or assign the generated preset in your theme styles. A family registered in theme.json is not guaranteed to appear in every theme component or third-party block.

Understand loading behavior

WordPress’s WP_Font_Face reference documents a default font-display value of fallback for generated font-face styles. Register only the files and variants the design needs; adding every available weight increases downloads without guaranteeing a visual or performance benefit.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

When a plugin makes sense

A plugin can help when the installed WordPress version lacks the Font Library, when a theme does not expose usable typography controls, or when you need a plugin-specific upload or conversion process. For example, the WordPress.org listing for Use Any Font | Custom Font Uploader describes custom-font installation and a conversion API supporting formats such as WOFF and WOFF2.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

That listing is not evidence that the plugin is required or compatible with every site. Before installing, check its current tested WordPress version, update history, permissions, external-service terms and whether it duplicates functionality already available in core or your theme.

Troubleshoot a font that does not appear

  • No Fonts menu: confirm the WordPress version and active theme. The current documentation places the interface at Appearance > Fonts and states availability starting with WordPress 7.0.
  • Upload rejected: verify the file extension is .ttf, .otf, .woff or .woff2, and confirm that your account and the font license permit use and distribution.
  • Family missing from controls: confirm it appears in the Font Library or is registered in the active theme’s theme.json. The theme must expose typography controls for the block or component you are editing.
  • Wrong weight or italic: check that each fontFace entry’s family, weight, style, stretch and source path match the actual file. A mismatch can cause browser fallback.
  • Editor looks right but the site does not: inspect the public page, clear site and browser caches, and verify that the active theme and deployed theme files are the same ones you edited.
  • Plugin workflow fails: review the plugin’s current directory listing for compatibility with your WordPress version and required conversion or upload service.

Practical decision guide

  1. Use the Font Library when an editor needs to manage fonts from the dashboard and the installation meets the documented WordPress-version requirement.
  2. Use theme.json when the typeface is part of a theme package, must be reproducible across installations, or needs developer-controlled weights and styles.
  3. Use a plugin only when its specific capability solves a limitation that the native routes and active theme do not.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Read next

Recommended PC Tool
Recommended PC Tool
Outdated Drivers Are Slowing You DownFree scan - exact matches
PC Slower Than It Used to Be?Free scan - under a minute

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.