WordPress Ecosystem

Comprehensive Guide to Decluttering Your WordPress Admin: Removing Yoast SEO Upsells for a Streamlined Experience

Published on May 24, 2026

Yoast SEO, a cornerstone in the WordPress ecosystem, continues to be one of the most widely adopted plugins, boasting millions of active installations. Its free version provides a robust suite of tools for content optimization, sitemap management, and enhancing search engine visibility. However, its pervasive "freemium" business model introduces numerous upsell prompts, premium upgrade banners, extra administrative menu pages, dashboard widgets, and sidebar advertisements, all designed to steer users towards its paid counterpart. For WordPress developers managing multiple client sites, agencies prioritizing a pristine administrative interface, or individual site owners simply seeking an uncluttered experience, this constant promotional noise can be a significant distraction and an impediment to efficiency.

The Genesis of Freemium Clutter: Balancing Development and User Experience

The evolution of the WordPress plugin landscape has seen a significant rise in the "freemium" model, where developers offer a feature-rich free version while reserving advanced functionalities for a paid premium tier. Yoast SEO exemplifies this model, leveraging its dominant market position to encourage upgrades. While this strategy is crucial for sustaining ongoing development, support, and innovation for a plugin of Yoast’s scale, it inevitably creates a tension with users who prefer a minimalist and focused administrative environment. The article published on May 24, 2026, highlights the growing demand within the WordPress community for practical solutions to mitigate this commercial overlay without sacrificing the fundamental SEO benefits offered by the free plugin.

Before delving into the technical remedies, it’s pertinent to acknowledge that the most straightforward way to eliminate all upsells is by acquiring Yoast SEO Premium. This option not only removes all promotional elements but also unlocks a wealth of advanced features, including AI-generated titles and descriptions, a comprehensive redirect manager, and the ability to optimize for multiple focus keywords. This is often the recommended path for users whose budget allows and whose needs extend to these premium functionalities. However, a substantial segment of the user base either does not require these advanced features or is not prepared to invest in them, making a clean, free-version experience a priority.

How to Remove Yoast SEO Premium Ads & Upsells

The Impact of Unnecessary Administrative Elements

The presence of constant upsells extends beyond mere visual annoyance. It contributes to increased cognitive load for site administrators, potentially slowing down workflows, especially for those managing numerous sites or training clients. Furthermore, certain elements, such as the Yoast SEO dashboard widget, introduce minor performance overhead by making uncached HTTP requests to external servers on every dashboard load. This widget, for instance, transmits basic server environment information (WordPress and PHP versions) as query string parameters, which, while generally benign, represents an unnecessary disclosure for privacy-conscious users or those seeking to minimize their digital footprint. Addressing these issues systematically can lead to a more efficient, secure, and user-friendly WordPress backend.

A Systematic Approach to Decluttering: The PHP Class Method

To address the proliferation of upsells comprehensively, a structured PHP-based solution is proposed. This approach involves encapsulating all removal logic within a single PHP class, ensuring organization, maintainability, and preventing potential conflicts. The core principle involves leveraging WordPress’s action and filter hooks, alongside targeted CSS, to programmatically hide or remove these promotional elements.

The foundation of this solution is an empty PHP class, designed to be integrated into a child theme’s functions.php file, a code snippets plugin, or an MU plugin. This class includes initial checks to ensure Yoast SEO is active and that the premium version is not installed, preventing the code from running unnecessarily or causing conflicts.

if ( ! class_exists( 'WPEX_Remove_Yoast_SEO_Upsells' ) ) 
    class WPEX_Remove_Yoast_SEO_Upsells 
        public function __construct() 
    
    new WPEX_Remove_Yoast_SEO_Upsells;

This structural setup ensures that all modifications are centralized and only applied when relevant, laying the groundwork for a robust and manageable solution.

How to Remove Yoast SEO Premium Ads & Upsells

Targeted Interventions: Eliminating Specific Upsell Elements

The comprehensive strategy involves several distinct methods to tackle various types of upsells. Each method targets a specific vector of promotion, from menu items to dashboard widgets and in-page banners.

1. Removing Premium and Unnecessary Admin Pages

Yoast SEO registers several administrative menu pages that are exclusively relevant to the premium version, such as "Redirects" and "Workouts." When clicked in the free version, these pages simply display an upgrade prompt. Additionally, pages like "Plans," "Academy," and "Support," while not strictly premium-locked, primarily serve as sales funnels or external links with minimal day-to-day utility for core SEO management.

