WooCommerce products with the same SEO title

CatalogLift groups products that share a literal SEO title and shows the products behind each match. Review whether the title identifies each page clearly before deciding to change it.

Content & SEO Opportunity AI proposal

When shared titles are worth reviewing

If two product pages differ by model or capacity but share a title that omits that difference, a more precise title may help a reader choose. If the pages intentionally describe the same product, review their purpose before rewriting anything. Changing a few words solely to remove a match is not evidence of better content.

Google recommends descriptive, distinct page titles and can generate title links from several sources. This check does not measure rankings, clicks or which title Google displays. Google's title link guidance explains that distinction.

How to find shared SEO titles manually

The SEO title lives in postmeta under a key set by your SEO plugin. With Yoast SEO, this WP-CLI query lists every literal title used by more than one product:

wp db query "SELECT m.meta_value AS seo_title, COUNT(*) AS uses
FROM wp_postmeta m
JOIN wp_posts p ON p.ID = m.post_id
WHERE m.meta_key = '_yoast_wpseo_title'
  AND p.post_type = 'product' AND p.post_status <> 'trash'
  AND m.meta_value <> '' AND m.meta_value NOT LIKE '%\%\%%'
GROUP BY m.meta_value
HAVING uses > 1
ORDER BY uses DESC;"

Using Rank Math, query rank_math_title and exclude %title%-style variables instead. Adjust the wp_ prefix if needed.

This works — with three gaps. It matches character for character, so a title with a trailing space, a different case or an HTML entity slips through. It tells you a title is shared but not which products to open. The matches still need a review of whether the title identifies each page clearly; they do not tell you which titles should change.

How CatalogLift finds matches and helps

The scan compares literal SEO titles from supported plugin data across current synced products. HTML entities are decoded, markup removed, whitespace collapsed and case ignored. Empty text and template variables are excluded. Two or more matches form a group; each finding shows the text, the group size and a sample of matching products.

This is an improvement opportunity, excluded from store health. Dismiss it when the title is suitable. When a real product difference should be clearer, you can write a title or request an AI draft from existing catalog facts. Review the before/after diff and approve through the panel or a connected agent. CatalogLift reads the applied value back and scans again; that verifies the catalog change, not an improvement in search performance.

Fair questions, straight answers.

Does a shared SEO title prove there is an SEO problem?

No. This check detects matching text, not rankings or clicks. Compare the pages and decide whether the title identifies each one clearly. Shared wording can be intentional; a match alone does not justify a rewrite.

Does this count against store health?

No. It is an improvement opportunity. You can dismiss it when the title is suitable, and already good is a possible assessment when AI reviews the candidate.

Will Google show the title stored in my SEO plugin?

Not necessarily. Google builds title links from several sources, including the title element, headings and other page text. CatalogLift compares the synced SEO field; it does not inspect the resulting search listing.

What about titles using %%title%% or %title% templates?

Template variables are excluded from this comparison. The check compares literal SEO text exposed by a supported plugin, not the titles rendered from templates on the storefront.

See it on your own catalog.

Create a free account, connect your WooCommerce store and this check runs on your real products, along with the rest.

No card required. The free plan never writes to WooCommerce.