Yoast, a leading provider of SEO software for WordPress, has announced the release of Yoast SEO 27.8, introducing a suite of performance optimizations designed to dramatically reduce loading times across the plugin’s functionalities. These improvements are particularly impactful for large-scale WordPress websites managing extensive numbers of posts and users, addressing critical challenges related to scalability and server overhead. The update underscores Yoast’s ongoing commitment to delivering well-tuned software that enhances both user and developer experience within the WordPress ecosystem.
The release of version 27.8 is the culmination of a targeted review by Yoast’s development team, specifically focusing on features whose behavior at scale presented the most significant opportunities for optimization. Developers meticulously reworked core functionalities to be leaner and faster, implementing modifications ranging from refined database queries for improved page load speeds on sites with numerous users, to streamlining heavy administrative operations for sites rich in content. The efforts also included reducing redundant database roundtrips and embedding general performance best practices throughout the plugin’s architecture. This strategic overhaul aims to solidify Yoast SEO’s reputation for efficiency, especially as WordPress continues to power an ever-growing number of high-traffic and complex websites.
Background: The Imperative of Performance in Modern Web Environments
In today’s digital landscape, website performance is not merely a technical nicety but a fundamental requirement for success. Fast loading times are crucial for user experience, directly influencing engagement, bounce rates, and conversion metrics. From an SEO perspective, search engines like Google increasingly prioritize site speed as a ranking factor, making performance optimizations a direct contributor to organic visibility. For a plugin like Yoast SEO, which is installed on millions of WordPress websites globally, the challenge of maintaining optimal performance across a vast spectrum of server configurations and site sizes is immense. Each website presents a unique environment, from small personal blogs to sprawling enterprise platforms with millions of users and posts.
Yoast has consistently prioritized performance, recognizing its importance for its user base. Previous initiatives, such as improvements to their database system, demonstrate a continuous effort to refine the plugin’s underlying mechanics. The latest 27.8 release builds upon this foundation, demonstrating a proactive approach to identifying and resolving bottlenecks that can arise as WordPress sites grow in complexity and scale. The technical intricacies of handling large datasets, processing numerous user roles, and managing extensive content archives demand a sophisticated understanding of database interactions and server resource management, areas where Yoast’s developers have clearly focused their expertise in this update.
Key Optimizations and Their Impact
The 27.8 release addresses several critical areas, each contributing to a more responsive and efficient Yoast SEO experience:
1. Drastic Reduction in Root Sitemap Loading Times for Sites with Many Users
One of the most significant performance gains in Yoast SEO 27.8 targets the generation of the root sitemap, particularly on sites with a large user base. Historically, calculating the "Last Modified" value for the author sitemap, which is crucial for the root sitemap output, involved querying the usermeta table for all eligible users. This calculation traditionally relied on checking user capabilities, using an argument like 'capability' => ['edit_posts'] within get_users().
This approach resulted in extremely heavy database queries, characterized by multiple INNER JOIN operations and the inefficient use of LIKE '%...%' clauses against serialized PHP data in the wp_capabilities meta_value. For example, a query might include numerous OR conditions searching for specific capabilities, such as 'edit_posts', 'administrator', 'editor', etc. The use of leading wildcards (%) in LIKE statements prevents MySQL from utilizing B-tree indexes, forcing the database to perform full table scans and substring comparisons on potentially millions of rows.
The impact of this inefficiency was stark. On a test site with approximately 2 million users, the time required to complete each such query, and consequently render the root sitemap, could exceed 300 seconds. Yoast developers ingeniously refactored this logic by switching from a capability check to a more efficient method: identifying users with published posts using the 'has_published_posts' => true argument. This modification instantly transformed the query into one that effectively leverages database indexes, drastically improving performance. The same test on a 2-million-user site saw the query execution time plummet from over 300 seconds to an astonishing 25 milliseconds – a performance improvement of over 12,000 times. This change is particularly impactful as the has_published_posts argument was already utilized in a later stage of sitemap generation, ensuring no negative functional impact.
2. Streamlining Author Sitemap Generation by Eliminating Deprecated Checks
Further optimizations were implemented for author sitemap generation, which also involves calculating eligible users. Beyond the improvements mentioned above, developers discovered an additional meta query checking if each user’s user_level was greater than 0. This check, involving an INNER JOIN on the wp_usermeta table (AND ( mt1.meta_key = 'wp_user_level' AND mt1.meta_value != '0' )), was found to be a remnant of an outdated WordPress framework. The user_level system was officially deprecated by WordPress core in version 3.0, released in 2010.
While this deprecated check did not cause functionality breakage, it unnecessarily added an INNER JOIN to the query. On sites with very large user and usermeta tables, this extra join contributed to performance degradation. By identifying and removing this obsolete query, Yoast developers successfully streamlined the author sitemap generation process. Given the long-standing deprecation of the user_level framework, Yoast anticipates minimal disruption from dropping support for it, asserting that the optimization will make the feature smoother and more efficient for the vast majority of contemporary WordPress installations.
3. Preventing Unnecessary, Expensive Database Queries in Admin Pages
Yoast SEO includes a mechanism to notify administrators about pending actions required for optimal internal data indexing. Previously, this notification system triggered a heavy database query daily while administrators navigated the backend. For large sites, this query could run for several seconds, causing noticeable slowdowns in the rendering of administrative pages. The function Limited_Indexing_Action_Interface::get_limited_unindexed_count() was responsible for executing complex queries such as:

