Flexa SEO - AEO

Compatibility · v0.6.1

Running alongside the other SEO plugins

Measured, not assumed. Every number below came from activating the pairing on a real install and reading what came out of the page.

Scope

What was tested

The short answer has not changed: run one SEO plugin at a time. This page exists so you can see exactly what happens when you do not, and so a bug report can say "this pairing, this version, this tag" instead of "it conflicts".

Four things were checked for each of the four plugins:

  • What the <head> of a single post looks like with both plugins active, tag by tag.
  • Which plugin ends up owning /sitemap.xml, and what robots.txt ends up advertising.
  • How many per-post fields the one-click migration actually carries over.
  • How many fields the read-fallback picks up while both plugins are still installed.

Reproducibility

The test baseline

Results below were produced on 17 October 2026 against these exact versions. If you are reporting something that disagrees with this page, please include your equivalent list.

ComponentVersion
WordPress7.1.3
PHP8.5.3
WooCommerce11.0.1
Flexa SEO - AEO0.6.1
Yoast SEO28.7
Rank Math1.0.270
All in One SEO5.0.3
SEOPress10.1

Each competitor was activated on its own, alongside Flexa SEO, with default settings and no setup wizard run. A single published post was requested over HTTP and the head tags counted. The plugin was then deactivated before the next one was activated, so no two competitors were ever live together.

Default settings only

None of the four were configured. A plugin you have actually set up may emit more than it did here, not less, so treat these counts as the floor.

What this re-run changed

Every number on this page was measured again for 0.6.1, on the same install and the same post as the 0.5.5 run. One of them moved. Flexa now writes its robots directives through WordPress’s own wp_robots filter instead of printing its own tag, so the Rank Math and All in One SEO pairings now produce one meta name=robots tag where they used to produce two. That one tag is theirs, not a merged one. Read the note under the table before counting it as a clean result.

Sitemap ownership and the robots.txt lines were measured again and came out the same. The migration and read-fallback tables below were not re-run on a test post this time; they were checked against the field maps 0.6.1 actually ships, which are the same maps the 0.5.5 run measured. Rank Math 1.0.280 and SEOPress 10.3 were released after this run and have not been tested, so the versions in the table above are the ones every number below came from.

Summary

Compatibility matrix

PluginSafe to run togetherMigrationRead-fallbackDetected as a conflict
Yoast SEO 28.7NoYesYesYes
Rank Math 1.0.270NoYesYesYes
SEOPress 10.1NoYesYesYes
All in One SEO 5.0.3NoNoNoYes
ColumnWhat it means
Safe to run togetherWhether the pairing produces a clean page. It never does: every one of the four duplicates head tags.
MigrationSettings → Migration can read this plugin’s per-post fields and write them into Flexa’s.
Read-fallbackFlexa reads this plugin’s meta directly when it has none of its own, so the front end keeps working mid-move.
Detected as a conflictThe Setup Assistant notices the plugin is active and warns about duplicate output.

One gap worth knowing about

All in One SEO is not supported in either direction. Flexa warns you that it is active, so you will not be left guessing why the head has two of everything, but there is no migration to run and no read-fallback to carry you through the move. Copy the fields you care about by hand before you switch off.

Measured

Duplicate head tags

How many times each tag appeared in the <head> of one published post. One is correct. Anything higher means both plugins emitted it and search engines get to pick.

TagFlexa alone+ Yoast+ Rank Math+ AIOSEO+ SEOPress
link rel=canonical12222
meta name=description11222
og:title12222
og:description12222
og:url12222
twitter:card12222
twitter:title11222
meta name=robots11112
application/ld+json12221

The ones in the Yoast column are not Yoast behaving better. They are Yoast declining to emit a tag it had no value for on an unconfigured install. Give it a description and the count goes to two like the rest.

One robots tag is not the same as the right robots tag

Four of the five columns show a single meta name=robots tag, but not for one reason. Flexa and Yoast both write their directives through WordPress’s wp_robots filter, so their directives end up merged in core’s one tag. Rank Math and All in One SEO call remove_all_filters( 'wp_robots' ), which takes out Flexa’s filter along with core’s, and print a tag of their own. The one tag on the page is theirs, and Flexa’s directives are not in it.

With All in One SEO 5.0.3 active and unconfigured, that tag came out as max-image-preview:large and nothing else. SEOPress does something else again: it prints its own tag and leaves core’s in place, so the page carries two, one from each plugin, with the same directives in both.

A post set to noindex can still be indexed

The counts above are for a post with default settings. On 22 October 2026 the same pairings were run again with Flexa 1.0.0 on a post set to noindex in Flexa, against the competitor versions in the baseline table. What the page said:

Active alongsideRobots tags on the page
Nothingnoindex, follow
Yoastnoindex, follow
Rank Mathindex, follow, max-snippet:-1, max-video-preview:-1, max-image-preview:large
All in One SEOmax-image-preview:large
SEOPressnoindex, follow and a second tag, index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1

With Rank Math or All in One SEO active, a noindex or nofollow set in Flexa never reaches the page, so set it in the other plugin until you switch that one off. With SEOPress the page carries two tags that disagree. From the release after 1.0.0, the conflict notice in wp-admin says this for whichever of these plugins is active, and it shows again for anyone who dismissed the earlier notice. These cases are kept as versioned fixtures and run again whenever one of the four plugins ships a new version.

