The default, defended

Twenty Twenty-Five Speed: What the Default Theme Gets Right, and How Plugins Undo It

Twenty Twenty-Five does most of the speed work before you log in. Its stylesheet is small enough for WordPress to print inline, its fonts never leave your server, and it adds no scripts. The threat to its speed is not the theme. It is the third plugin you install to make it faster.

October 12, 2026 · 8 min read

The short answer

Twenty Twenty-Five is one of the lightest WordPress themes: styles come from theme.json, a small style.min.css can be inlined, and Manrope is bundled as one local variable font. Keep it fast by sizing hero images, avoiding plugins that lazy-load everything or call Google Fonts, and choosing one caching layer instead of stacking optimizers.

On this page
  1. A stylesheet small enough to vanish into the page
  2. One variable font file, until you choose a variation
  3. Six ways plugins quietly reverse a lean theme
  4. A Twenty Twenty-Five speed pass, start to finish
  5. Core Web Vitals, field by field
  6. The ceiling of a free theme on a PHP stack
  7. When speed is the reason to move off the default

A stylesheet small enough to vanish into the page

The theme's functions.php enqueues one file, style.min.css (the unminified style.css only when SCRIPT_DEBUG is on), and then does something most commercial themes skip: it calls wp_style_add_data() to give WordPress the file's path on disk. That single line makes the stylesheet eligible for inlining. Instead of sending the browser off for another file before it can paint, WordPress can print the rules straight into the HTML.

The rule behind it is worth knowing, because the allowance is shared. WordPress gathers every enqueued stylesheet that has a path, smallest first, and inlines them until a shared budget runs out. The styles_inline_size_limit filter sets that budget, which WordPress 6.9 raised from 20,000 to 40,000 bytes. The rest of the design comes from theme.json, which WordPress turns into CSS itself, and from core's block styles. The theme registers a checkmark style for the List block with a few inline rules and enqueues no JavaScript of its own.

The WordPress project makes no speed promises for Twenty Twenty-Five, so there is no vendor claim to repeat. What there is, is a sound design: little to download, nothing render-blocking that does not need to be, and nothing to configure. The Twenty Twenty-Five review covers what it is like to build with.

One variable font file, until you choose a variation

In the default style, body text and headings both use Manrope, bundled as a single variable .woff2 file that covers weights 200 to 800. Fira Code, also bundled, only appears in Code blocks. One file for every weight is about as cheap as custom typography gets. The nine style variations (Default, Morning, Noon, Afternoon, Evening, Dusk, Twilight, Sunrise and Midnight) swap in other bundled families: Beiruti, Fira Sans, Literata, Platypi, Roboto Slab, Vollkorn and Ysabeau Office. Since font pairs can also be applied on their own, check which files your chosen look actually loads.

The theme.json font declarations do not set a font-display value, so WordPress applies its default, fallback. That gives the font a very short window to arrive before the browser shows text in a fallback typeface, then a limited period in which it may still swap in. Text appears promptly on slow phones, which is good for Largest Contentful Paint. The price is that a visitor on a poor connection may see the fallback font for the whole visit.

The Font Library is generous, so be stingy

Since WordPress 6.5 an editor can install fonts from the Site Editor's Font Library, including a Google Fonts collection that downloads the files to your server rather than linking to Google. That is the right way to add a typeface. Each family that pages actually use still costs a download, and display fonts with several static weights cost several. If a font refuses to show after a change, see Twenty Twenty-Five fonts not loading.

Six ways plugins quietly reverse a lean theme

Each plugin below is installed for a sensible reason. Each one cancels something the theme was already doing for you. We see these on default-theme sites far more often than any problem with the theme itself.

What Twenty Twenty-Five does well, and the plugin habits that undo it
What the theme doesWhat undoes it
Inline CSSSmall stylesheet printed into the pageAn optimizer that bundles every stylesheet, inlined ones included, into one large render-blocking file
Local fontsFonts served from your own serverA plugin, embed or pasted snippet that still calls fonts.googleapis.com
Priority for the heroCore marks the first large image fetchpriority high and skips lazy loading on itA plugin that adds lazy loading to every image, hero included
No theme scriptsNothing to download, parse or runSliders, popups, chat and form plugins loading on every page
Plain block markupA shallow, readable page structureA page builder installed on top, bringing its own CSS and wrappers
Nothing to configureNo performance panel to get wrongAn optimizer that defers or delays scripts the Navigation overlay needs

The page builder row deserves one more sentence. Adding a drag-and-drop builder to a block theme gives you two layout systems and the weight of both. If the Site Editor feels too fiddly, a different theme is usually a better answer than a builder on top of this one. The mechanism behind all six rows is in why WordPress sites get slow, and if an update made things worse, WordPress slow after a theme update helps you find which piece moved.