The solution leverages the wpseo_submenu_pages filter, which allows modification of the Yoast SEO submenu items. By inspecting the page array for the presence of a ‘yoast-premium-badge’ HTML snippet within the menu title, the system can dynamically identify and remove premium-specific entries. This method offers adaptability, as it doesn’t rely on a fixed list of slugs. For other non-essential pages, a predefined list of slugs (wpseo_upgrade_sidebar, wpseo_licenses, wpseo_page_academy, wpseo_page_support) is used for removal. The PHP_INT_MAX priority ensures this filter runs after Yoast has registered all its pages.

// Inside the constructor
add_filter( 'wpseo_submenu_pages', [ $this, 'remove_premium_admin_pages' ], PHP_INT_MAX );
add_filter( 'wpseo_network_submenu_pages', [ $this, 'remove_premium_admin_pages' ], PHP_INT_MAX );

// Method outside constructor
public function remove_premium_admin_pages( array $pages ): array 
    $pages_to_remove = [
        'wpseo_upgrade_sidebar',
        'wpseo_licenses',
        'wpseo_page_academy',
        'wpseo_page_support',
        'wpseo_redirects', // Explicitly added for premium functionality
        'wpseo_workouts',  // Explicitly added for premium functionality
    ];
    return array_filter( $pages, function( $page ) use ( $pages_to_remove ) 
        // Remove pages flagged with the premium badge
        if ( isset( $page[2] ) && str_contains( $page[2], 'yoast-premium-badge' ) ) 
            return false;
        
        // Remove other unnecessary pages by slug
        if ( isset( $page[4] ) && in_array( $page[4], $pages_to_remove, true ) ) 
            return false;
        
        return true;
     );

This combined approach provides a robust way to clear menu clutter, whether premium-locked or simply non-essential for the free version.

How to Remove Yoast SEO Premium Ads & Upsells

2. Eliminating Upsell Buttons in the Sidebar and Admin Toolbar

Yoast SEO integrates "Upgrade" and "AI Brand Insights" buttons into both the sidebar navigation and the WordPress admin toolbar. These buttons serve no functional purpose for free users. The "Upgrade" button is handled by the remove_premium_admin_pages method due to its registration via wpseo_submenu_pages. However, the "AI Brand Insights" button is a special case. Due to its extremely high registration priority (PHP_INT_MAX), it cannot be reliably removed via the same filter. Instead, WordPress’s remove_submenu_page function is employed directly within the admin_menu hook, again with PHP_INT_MAX priority to ensure it runs last.

For the admin toolbar, the admin_bar_menu action hook is used, which allows direct manipulation of the toolbar nodes. Specific node IDs (wpseo-get-premium and wpseo_brand_insights) are targeted for removal.

// Inside the constructor
add_action( 'admin_menu', [ $this, 'remove_upsell_submenu_pages' ], PHP_INT_MAX );
add_action( 'admin_bar_menu', [ $this, 'remove_admin_bar_links' ], PHP_INT_MAX );

// Methods outside constructor
public function remove_upsell_submenu_pages(): void 
    remove_submenu_page( 'wpseo_dashboard', 'wpseo_brand_insights' );


public function remove_admin_bar_links( WP_Admin_Bar $wp_admin_bar ): void 
    $wp_admin_bar->remove_node( 'wpseo-get-premium' );
    $wp_admin_bar->remove_node( 'wpseo_brand_insights' );

These targeted removals ensure a cleaner navigation experience both in the sidebar and at the top of the admin screen.

3. Disabling the Yoast SEO Dashboard Widget

The Yoast SEO dashboard widget, which displays site SEO scores and recent blog posts from Yoast.com, presents several issues. As previously noted, it performs uncached HTTP requests and transmits server environment data. For most users, its utility is minimal compared to the overhead it introduces.

How to Remove Yoast SEO Premium Ads & Upsells

To remove this, the wp_dashboard_setup action hook is used with remove_meta_box. Additionally, its associated scripts and styles are dequeued using admin_enqueue_scripts, but only on the dashboard screen, preventing unnecessary resource loading.

// Inside the constructor
add_action( 'wp_dashboard_setup', [ $this, 'remove_dashboard_widget' ], PHP_INT_MAX );
add_action( 'admin_enqueue_scripts', [ $this, 'remove_dashboard_widget_assets' ], PHP_INT_MAX );

// Methods outside constructor
public function remove_dashboard_widget(): void 
    remove_meta_box( 'wpseo-dashboard-overview', 'dashboard', 'normal' );


