WordPress does not require the human-readable title of each post to be unique. To prevent duplicate titles, first determine whether the collision is a post title, URL slug, or SEO title tag; then use an editorial checker or add a save-time validation rule with WordPress’s post_exists() function. A different URL slug does not prove that two post titles are unique.
Identify what is actually duplicated
“Duplicate title” can describe three different problems. The remedy depends on which value is repeated.
| What is duplicated? | Where it appears | Appropriate remedy |
|---|---|---|
| Post title | The title shown in the WordPress editor and usually on the page | Warn or block editors with a title check |
| URL slug | The post_name portion of the permalink |
Review permalink and slug-generation behavior |
| SEO title | The metadata or HTML title used for search-result snippets | Edit the SEO title field or investigate the SEO plugin’s output |
Ask what the report actually found: two WordPress records with the same title, two URLs, multiple <title> elements on one page, or repeated SEO-title text across pages. A support discussion about Yoast treats SEO-title customization as separate from duplicate post records: WordPress.org Support: Duplicate post titles.
Why a “-2” URL does not solve duplicate titles
WordPress core’s wp_unique_post_slug() generates a unique URL slug in applicable workflows and can append a numeric suffix such as -2. It operates on post_name, not on the human-readable title, so two posts can both be titled “Company News” while using different slugs. The function’s reference is at WordPress Developer Resources: wp_unique_post_slug().
Recommended Free Tools
#1 Best Overall
The same reference documents that slug uniqueness checks are not performed while a post remains in draft or pending status. Consequently, neither a slug suffix nor a draft’s current slug is a reliable title-uniqueness rule.
Choose an enforcement approach
| Approach | Best for | What to verify before relying on it |
|---|---|---|
| Editor plugin | Teams that need an in-editor warning without maintaining code | Post types covered, statuses queried, warning versus blocking behavior, editor support, WordPress-version compatibility, and intentional exemptions |
| Custom validation | Sites with imports, APIs, custom publishing rules, or a need to define exact behavior | Which post types and statuses count, how edits exclude the current record, and which save or publish boundary is enforced |
| Duplicate-post workflow | Creating a draft copy as a starting point | Reviewing and changing the copied title before publication; cloning content is not a uniqueness check |
Use an editor plugin for a straightforward warning
The WordPress.org listing for Unique Title Checker describes support for posts, pages, and custom post types and exposes the unique_title_checker_arguments filter for changing the query arguments used to find matching titles.
Rank #2
Treat the listing as a starting point rather than a guarantee for every installation. Check its current compatibility with your WordPress release, the editor your team uses, the statuses it considers duplicates, and whether it warns or blocks. Test an intentional title reuse case before enabling it on production.
Add a custom duplicate-title check
WordPress core provides post_exists(), which searches for an existing post by title and can also receive content, date, post type, and status. It returns the matching post ID or 0 when no match is found. See the function reference at WordPress Developer Resources: post_exists().
Rank #3
Define the rule before writing code
- Decide whether the rule covers posts only or also pages and custom post types.
- Decide whether drafts, pending items, private items, and published items count.
- Decide whether an editor may intentionally reuse a title in a different section or content type.
- When editing an existing post, exclude that post’s own ID from the duplicate result.
- Apply the check at the boundary that matters: editorial save, publish, import, REST request, or another custom workflow.
Core lookup example
This example shows the lookup building block. The surrounding save or import handler must enforce the result according to your site’s rule.
$match_id = post_exists(
$title,
'', // optional content
'', // optional date
'post', // post type to check
'publish' // status to check
);
if ($match_id && (int) $match_id !== (int) $current_post_id) {
// Warn or stop the operation according to your publishing policy.
}
Changing the post type or status arguments changes what “duplicate” means. Calling the function without deciding those values can produce a check that is too broad or too narrow for the editorial workflow.
Rank #4
Handle drafts, imports, and copied posts deliberately
Draft and pending content
Do not infer title uniqueness from the slug of a draft or pending post. The core slug function explicitly omits uniqueness checks in those statuses, and slug uniqueness is separate from title uniqueness in any case.
Imports and APIs
A title check that runs only in the block editor can be bypassed by an importer, REST client, scheduled task, or custom integration. If duplicate titles must never reach publication, put equivalent validation at each publishing path or centralize the rule in the site’s publishing layer.
The Tool Desk
Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Duplicate-post plugins
Yoast Duplicate Post is designed to clone content or create a new draft based on an existing post. It is not documented as a title-uniqueness checker. After copying, review the draft title and change it when your policy requires unique values.
Quick Recap
Diagnose duplicate titles reported by an SEO audit
- Open the affected URLs and compare their WordPress post records and visible headings.
- Check whether the repeated text is the post title, an SEO title-field value, or the rendered HTML
<title>. - If the records are distinct but only SEO titles repeat, edit the SEO title templates or per-page SEO title fields in the SEO plugin.
- If the records themselves share a title and unique titles are required, implement an editor or custom validation rule.
- If only URL slugs differ by a suffix, leave the slug behavior alone unless the permalink itself is incorrect; it does not address title duplication.
Test the rule before enforcing it
- Create two new items with the same title in the same post type and status; confirm the expected warning or block.
- Edit an existing item without changing its title; confirm it does not flag itself.
- Try the same title in a post type that should be allowed or disallowed by policy.
- Repeat the test with draft, pending, and published statuses if those statuses differ for your site.
- Repeat through every publishing path your team uses, including imports and APIs.
- Verify that a title warning does not accidentally prevent saving unrelated edits when reuse is intentional.
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