A Twenty Twenty-Five speed pass, start to finish

  1. 1

    Test real pages on a phone profile

    Run the homepage, a post with images and a landing page built from one of the theme's full-page patterns through PageSpeed Insights. Note each page's LCP element. Our speed test guide covers doing this consistently.

  2. 2

    List every file that is not WordPress's

    In the browser's network panel, filter for /plugins/ and for other domains. Everything there was added after the theme. Decide which ones earn their place on this page.

  3. 3

    Size the images the patterns invite

    Landing and Shop homepage patterns leave room for large photos. Upload them near twice their displayed width and compressed, not straight from the camera.

  4. 4

    Keep one lazy-loading system: core's

    WordPress already lazy-loads images below the fold and prioritizes the first large one. Turn off lazy loading in any optimization plugin that duplicates it.

  5. 5

    Hunt down remote font calls

    Search the page source for fonts.googleapis.com. If anything still calls it, replace that font with one installed through the Font Library or drop it.

  6. 6

    Add one caching layer, then stop

    Host-level page caching or a single caching plugin covers the server side. Skip CSS combining and script delay features unless a test shows they help, and retest the mobile menu after any change.

  7. 7

    Recheck after WordPress releases

    The theme leans on core blocks and core styling, so WordPress updates change its output more than theme updates do. Repeat the first step after each major release.

If changes to styles stop appearing on the live site during this work, Twenty Twenty-Five CSS not updating explains the usual cache and Site Editor reasons. For a done-for-you version, our theme speed optimization service works through the same list on staging.

Core Web Vitals, field by field

LCP: usually a photo you chose

With so little theme code in the way, Largest Contentful Paint on a Twenty Twenty-Five page is almost always an image you uploaded or a heading in Manrope. Core's automatic priority handles the image well if nothing interferes. Keep the hero as an Image or Cover block with a real image rather than a fixed background, which turns the photo into CSS the browser finds late. The full mechanism is in WordPress vs Next.js on LCP.

CLS: embeds and banners, rarely the theme

The fallback font behavior means late font swaps are limited, and block images carry their dimensions. Shifts on these sites tend to come from video and social embeds without a reserved size, and from cookie or promo banners pushed in above the content. Our guide to layout shift on WordPress themes and the CLS comparison show how to find the moving piece.

INP: the overlay menu and everyone else's scripts

The header uses the core Navigation block, whose Overlay Menu setting (Off, Mobile or Always) decides whether phones get a hamburger. With a handful of links, setting it to Off removes a tap from every mobile visit, as explained in Twenty Twenty-Five mobile menu not working. Slow taps on these sites usually trace to chat, analytics or consent scripts. See WordPress vs Next.js on INP.

The ceiling of a free theme on a PHP stack

  • Server response time. Every uncached request is built by PHP from the database. No theme setting changes that; caching and hosting do.
  • Core's own CSS. Global styles and block styles are WordPress's output, and they grow with every custom color, size and block style you add in the Site Editor.
  • Shop pages. The theme has no WooCommerce templates, so a store relies on WooCommerce's own block templates and their weight. Cart and checkout cannot be page cached.
  • Slow-moving updates. Version 1.5 arrived in May 2026 and the readme says tested up to WordPress 7.0, while WordPress is at 7.1.3. Fixes land on the project's schedule.
  • Live editing. Anyone with admin access can add a video background to the homepage, and nothing checks the speed cost before visitors see it.
The theme sends almost nothing. Everything slow on the page was invited by someone.

When speed is the reason to move off the default

For a blog, a portfolio or a small business site, a tuned Twenty Twenty-Five site is quick enough, and moving for speed alone would be spending money to fix a problem you do not have. The case changes when the site's income depends on speed at scale: paid traffic landing on many pages, a store where every product page should open instantly on a phone, or programmatic pages by city or service that need to be fast and consistent.

A Next.js build removes the PHP step by prerendering pages to a CDN, self-hosts fonts with next/font and serves resized modern images through next/image, and nobody can add a heavy embed without a code review. It costs more to build and needs a developer for layout changes. Weigh it fairly in Twenty Twenty-Five vs Next.js, then read moving a Twenty Twenty-Five site to Next.js, which is among the easier migrations because block content is clean HTML. The WordPress themes hub has every other theme we cover, and our lightweight themes list shows this one's company.

Questions people ask before they call

The theme's front end is light, but WordPress still builds each uncached page with PHP and database queries, so some form of page caching helps nearly every site. Host-level caching is often enough. Avoid stacking a caching plugin with a separate optimizer that also lazy-loads images or rewrites CSS.

No. Its fonts, Manrope and Fira Code in the default style and several more in the style variations, are bundled as local .woff2 files declared in theme.json. Fonts installed through the Font Library are downloaded to your server too. A request to Google's font servers on your site comes from a plugin, an embed or custom code.

Add caching, then test before adding anything else. Many optimizer features duplicate what core and the theme already do, such as lazy loading and small-CSS inlining, and a few undo them. Change one setting at a time and retest the homepage and mobile menu after each.

Both are near the floor for WordPress themes. Twenty Twenty-Five has a small stylesheet that WordPress can inline and one variable font by default; Twenty Twenty-Four has no theme stylesheet but loads a variable body font and three heading font files. Your images and plugins will matter more. See the Twenty Twenty-Four speed guide.

Keep reading

Free · No obligation

See what your plugins are costing the theme

Send us your Twenty Twenty-Five site. We will show which plugins and images carry the weight and what to remove, keep or replace.

Which of these sounds like you? (pick any)

Rather talk now? Call (210) 346-0848.

CallGet a quote