public function remove_dashboard_widget_assets(): void 
    $current_screen = get_current_screen();
    if ( ! ( $current_screen instanceof WP_Screen && $current_screen->id === 'dashboard' ) ) 
        return;
    
    wp_dequeue_script( 'yoast-seo-dashboard-widget' );
    wp_dequeue_style( 'yoast-seo-wp-dashboard' );
    wp_dequeue_style( 'yoast-seo-monorepo' );

This significantly reduces dashboard clutter and mitigates the performance and data privacy concerns associated with the widget.

4. Suppressing In-Page Promotional Banners and Sticky Sidebars

Yoast SEO embeds promotional banners and sticky sidebars as JavaScript components directly within its admin settings pages. Because these are client-side rendered, they cannot be removed using server-side PHP hooks. Instead, inline CSS is employed to visually hide them. This method, while effective, relies on specific CSS selectors that target their position and structure. This makes it potentially fragile, requiring updates if Yoast SEO significantly alters its administrative page layout or class naming conventions in future releases.

// Inside the constructor
add_action( 'admin_enqueue_scripts', [ $this, 'remove_upsells_from_admin_pages' ], PHP_INT_MAX );

// Method outside constructor
public function remove_upsells_from_admin_pages(): void 
    $current_screen = get_current_screen();
    if ( ! ( $current_screen instanceof WP_Screen && str_contains( $current_screen->id, 'wpseo_' ) ) ) 
        return;
    
    $css = '
        /* Comprehensive CSS selectors targeting various banners and sticky elements */
        #yoast-seo-general .yst-@container > div:last-child:has([data-action=load-nfd-ctb]),
        #yoast-seo-general .yst-min-w-[16rem]:has(>.yst-sticky),
        #yoast-seo-settings main + div:has([data-action=load-nfd-ctb]),
        #yoast-seo-settings .yst-root div[class*=yst-fixed],
        .seo_page_wpseo_tools .wpseo_content_cell .yoast_premium_upsell,
        .seo_page_wpseo_tools #sidebar-container.wpseo_content_cell  display: none !important; 
    ';
    wp_register_style( 'wpex-remove-yoast-upsells', false );
    wp_enqueue_style( 'wpex-remove-yoast-upsells' );
    wp_add_inline_style( 'wpex-remove-yoast-upsells', $css );

The !important declaration in the CSS ensures these styles override any default Yoast styling, guaranteeing the elements are hidden.

5. Concealing Locked Premium Admin Fields and Sections

How to Remove Yoast SEO Premium Ads & Upsells

Throughout the Yoast SEO settings, various fields and entire sections are locked behind a premium upgrade, presenting visual clutter without offering functionality. Fortunately, Yoast provides reliable CSS classes for these elements: yst-button--upsell for individual locked fields and yst-feature-upsell for entire locked sections. These classes allow for precise CSS targeting, minimizing the risk of accidentally hiding legitimate free settings.

The CSS string within remove_upsells_from_admin_pages is expanded to include these selectors, ensuring a cleaner configuration interface.

// Expanded CSS for remove_upsells_from_admin_pages
$css = '
    /* Previous banner selectors */
    #yoast-seo-settings main section .yst-feature-upsell,
    #yoast-seo-settings main section.yst-grid:has(fieldset > .yst-space-y-8 > .yst-feature-upsell:only-child),
    #yoast-seo-settings main section.yst-grid:has(fieldset > .yst-space-y-8 > .yst-feature-upsell:only-child) + hr,
    #yoast-seo-settings main form fieldset > .yst-flex > .yst-divide-y > .yst-py-4:has(.yst-button--upsell),
    #yoast-seo-settings main fieldset.yst-group > ul > li:has([data-action=load-nfd-ctb]),
    .yst-root .yst-table-row:has(.yst-button--upsell),
    /* Previous banner selectors */  display: none !important; 
';

Careful testing is advised to ensure no essential free features are inadvertently hidden, particularly if custom Yoast add-ons are in use.

6. Removing Upsell Cards from the Integrations Page

The Yoast SEO integrations page lists compatible third-party tools. Many integration cards include an "Unlock with Premium" button. Similar to other in-page elements, these are hidden using CSS. The integrations page’s unique ID allows for precise targeting, reducing the chance of unintended removals.

The CSS string in remove_upsells_from_admin_pages is further updated with a specific selector for these integration cards: #wpseo-integrations .yst-root section > .yst-grid > div:has([data-action=load-nfd-ctb]).

How to Remove Yoast SEO Premium Ads & Upsells

7. Clearing Premium Upsells from the Post Editor Metaboxes