SELECT Count(P.id)
FROM wp_posts AS P
WHERE P.post_type IN ( 'post', 'page' )
AND P.post_status NOT IN ( 'auto-draft' )
AND P.id NOT IN (SELECT I.object_id
FROM wp_yoast_indexable AS I
WHERE I.object_type = 'post'
AND I.version = 2)
This query, checking for unindexed posts, could be resource-intensive. Yoast developers re-engineered the logic to ensure these heavy queries are now executed only once when the notification is initially detected. The results of Limited_Indexing_Action_Interface::get_limited_unindexed_count() are now effectively cached. Existing cache invalidation mechanisms, which were previously underutilized, now ensure the cached data remains fresh without needing daily, or even more frequent, re-executions of the expensive query. This change transforms a potentially daily (or even 15-minute, on very busy sites) database operation into a single, initial trigger, drastically improving the responsiveness of admin pages.
4. Optimizing Existing Expensive Database Queries
Beyond preventing unnecessary queries, Yoast also optimized the very structure of the remaining necessary queries. Specifically, the subquery used to identify unindexed posts was refined. The original query used AND P.ID NOT IN ( SELECT I.object_id FROM wp_yoast_indexable AS I WHERE I.object_type = 'post' ). While functional, the NOT IN (subquery) construct typically forces the database to build a complete list of object_ids from the subquery before performing the exclusion.
This was replaced with a more efficient NOT EXISTS clause: AND NOT EXISTS ( SELECT 1 FROM wp_yoast_indexable AS I WHERE I.object_id = P.ID AND I.object_type = 'post' ). The NOT EXISTS construct allows the database to "short-circuit" its operation; it stops processing as soon as a matching row is found (or not found), making it considerably faster on sites with many thousands of posts. This optimization not only complements the caching strategy but also ensures that when the query does run, it does so with maximum efficiency, speeding up the SEO optimization tool for large content archives.
5. Reducing Database Roundtrips for Enhanced Efficiency
Database roundtrips—the process of sending a query to the database and waiting for a response—are inherently expensive operations due to network latency and processing overhead. Yoast’s performance review identified instances where the plugin was retrieving data for multiple posts using sequential SELECT queries, performing one query per post. For example, a loop iterating through post_ids and calling find_by_id_and_type for each post_id was common.
This inefficient pattern was refactored. Instead of numerous individual queries, the code now utilizes a single, batched SELECT query to gather data for multiple posts at once. A code snippet like:
$indexables = [];
foreach ( $post_ids as $post_id )
$indexables[] = $this->repository->find_by_id_and_type( (int) $post_id, 'post' );
was transformed into:
$indexables = $this->repository->find_by_multiple_ids_and_type(
array_map( 'intval', $post_ids ),
'post',
);
This change means that for a chunk of 1,000 posts, instead of executing 1,000 separate SELECT queries, only a single SELECT query is performed. While care was taken to ensure that the number of posts requested in a single batch does not exceed MySQL usage limits, this optimization significantly reduces database load. As a direct result, sites with, for example, 1,000 posts could save 960 roundtrips to the database for operations like parts of their SEO optimization or the output of the schema aggregation feature, leading to tangible speed improvements.
6. Improving Post Editor Performance by Preventing Unnecessary Re-renders
Beyond server-side and database optimizations, Yoast SEO 27.8 also addresses front-end performance within the WordPress post editor. The editor’s integration with Yoast’s sidebar panels relies on React, a JavaScript library that re-renders components when their underlying data "appears to have changed." However, this change detection is based on reference equality (JavaScript’s ===), not a deep comparison of values. This meant that if a selector returned a new object literal each time (e.g., items: ['foo'] ), even if its content was identical to the previous state, React would treat it as new and trigger an unnecessary re-render of the panel. In a busy editor environment where state updates are dispatched with nearly every keystroke, this led to constant, superfluous re-renders, consuming CPU cycles and potentially creating a less responsive user interface.
Yoast developers identified and patched multiple instances where unchanged data triggered these unnecessary re-renders. By ensuring that selectors return the same object reference when the underlying values have not truly changed, the plugin’s editor integration is now far more robust and performant, providing a smoother and more efficient experience for content creators.
Statements and Implications
Leonidas Milosis, a senior developer at Yoast and the author of the original technical summary, emphasized the foundational importance of these changes. "Offering well-tuned software with minimal overhead in servers and fast loading times is always at the forefront of everything Yoast developers do," Milosis stated. "The 27.8 release is a direct outcome of our continuous commitment to optimizing performance, especially for the millions of diverse setups where Yoast SEO is installed. We deliberately picked features whose behavior at scale offered the most headroom and reworked them to be leaner and faster, from modifying queries to applying performance best practices."
The implications of Yoast SEO 27.8 are far-reaching. For large WordPress sites, these optimizations translate directly into tangible benefits:
- Faster SEO Processing: Reduced sitemap generation times mean search engines can crawl and index content more efficiently, potentially improving SEO visibility.
- Improved User Experience for Admins: A more responsive backend means site administrators and content managers can work more efficiently, without frustrating delays caused by slow-running background queries.
- Reduced Server Load: By minimizing heavy database operations and roundtrips, the plugin places less strain on server resources, potentially leading to lower hosting costs and greater stability, especially during peak traffic.
- Enhanced Developer Experience: The technical improvements highlight best practices in database interaction and front-end development, setting a higher standard for plugin performance within the WordPress ecosystem.
- Scalability: These changes significantly enhance Yoast SEO’s ability to scale with growing WordPress sites, ensuring the plugin remains a viable and high-performing solution for even the most demanding web projects.
This latest update reaffirms Yoast’s position not only as a leader in SEO functionality but also as a champion of performance excellence within the WordPress community. By tackling complex technical challenges head-on, Yoast SEO 27.8 delivers critical improvements that will benefit millions of website owners and contribute to a faster, more efficient web.







