HomePortfolioExtensionsScriptsWordPress
WordPress pluginv1.0.1

Duplicate Post Finder

Find duplicate posts, tags and categories, warn editors while they type a title, and stop new duplicate posts from being published.

This guide covers installing and using Duplicate Post Finder by Quintaphon (version 1.0.1), a free plugin that finds duplicate posts, tags and categories and stops new duplicate posts from being published. Use it for the first setup and as a reference for every screen.

Tip

The plugin's menu in WordPress is called Duplicates. It has five screens: Overview, Duplicate posts, Duplicate terms, Multiple categories and Settings.

Overview

  • Duplicate posts: every group of posts that share a title, with one-click clean-up.
  • Warning in the editor: a notice as soon as the title of the post you are writing is already used.
  • Publish block: a post can not go live while a published post has the same title.
  • Duplicate terms: categories and tags with the same name, merged into one.
  • Multiple categories: posts filed in more than one category.

Nothing is deleted unless you ask for it, and trashed posts can be restored from the WordPress trash.

Requirements

ItemNeeded
WordPress5.8 or newer (tested up to 7.1)
PHP7.2 or newer
EditorBlock editor or classic editor

Install

  1. Download duplicate-post-finder.zip.
  2. In WordPress go to Plugins > Add New Plugin > Upload Plugin, choose the file, click Install Now and activate it. (Duplicate Post Finder is not in the WordPress.org directory yet.)
  3. Open Duplicates in the admin menu.

The warning and the publish block are on as soon as the plugin is active, for posts. Add pages or other post types under Settings.

Overview screen

The Overview shows the number of duplicate post groups (and how many extra copies they hold), duplicate term groups per taxonomy, published posts in two or more categories, and how many posts were checked. Below that are the largest duplicate groups, the duplicate terms and the state of the editor protection.

The scan runs when you open the plugin and is kept until a post changes. Scan again at the top runs it right away. A site with 50,000 posts is scanned in a few seconds.

Duplicate Post Finder Overview screen
Overview: duplicate posts, duplicate terms and the editor protection.

Duplicate posts

Each group lists the posts that share a title, with their ID, link, status, date and author. The post marked Keeps is the oldest published post, or the oldest post when none is published.

ActionWhat it does
Keep one, trash the restMoves every post in the group except the one marked Keeps to the trash.
TrashMoves a single post to the trash.
Not a duplicateSkips this title from now on. See Not a duplicate.
View / EditOpens the post or its edit screen.

Search the list by title, and filter by post type when you check more than one.

Duplicate posts list grouped by title
Duplicate posts: each group with the post that is kept marked.

Before trashing published posts

The trashed post's URL stops working. If it is indexed or linked, add a redirect to the post you keep.

Title matching

ModeIgnoresExample
Loose (default)Case, accents, punctuation, symbols and extra spaces"Galaxy A15: USB Driver!" matches "galaxy a15 usb driver" and "Café" matches "Cafe"
ExactCase and extra spaces"Galaxy A15 USB Driver" matches "galaxy a15 usb driver", but not "Galaxy A15: USB Driver"

Titles are compared within one post type, so a page and a post may share a title. HTML entities are decoded first, so "Tom & Jerry" and "Tom & Jerry" match.

Warning in the editor

While a post is being written, the plugin checks its title against your other posts:

  • Block editor: a notice at the top lists the posts that already use the title, with links. The pre-publish check shows the same list, in red when publishing is blocked.
  • Classic editor: a box under the title field, red when publishing is blocked.

The warning appears about a second after you stop typing and disappears as soon as the title is unique. It mentions posts in every status you scan, including drafts and pending posts.

Block editor warning about a duplicate title
Block editor: the warning with links to the posts that use the title.
Pre-publish check listing posts with the same title
Pre-publish check: publishing is blocked.
Classic editor warning under the title
Classic editor: the warning under the title field.

Publish block

A post can not be published, scheduled or made private while a published, scheduled or private post of the same type has the same title. Drafts and pending posts never block, and saving a draft is always allowed.

