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
- A stylesheet small enough to vanish into the page
- One variable font file, until you choose a variation
- Six ways plugins quietly reverse a lean theme
- A Twenty Twenty-Five speed pass, start to finish
- Core Web Vitals, field by field
- The ceiling of a free theme on a PHP stack
- 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 the theme does | What undoes it | |
|---|---|---|
| Inline CSS | Small stylesheet printed into the page | An optimizer that bundles every stylesheet, inlined ones included, into one large render-blocking file |
| Local fonts | Fonts served from your own server | A plugin, embed or pasted snippet that still calls fonts.googleapis.com |
| Priority for the hero | Core marks the first large image fetchpriority high and skips lazy loading on it | A plugin that adds lazy loading to every image, hero included |
| No theme scripts | Nothing to download, parse or run | Sliders, popups, chat and form plugins loading on every page |
| Plain block markup | A shallow, readable page structure | A page builder installed on top, bringing its own CSS and wrappers |
| Nothing to configure | No performance panel to get wrong | An 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
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
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
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
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
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
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
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
- Default theme, phone menuTwenty Twenty-Five Mobile Menu Not Working: One Setting, Then Four SuspectsTwenty Twenty-Five mobile menu not working? Check the Navigation block's overlay setting, the menu it points to, script delays and overlay colors, in order.
- Theme reviewTwenty Twenty-Five Theme Review (2026): The Free Default, Judged Like a PurchaseTwenty Twenty-Five theme review: who maintains it, Site Editor setup, speed, SEO, WooCommerce limits, the mobile menu quirk, and who should skip it.
- The default, tested fairlyTwenty Twenty-Five vs Next.js: Plain WordPress Against a Custom BuildTwenty Twenty-Five vs Next.js across 22 rows: the free default block theme against a custom build, and the sites where the free theme wins.
- Block theme migrationTwenty Twenty-Five to Next.js: Moving a Block Theme Site, Block by BlockMove a Twenty Twenty-Five site to Next.js: block markup, Site Editor changes saved in the database, Font Library fonts, patterns, and every URL kept.
- Astra, reviewed fairlyAstra Theme Review (2026): The Builder-Neutral Theme and Its AI BundlesAstra theme review, fact-checked October 2026: the 3-site Pro cap, AI bundle renewals, Elementor fit, the 921px breakpoint and who should skip it.
- Kadence, reviewedKadence Theme Review (2026): A Block-Editor Favorite Under New ManagementKadence theme review, checked October 2026: the free performance panel, Kadence Blocks, Shop Kit, the 1024px mobile header, the new plans and who should pass.
- Everything in WordPress ThemesSee the section
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.