How to Remove the Yoast SEO Premium Update Notification in WordPress Admin
The top of your WordPress admin dashboard is your command center. Every time you log in, you expect useful information: new comments, drafts, stats. Instead, you're greeted by a bright yellow banner demanding you update Yoast SEO Premium. It's not a one-time thing — it comes back after every login, every page refresh, every single time.
This is a familiar scenario: you installed Yoast SEO (maybe the premium version came bundled with a theme or plugin pack), the license key expired, and you have no plans to renew. But the notification won't go away. Let's figure out why it appears and — more importantly — how to get rid of it permanently.
\u{201c}Yoast SEO Premium is an outstanding plugin, but its notification system is deliberately designed to push users toward subscription renewal. Fine, as long as it doesn't actively interfere with your workflow.
Why the Notification Appears in the First Place
It all comes down to the plugin's architecture. When you install Yoast SEO Premium, it includes a component called the License Manager. This component lives in a specific file:
wp-content/plugins/wordpress-seo-premium/vendor/yoast/license-manager/class-license-manager.php[/codeblock]
Every time the admin panel loads, this file checks the status of your license key. If the key is missing or expired, you see the notification. The logic works roughly like this:
- The plugin calls the
license_is_valid()method - If it returns
false, it checks whether a key exists - If the key is empty, it shows "you haven't set your license key yet"
- If a key exists but is invalid, it shows "your key has been disabled or has expired"
Here's an interesting detail: even if you delete the premium version and install the free one, some WordPress themes and bundles automatically restore premium plugins during updates. It becomes a vicious circle.
Method 1: Editing class-license-manager.php (The Nuclear Option)
This method directly modifies the plugin code. It works every time, but there's a catch: when Yoast SEO updates, your changes will be overwritten. You'll have to repeat the procedure.
Step-by-Step Instructions
First, connect to your server via FTP (FileZilla, WinSCP) or your hosting file manager. I prefer FTP — it gives full control and lets you quickly download a backup copy.
Navigate to this file path:
/wp-content/plugins/wordpress-seo-premium/vendor/yoast/license-manager/class-license-manager.php[/codeblock]
Important: download this file to your computer and save the original somewhere safe. If anything goes wrong, you can restore it instantly.
Open the file in any text editor. I recommend Notepad++ — it's free, highlights PHP syntax properly, and won't add hidden characters to your code. If you're on Mac, Sublime Text or VS Code work equally well.
Find this code block inside the file:
// show notice if license is invalid
if ( ! $this->license_is_valid() ) {
if ( $this->get_license_key() == '' ) {
$message = 'Warning! You didn't set your %s license key yet...';
} else {
$message = 'Warning! Your %s license key has been disabled...';
}
add_action( 'admin_notices', function() use ( $message, $product_name ) {
echo '' . sprintf( $message, $product_name ) . '
The simplest approach: comment out the add_action call. Add two forward slashes before the lines starting with add_action and echo. Кстати, если ваш редактор поддерживает множественное комментирование (в Notepad++ это комбинация Ctrl + Q), выделите блок целиком и закомментируйте одной командой:
// show notice if license is invalid
if ( ! $this->license_is_valid() ) {
if ( $this->get_license_key() == '' ) {
$message = 'Warning! You didn't set your %s license key yet...';
} else {
$message = 'Warning! Your %s license key has been disabled...';
}
// add_action( 'admin_notices', function() use ( $message, $product_name ) {
// echo '' . sprintf( $message, $product_name ) . '
Save the file and upload it back to the server, replacing the original. Refresh your admin page — the notification should be gone.
There's also a more aggressive variant: return true at the beginning of the license_is_valid() method. The plugin will always think your license is active. But this approach can break other validation checks, so I don't recommend it for production sites.
Method 2: Disabling Checks via functions.php (Recommended)
This method is better because your changes live in the theme, not in plugin files. Yoast SEO updates won't overwrite them. One requirement: you must use a child theme. If you edit the parent theme's functions.php, your code will disappear when the theme updates.
Option A: Disabling admin_notices via Filter
Add this code to your child theme's functions.php:
// Disable annoying Yoast SEO Premium notifications
function disable_yoast_premium_nag() {
if ( class_exists( 'Yoast_Notification_Center' ) ) {
remove_action( 'admin_notices', array( Yoast_Notification_Center::get(), 'display_notifications' ) );
}
}
add_action( 'admin_init', 'disable_yoast_premium_nag', 20 );[/codeblock]
This code fires on the admin_init hook and removes notification display. Important caveat: it disables all Yoast notifications, not just the license one. On most sites, the license notice is the only one that actually causes trouble.
Option B: Targeting the Specific Notification
A more surgical approach: keep other Yoast notifications (like indexing issues) while removing only the license message. Use this code instead:
function remove_specific_yoast_notification( $notifications ) {
if ( isset( $notifications['license-expired'] ) ) {
unset( $notifications['license-expired'] );
}
if ( isset( $notifications['license-not-set'] ) ) {
unset( $notifications['license-not-set'] );
}
return $notifications;
}
add_filter( 'yoast_notifications', 'remove_specific_yoast_notification', 999 );[/codeblock]
This uses Yoast's internal notification filter and removes only entries with the license-expired and license-not-set IDs. Everything else stays untouched.
add_notification in the wordpress-seo-premium directory. A quick FTP or SSH search will reveal all active notification keys.Method 3: CSS Hack (Simplest, Not Perfect)
If you'd rather not touch PHP at all, you can simply hide the notification with CSS. Yes, it stays in the HTML source, but it disappears visually. Add this to your functions.php:
function hide_yoast_notice_css() {
echo '';
}
add_action( 'admin_head', 'hide_yoast_notice_css' );[/codeblock]
Downsides: the notification still loads, the browser still renders it, you just can't see it. Performance impact is negligible for one or two hidden elements, but the "hack" aspect bothers some purists.
Upsides: zero plugin file modifications, survives all updates, works instantly. For most users, this is more than enough.
Method 4: Disabling via Must-Use Plugin
Must-use plugins (MU-plugins) live in a special WordPress directory: wp-content/mu-plugins/. Everything in this folder loads automatically before regular plugins and cannot be disabled from the admin panel. It's the perfect place for patches like this.
Create a file with any name — for example, disable-yoast-nag.php — inside the wp-content/mu-plugins/ folder. If the folder doesn't exist, create it. File contents:
.notice-error:has(a[href*="yoast"]:contains("license")),
.notice-warning:has(a[href*="my.yoast.com"]),
[class*="yoast"][class*="notice"]:not(.yoast-wizard) {
display: none !important;
}
';
});
}
add_action( 'plugins_loaded', 'mu_disable_yoast_license_nag', 20 );[/codeblock]
The MU-plugin advantage: it doesn't depend on the active theme. If you switch themes, the code keeps working. Ideal for production sites where stability is critical.
\u{201c}MU-plugins are the hidden weapon of experienced developers. They load before regular plugins and stay invisible to clients in the admin. For any low-level WordPress core manipulation, I always reach for MU-plugins first.
Method 5: Ditch the Premium Version Entirely
Sometimes the best way to solve a problem is to eliminate its source. If you aren't using Yoast SEO Premium features, why keep the premium version on your site?
The free version of Yoast SEO covers about 90% of what a typical blog needs:
- XML sitemap
- Title and description meta tags
- Content SEO analysis
- Breadcrumbs
- Open Graph markup
- Canonical URLs
- Robots.txt editor
The process:
- Deactivate and delete Yoast SEO Premium
- Install the free version from the WordPress repository
- Your settings should carry over automatically
- Verify that all SEO data is intact
All Methods Compared
To help you decide without re-reading everything, here's a summary table:
| Method | Difficulty | Survives Updates | Break Risk | Best For |
|---|---|---|---|---|
| Edit class-license-manager.php | Low | No | Low | Infrequent plugin updaters |
| Code in functions.php | Medium | Yes (with child theme) | Low | Most users |
| CSS hiding | Minimal | Yes | None | Beginners, quick fixes |
| MU-plugin | Medium | Yes | Minimal | Developers, power users |
| Switch to free version | Low | Yes | Medium (lose premium features) | Non-premium feature users |
Yoast SEO vs. Alternatives
If the notification has pushed you to the point of considering a plugin switch, here's how Yoast stacks up against popular alternatives:
| Plugin | Free Version | License Nags | Strengths | Weaknesses |
|---|---|---|---|---|
| Yoast SEO | Yes (limited to 1 keyword) | Yes, in Premium | Readability analysis, breadcrumbs, schema.org | Persistent nags, heavy interface |
| Rank Math | Yes (feature-rich) | None in free | 5 free keywords, 404 monitor, redirects | Overwhelming interface for beginners |
| All in One SEO | Yes | Minimal | Simplicity, WooCommerce integration | Fewer content analysis features |
| SEOPress | Yes | None | Lightweight, no ads, clean code | Fewer learning resources |
| The SEO Framework | Yes | None | Automation, minimalist interface | Less flexibility in settings |
I've personally migrated several projects from Yoast to Rank Math and SEOPress. The admin performance improvement is immediately noticeable — especially on sites with many plugins. But that's a topic for another article.
Frequently Asked Questions
Is it safe to edit plugin files directly?
Safe if you create a backup and know exactly which lines you're changing. The main risk: plugin updates will overwrite your edits. For a long-term solution, use code in your child theme's functions.php or an MU-plugin instead.
Will my SEO settings disappear if I remove the Premium version?
No. All SEO data (meta tags, descriptions, focus keywords) is stored in the WordPress database and won't be deleted when you deactivate the plugin. When switching to the free version or another SEO plugin, this data will be preserved. Some premium-specific features, however, like internal linking suggestions or advanced analysis, may stop working.
Why does the notification come back after a plugin update?
Because an update replaces all plugin files with fresh ones — including class-license-manager.php. Your modifications get overwritten. That's why using functions.php or an MU-plugin is more reliable — Yoast SEO updates don't touch those files.
Can I disable only the license notification while keeping others?
Yes. Use the yoast_notifications filter and remove only the license-expired and license-not-set keys from the array. The exact key names can be found by grepping the plugin source code for add_notification.
What if none of these methods work?
Check if your browser or a server-side cache is serving a stale admin page. Force a hard reload: Ctrl + Shift + R (Windows) or Cmd + Shift + R (Mac). Also check for other plugins that might interfere with Yoast SEO. As a last resort, temporarily switch to the default WordPress theme and deactivate all plugins except Yoast to rule out conflicts.
Is it legal to disable license notifications?
Yes. You have every right to modify plugin code on your own website. The GPL license, under which WordPress and most plugins (including Yoast SEO) are distributed, explicitly permits source code modifications. The only restriction: if you redistribute a modified version, you must retain the GPL license.
Can I use one license key on multiple sites?
No. A Yoast SEO Premium license key is tied to a single domain. Attempting to activate it on a second site will produce a validation error. This is standard practice for commercial WordPress plugins. You need to purchase the appropriate number of licenses for your sites.
Is Premium even worth it?
It depends on your needs. Premium provides: multiple focus keywords per article, internal linking suggestions, premium support, redirect management. For a blog with 50-100 articles and a basic SEO strategy, the free version is more than sufficient. Premium makes sense for large projects, e-commerce stores, and SEO professionals working with dozens of keywords per page.
How do I verify the notification is gone for all users?
Create a test user with the Editor role and log in as that user. Also check in incognito/private browsing mode. If using a caching plugin, clear the cache. Verify the notification doesn't appear across different admin pages: Posts, Pages, Plugins, Settings.
Will disabling notifications affect Yoast's free features?
Not at all. Disabling the license notification is a purely cosmetic operation. All free plugin features — SEO analysis, readability check, sitemap, meta tags — continue working fully. You simply stop seeing the annoying banner at the top of your admin area.
Common Problems and Solutions
Over years of WordPress work, I've seen plenty of situations where "just hide the notification" turned into a headache. Here are the most common pitfalls:
Problem: White Screen After Editing functions.php
You added the code, saved — and the admin area turned into a blank white page. Cause: a PHP syntax error. Solution: connect via FTP, open functions.php, and remove the code you added. Next time, validate your PHP syntax before saving. An online PHP linter or your local editor's built-in syntax checker is your best friend.
Problem: Notification Gone, New One Appeared
This happens when using the "comment out add_action" method. Yoast may check license validity in multiple places. Search the plugin files for license_is_valid — you'll be surprised how many times it's called.
Problem: Notification Hidden, But JavaScript Error in Console
CSS hiding removes the visual element, but the plugin's JavaScript still tries to interact with it. Solution: add a small script alongside the CSS:
add_action( 'admin_footer', function() {
echo '';
});[/codeblock]
This physically removes the element from the DOM rather than just hiding it. Works much cleaner.
How to Make Sure the Notification Never Comes Back
If you want a definitive solution, here's the combined approach I use on client sites. It layers multiple methods for near-100% reliability:
- Create an MU-plugin with the
yoast_notificationsfilter - Add a CSS fallback rule in your child theme's
functions.php - After every Yoast SEO Premium update, check for new notification types
- Set up monitoring: if a notification appears in the admin, you get an email alert
The last point sounds like overkill for a blog, but for a commercial site with a team of content managers, it saves nerves and time.
wp-content/mu-plugins/admin-cleanup.php where I dump all admin cleanup hacks: disabling notifications, removing unnecessary dashboard widgets, hiding menu items. Five years later, I've never regretted this approach.Summary: Which Method to Choose
For those who skimmed the article, here's the short version:
- Regular WordPress user: Use Method 2 (code in child theme's functions.php). Simple, reliable, update-proof.
- Need a quick, no-code fix: Method 3 (CSS). 30 seconds and you're done.
- Developer or power user: Method 4 (MU-plugin). The most correct and stable approach.
- Not using premium features: Method 5. Delete Premium, install the free version.
And remember: any persistent, unremovable notification in your admin panel is a bug, not a feature. Good tools help you work — they don't distract you. If Yoast SEO has crossed that line for you, now you know exactly what to do about it.
Tap to react