WhereWhat happens
Block editor and REST APIPublishing fails with "A post with this title already exists" and the post stays a draft.
Classic editorThe post is saved as a draft, with a notice naming the post that already uses the title.
Quick Edit, XML-RPC, importsThe post is saved as a draft.
Renaming a published post to a used titleThe new title is not saved; the post keeps its old title and stays published.
Editing an old duplicate without changing its titleAllowed, so existing content can always be updated.
Block editor publishing failed because of a duplicate title
Block editor: publishing failed, the post stays a draft.
Classic editor saved the post as a draft because of a duplicate title
Classic editor: saved as a draft instead of published.

Duplicate terms

Lists categories, tags and other taxonomies you check whose names match, using the same title matching: for example "Android 13" and "android-13", or "Tablets" and "Tablets.".

  1. In each group, select the term to keep under Keep. The default is the one with the most posts (or the default category).
  2. Click Merge into selected and confirm.

The posts of the other terms are added to the kept term, their child categories move under it, and the other terms are deleted. The default category is never deleted. Archive links of deleted terms stop working, so add redirects if they are indexed.

By default, categories with the same name under different parents (for example Samsung > Tablets and Lenovo > Tablets) are not listed. Change this under Settings.

Duplicate categories and tags with merge
Duplicate terms: pick the term to keep and merge.

Multiple categories

Lists posts filed in two or more categories, newest first, with their categories. Keep only on a category removes every other category from that post.

Filters: a category, the minimum number of categories (2 to 5), published posts or all statuses, and how parent categories count. By default a category together with its own child (for example Samsung and Samsung > Tablets) counts as one, since that is usually intended; choose Count every category to list those posts too.

Posts in multiple categories with Keep only
Multiple categories: Keep only on each category.

Settings

SettingDefaultWhat it does
Post typesPostsWhich post types are scanned, warned about and blocked.
Statuses in the scanAllWhich posts the Duplicate posts list and the editor warning include. The publish block always checks published, scheduled and private posts.
Title matchingLooseSee Title matching.
Warn in the editorOnThe notice in the block editor and the box in the classic editor.
Stop new duplicates from being publishedOnThe publish block.
Administrators may publish duplicates anywayOffAdministrators still see the warning but are not blocked.
Taxonomies to checkCategories, TagsWhich taxonomies the Duplicate terms list includes.
Compare categories under the same parent onlyOnOff: any two categories with the same name are listed.
Refuse new tags and categories with a name already usedOffWordPress already refuses the exact same name; this also refuses close variants such as "Galaxy-A12" when "Galaxy A12" exists.
Settings for post types, statuses and title matching
Settings: post types, statuses and title matching.
Settings for post types, statuses and title matching
Settings: post types, statuses and title matching.
_EDITOR

Not a duplicate

Some titles are meant to repeat. Not a duplicate on a group skips that title from then on: it leaves the list, and posts with that title get no warning and are not blocked. The titles you skipped are listed at the bottom of Settings, where Check again undoes it.

Your data

  • The plugin stores its settings, the list of titles marked as not a duplicate, and a cached scan result. It adds no database tables.
  • Posts are only changed when you trash them or use Keep only, and terms when you merge them.
  • Nothing runs for visitors, and no external services are contacted.
  • Deleting the plugin removes its settings and cache. Your posts and terms are not touched.

Troubleshooting

ProblemWhat to do
No warning in the editorCheck that Warn in the editor is on and that the post type is selected under Settings.
A post I need can not be publishedChange its title, mark the title as Not a duplicate, or turn on Administrators may publish duplicates anyway.
Two different titles are listed as duplicatesLoose matching ignores punctuation. Switch to Exact, or mark the group as Not a duplicate.
An import saved posts as draftsTheir titles were already published. Turn the publish block off during the import if the duplicates are intended.
The list looks out of dateClick Scan again at the top.
Same-name categories are missing from Duplicate termsThey have different parents. Turn off Compare categories under the same parent only.

Changelog

  • 1.0.1: The plugin sidebar links to the plugin site.
  • 1.0.0: First release: duplicate posts, duplicate tags and categories, posts in several categories, the editor warning and the publish block.

Need help?

Questions about setup or a feature request? Contact us on our support page. You can also download the latest version (v1.0.1) here.