Perhaps the most intrusive of all upsells are those found within the Yoast SEO metabox at the bottom of the WordPress editor and the custom Gutenberg sidebar. These are encountered every time a post or page is edited, making their removal highly beneficial for workflow efficiency.

Again, being JavaScript components, these are targeted with CSS, but the styles are specifically enqueued only on post editor screens (post or term base screen).

// Inside the constructor
add_action( 'admin_enqueue_scripts', [ $this, 'remove_upsells_from_metaboxes' ], PHP_INT_MAX );

// Method outside constructor
public function remove_upsells_from_metaboxes(): void 
    $current_screen = get_current_screen();
    if ( ! ( $current_screen instanceof WP_Screen && in_array( $current_screen->base, [ 'post', 'term' ], true ) ) ) 
        return;
    
    $css = '
        .wpseo-metabox-content div:has(> button > .yst-badge--upsell),
        :is(.wpseo-metabox-content,.yoast-modal-content) .yoast-prominent-words,
        :is(.wpseo-metabox-content,#yoast-seo:seo-sidebar) .yst-root > div > button[data-id*=AIFixes],
        .wpseo-metabox-content .collapsible_content > .yst-flex:has(.yst-badge--upsell),
        .wpseo-metabox-content .collapsible_content > .yst-flex:has(.yst-badge--upsell) + hr,
        :is(.wpseo-metabox-content,.yoast-modal-content) .yst-feature-upsell--card,
        #yoast-seo:seo-sidebar .components-panel > div:has(.yst-badge--upsell),
        #premium-seo-analysis-upsell-ad-sidebar,
        #premium-seo-analysis-upsell-ad-metabox  display: none !important; 
    ';
    wp_register_style( 'wpex-remove-yoast-metabox-upsells', false );
    wp_enqueue_style( 'wpex-remove-yoast-metabox-upsells' );
    wp_add_inline_style( 'wpex-remove-yoast-metabox-upsells', $css );

This final set of removals ensures that the most frequently accessed parts of the WordPress admin remain free of premium distractions.

The Unified Solution: A Comprehensive PHP Class

Combining all these snippets results in a complete, self-contained PHP class that systematically addresses every major upsell vector within the free Yoast SEO plugin. This consolidated approach provides a robust and manageable solution for maintaining a clean WordPress backend.

How to Remove Yoast SEO Premium Ads & Upsells

(Insert the full PHP code block provided in the original article here)

Beyond the Code: A Dedicated Plugin for Ease of Use

For users and developers who prefer a ready-made solution over manual code implementation, a free plugin named wpex-remove-upsells-for-yoast-seo has been developed. Available directly on GitHub, this plugin encapsulates all the described logic, offering a convenient, plug-and-play method for decluttering the Yoast SEO interface.

However, it is crucial to note that this plugin is not hosted on WordPress.org and therefore does not receive automatic updates. Users are advised to periodically check the GitHub repository’s "Releases" section for new versions, especially following major updates to Yoast SEO itself.

Broader Implications for the WordPress Ecosystem

The development and dissemination of such solutions underscore a broader dynamic within the WordPress ecosystem: the ongoing negotiation between plugin developers’ need for monetization and users’ demand for a clean, efficient, and distraction-free experience. While Yoast SEO’s freemium model has enabled its widespread adoption and continuous improvement, the community’s response through tools like this class or dedicated plugins reflects a strong desire for greater control over the administrative interface.

How to Remove Yoast SEO Premium Ads & Upsells

This trend highlights the power of the open-source community to adapt and provide tailored solutions, empowering users to customize their WordPress installations to their precise needs. It also serves as a reminder to plugin developers about the importance of balancing commercial objectives with user experience considerations.

Maintaining the Clean Interface: Future Considerations

The effectiveness of the CSS selectors, in particular, is contingent on Yoast SEO’s administrative design. Should Yoast SEO introduce significant changes to its admin page layouts, class naming conventions, or the underlying JavaScript components in future updates, the provided CSS (and potentially some PHP hooks) may require adjustments. The GitHub repository for the plugin offers a collaborative platform for identifying and implementing necessary updates.

Ultimately, while Yoast SEO remains a highly recommended tool for search engine optimization, the ability to tailor its free version to a minimalist administrative experience is invaluable for many users. For those considering a complete shift in SEO strategy, exploring alternative plugins remains an option, as detailed in various guides to Yoast SEO alternatives. The goal, in any case, is to ensure that the WordPress backend serves as an efficient tool for content management, free from unnecessary distractions and promotional overlays.

Related Articles

Leave a Reply

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

Back to top button
VIP SEO Tools
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.