Duplicate Title Validator
Duplicate Title Validator is a robust WordPress plugin designed to ensure the uniqueness of post titles across all post types and taxonomies. By preventing duplicate titles, this plugin enhances both SEO and user experience. Whether you use Gutenberg or the Classic Editor, it seamlessly integrates to maintain title uniqueness.
Key Features
- Comprehensive Duplicate Detection: Scans all post types (including custom ones) and taxonomies to identify duplicate titles.
- Gutenberg Publish Lock: In the block editor, the Publish button is fully disabled when a duplicate title is detected, with a pre-publish warning panel showing the conflicting titles.
- Classic Editor Draft Mode: Automatically saves posts with duplicate titles as drafts to prevent accidental publishing, with a dismissible admin notice.
- Real-time Similar Titles: As you type a title, a live list of similar existing titles appears below the input field.
- Dashboard Widget: A dedicated widget on the WordPress dashboard identifies similar or potentially duplicate titles using cosine similarity, with direct edit links.
- Redesigned Settings Page: A clean, card-based settings UI with toggle switches and inline field descriptions.
- Result Caching: Dashboard widget results are cached for one hour to avoid performance issues on large sites.
- Localization Support: Fully translated into 6 languages — English, Persian, Spanish, Portuguese (Brazil), German, and Arabic — with support for adding more.
New in Version 1.7
- Gutenberg Publish Lock: Publishing is now fully blocked in the block editor when a duplicate title is detected and “Allow Duplicate Titles” is disabled — the Publish button is locked via the official
lockPostSavingAPI. - Pre-publish Warning Panel: A colour-coded panel appears in the Gutenberg pre-publish checklist, listing all conflicting titles and explaining why publishing is blocked.
- Redesigned Settings Page: Replaced the plain WordPress settings form with a modern card-based UI featuring a dark header, toggle switch for the allow-duplicates option, and inline field descriptions.
- Redesigned Dashboard Widget: Complete visual overhaul with colour-coded similarity badges (red / orange / green), grouped cards per title, and a cleaner layout.
- Donation & Support Section: Added a support section to both the settings page and the dashboard widget.
- Bug Fixes: Fixed incorrect
load_plugin_textdomainpath, wrong text domain string in title checker, flawed similar-title filter logic, duplicatewp-pluginsscript dependency, and missing input sanitization in Gutenberg REST API handlers. - Performance: Dashboard widget results are now cached with a one-hour transient; duplicate pair comparisons skip already-seen pairs to reduce O(n²) overhead.
Supported Languages
This plugin ships with built-in translations for the following languages. No extra installation is required — activate the plugin and set your WordPress language to enable the translation automatically.
Language Locale Status
English en_US ✅ Built-in
Persian (فارسی) fa_IR ✅ Complete
Spanish (Español) es_ES ✅ Complete
Portuguese — Brazil (Português) pt_BR ✅ Complete
German (Deutsch) de_DE ✅ Complete
Arabic (العربية) ar ✅ Complete
Want to add your language? Translate the .pot file found in the languages/ folder using Poedit and send the resulting .po and .mo files to hasan.mova@gmail.com — we will include it in the next release.
Translators
- Persian (fa_IR): Hasan Movahed
- English (en_US): Noumaan Yaqoob
- Spanish (es_ES): Hasan Movahed
- Portuguese Brazil (pt_BR): Hasan Movahed
- German (de_DE): Hasan Movahed
- Arabic (ar): Hasan Movahed
Special Thanks
A heartfelt thank you to May for her generous financial support — you believed in this project when it needed it most and kept it alive. This plugin exists because of your kindness. Thank you. ♥
Support & Donations
This plugin is free and open-source, built and maintained entirely in spare time. If it saves you time or helps your site stay organised, please consider supporting its development.
Every contribution — no matter how small — helps keep this project alive and growing.
📧 To send a donation or get in touch: hasan.mova@gmail.com
License
This plugin is licensed under the GPLv2 or later license.
Contributing
Contributions are welcome! Fork the repository and submit a pull request. Ensure your code adheres to WordPress coding standards and includes thorough documentation.
Support Forum
For assistance, visit the WordPress.org support forum.