Reproduce it on your own site with nothing more than curl:

Count canonical tags on a post
curl -s https://example.com/your-post/ \
  | grep -c '<link rel="canonical"'
Print every robots tag on a post
curl -s https://example.com/your-post/ \
  | grep -io '<meta name=.robots.[^>]*>'

Measured

Sitemaps and robots.txt

Flexa SEO serves its sitemap index at /sitemap.xml. That is the same address SEOPress and All in One SEO want, while Yoast and Rank Math use /sitemap_index.xml.

While Flexa’s sitemap is on, core’s own /wp-sitemap.xml is switched off, so the site has one index rather than two listing the same URLs, and robots.txt advertises one address. If you need core’s back, return true from flexa_seo_aeo/sitemap/keep_core_sitemap.

Active alongside/sitemap.xml servesrobots.txt advertises
NothingFlexasitemap.xml
YoastFlexasitemap.xml and sitemap_index.xml
Rank MathFlexasitemap_index.xml and sitemap.xml
All in One SEOAIOSEO, not Flexasitemap.rss only
SEOPressFlexasitemap.xml and sitemaps.xml

All in One SEO is the one hard route conflict in the set. It claims /sitemap.xml and wins it, so Flexa’s sitemap becomes unreachable, and its robots.txt handling drops Flexa’s sitemap line entirely. Nothing in either plugin tells you this has happened.

Flush rewrites before you judge a 404

Activating or deactivating any of these plugins leaves the rewrite rules stale, and a sitemap URL will 404 until they are rebuilt even though nothing is actually conflicting. Rank Math’s /sitemap_index.xml did exactly that during testing, and served a 200 straight after a flush. Re-save Settings → Permalinks, or run wp rewrite flush, before reporting a missing sitemap.

Measured

Migration coverage

Settings → Migration copies another plugin’s per-post fields into Flexa’s own. Eleven fields were written on a test post for each source, then migrated and read back.

FieldYoastRank MathSEOPressAIOSEO
SEO titleYesYesYesNo
Meta descriptionYesYesYesNo
Canonical URLYesYesYesNo
OG titleYesYesYesNo
OG descriptionYesYesYesNo
OG imageYesYesYesNo
Twitter titleYesYesYesNo
Twitter descriptionYesYesYesNo
Twitter imageYesYesYesNo
noindexYesYesYesNo
nofollowYesYesYesNo

Template tokens are converted as part of the move. Rank Math’s single-delimiter %sitename% becomes %%sitename%%, and names that differ between vocabularies are mapped across, so SEOPress’s %%post_title%% becomes %%title%% and its %%sitetitle%% becomes %%sitename%%. A token with no equivalent resolves to an empty string rather than printing itself.

SEOPress migration shipped in 1.0.0. Its column was measured on 20 October 2026, against SEOPress 10.1 on the same install: all eleven fields were written on a test post, migrated and read back, and a second run skipped the post as already migrated. The Yoast and Rank Math columns are from the earlier runs described above.

Migration never deletes the source plugin’s meta. You can run it, check the result, and deactivate the old plugin afterwards, in that order.

Measured

Read-fallback coverage

Separately from migration, Flexa reads another plugin’s meta on the fly when a post has nothing of its own. This is what keeps the front end intact the moment you activate Flexa, before any migration has run. It covers fewer fields:

FieldYoastRank MathSEOPressAIOSEO
SEO titleYesYesYesNo
Meta descriptionYesYesYesNo
Canonical URLYesYesYesNo
OG titleYesYesYesNo
OG descriptionYesYesYesNo
OG imageYesYesYesNo
Twitter fieldsNoNoNoNo
noindex / nofollowNoNoNoNo

Robots flags are not covered by the fallback

A post you marked noindex in Yoast, Rank Math or SEOPress is not noindex to Flexa until you either run the migration or tick the box again. The migration carries it from all three, so run it before you deactivate the old plugin.

Open

Known issues

IssueAffectsStatus
All in One SEO takes over /sitemap.xml and Flexa’s sitemap becomes unreachable, with no warning in either plugin.Flexa + All in One SEOOpen, will not be fixed: run one SEO plugin
The single meta name=robots tag is the other plugin’s. Both remove every wp_robots filter, Flexa’s included, so a post set to noindex in Flexa can still be indexed.Flexa + Rank Math, Flexa + AIOSEOOpen, will not be fixed: run one SEO plugin
SEOPress prints a second robots tag. On a post set to noindex in Flexa, one tag says noindex and the other says index.Flexa + SEOPressOpen, will not be fixed: run one SEO plugin

Feedback

Reporting a conflict

A report that can be acted on without a round trip contains these five things:

  • Versions of WordPress, PHP, Flexa SEO and the other plugin, in the shape of the baseline table above.
  • The URL of a page where you can see it, if the site is public.
  • Which tag or route is wrong, and what you expected instead. A grep -c count is worth a paragraph of description.
  • Whether the other plugin was configured or left at defaults.
  • Whether it still happens with every other plugin deactivated and a default theme active.

Pairings already on this page do not need re-reporting unless your result differs from what is written here. A result that differs is exactly the interesting case.