There is an unwritten WordPress rule: one role, one plugin. Two active SEO plugins overwrite each other's meta tags and confuse Google. Two cache plugins fight for the same files and may break the site. Two security plugins do the same checks twice and slow every request.
Why this matters
The categories that tend to produce damaging duplicates: SEO (Yoast, Rank Math, AIOSEO, SEOPress, RankPlus) - each owns wp_head, Open Graph, Schema, canonical and sitemap. Two of them at once produce two different <meta description> tags on the same page, two sitemaps at the same URL and a canonical conflict that confuses crawlers. Caching (W3 Total Cache, WP Rocket, LiteSpeed Cache, WP Super Cache) - all want to write to the same wp-content/cache and own advanced-cache.php. Running two corrupts cache files and can produce redirect loops. Security (Wordfence, Sucuri, iThemes Security, All In One WP Security) - each adds hooks to login, xmlrpc and REST API. Two active end up blocking each other: Wordfence blocks Sucuri as a suspicious bot. Page builders (Elementor, Divi, Beaver Builder, WPBakery) - two active on the same page produce duplicated HTML and break layout.
How to detect
RankPlus identifies active plugins by category (using the plugin_slug against a known map) and flags any category with more than one active plugin. Manually: visit Plugins > Installed Plugins, filter by Active, and search for words like SEO, Cache, Security, Backup. Two from the same category means a duplicate.
How to fix
- For each duplicated category decide which plugin stays. Consider: last update date, number of active installs, stability in your workflow, unique features you actually use.
- Before removing, back up the settings of the plugin you are keeping. Yoast has Export Settings; Rank Math has Status & Tools > Database Tools.
- If this is SEO: most plugins support importing SEO data (descriptions, focus keywords) from a competitor. Rank Math ships a wizard that imports straight from Yoast. Run the migration before disabling the old plugin.
- Deactivate the plugin you are dropping - do not delete yet. Give it 24 hours to confirm the site is fine.
- After 24 hours of clean operation, delete the old plugin.
- Clean leftover caches and transients.
wp transient delete --allwipes them.
Common mistakes
- Keeping a duplicate "just in case": leaving Yoast active "as backup" when moving to Rank Math creates a permanent conflict. Pick one.
- Deleting before importing: meta descriptions Yoast wrote live in postmeta. Deleting Yoast before importing leaves the data orphaned.
- Two cache plugins active together: this can break the site to a 500 - one writes
advanced-cache.php, the other overwrites it. If you are in this state, deactivate both, deletewp-content/advanced-cache.php, then activate only one. - Two anti-spam plugins active: Akismet plus Antispam Bee causes legitimate comments to land in spam twice.
Verifying the fix
View source on the home page - there should be exactly one <meta description>, one <link rel="canonical"> and one sitemap at /sitemap.xml. Re-run the RankPlus scan and the category returns to green. If you have Google Search Console, watch for duplicate-canonical errors or Coverage-report changes.