xpay✦ Commerce
Directory
WooCommerce plugins
RT Delete Duplicate Products for WooCommerce
RT Delete Duplicate Products for WooCommerce
Find and permanently delete duplicate WooCommerce products by title, SKU, or both — with bulk selection, group controls, and a built-in confirmation g …
Will this break my store?
What the WordPress.org registry says about keeping RT Delete Duplicate Products for WooCommerce running.
Tested to 6.9.5 — 1 branch behind 7.0
Tested against the WordPress branch in use today.2 months ago
7.4
Your host must be running at least this version.5.8
woocommerce
These must be installed and active first.1
A single maintainer. Worth knowing if the plugin is load-bearing for your store.Maintenance & trust
Scored on how RT Delete Duplicate Products for WooCommerce is looked after — not on how many stores run it.
Maintenance
35 / 35WordPress compatibility
14 / 20Support responsiveness
Not enough dataMerchant satisfaction
Not enough dataListing transparency
3 / 10Ratings
No one has rated this plugin on WordPress.org yet. That is a statement about the ratings page, not about the plugin — plenty of well-kept plugins never collect them.
RT Delete Duplicate Products for WooCommerce is a fast, safe, and easy-to-use store cleanup tool that scans your WooCommerce catalogue for duplicate products and lets you permanently remove them in bulk — all from a modern React-powered admin interface inside your WooCommerce dashboard.
Duplicate products accumulate through CSV imports, API syncs, migration scripts, and copy-paste mistakes. Left uncleaned, they damage your store’s SEO rankings, confuse customers, and inflate your database. This plugin makes the cleanup process visual, controlled, and irreversible only when you say so.
Why Duplicate Products Hurt Your Store
- Duplicate product URLs compete against each other in search engines, splitting ranking authority and suppressing both listings.
- Customers landing on duplicated product pages see inconsistent pricing, stock levels, or descriptions — eroding trust.
- Orphaned product meta, variation records, and postmeta rows from duplicates bloat your database and slow down admin queries.
Key Features
Three Detection Methods
Scan your entire product catalogue for duplicates using the method that fits your situation:
- By Title — finds all published products and product variations sharing an identical name.
- By SKU — queries the
_skupostmeta field and surfaces every product or variation sharing the same SKU. Empty SKUs are excluded automatically. - By Both (Title + SKU) — runs both scans simultaneously, merges results into a single deduplicated list, so you see every duplicate regardless of how it was created.
Grouped Duplicate View
Results are displayed as grouped sets — every duplicate group shows all products that share the same title or SKU together. For each product in a group you can see: product name, SKU, price, stock status, creation date, a direct edit link, and a frontend permalink. All the information you need to decide what to keep and what to delete — without leaving the page.
Bulk Selection and Deletion
Select individual products or an entire duplicate group in one click. Delete across multiple groups at once. The plugin reports exactly how many products were deleted and how many (if any) failed, so you always know the outcome.
Keep One, Delete the Rest
For any duplicate group, nominate one product to keep and automatically queue the rest for deletion — the safest and fastest way to resolve each group without manual cherry-picking.
Safe Deletion with Confirmation Guard
Every delete action requires an explicit confirmation step. A modal dialog asks you to confirm before anything is permanently removed — protecting you from accidental bulk deletions.
Permanent Deletion — Bypasses Trash
Products are force-deleted using WooCommerce’s own $product->delete( true ) — they are not moved to trash. All associated postmeta is removed at the same time. This keeps the database clean and the operation final.
Full Variable Product and Variation Support
When a variable product is deleted, the plugin first loops through and removes every child variation before deleting the parent. Variation products that are themselves duplicates can also be detected and deleted independently. No orphaned variation rows are left behind.
React-Powered Admin Interface
Built with @wordpress/scripts and WordPress’s own component library, the interface looks and feels native to WordPress 6.x. All scanning and deletion happens over a secure internal REST API — no page reloads. RTL layout is fully supported.
Secure REST API
All API endpoints under /wp-json/rtddpw/v1/ require the manage_woocommerce capability. The scan endpoint validates the method parameter against an allowlist. The delete endpoint validates and sanitises every product ID before acting. Nonce verification is enforced throughout.
Who Is This Plugin For?
- Store managers who have run product imports multiple times and ended up with hundreds of duplicate listings.
- Developers and agencies migrating a store from another platform and needing to clean up the imported catalogue quickly.
- Store owners whose WooCommerce admin is slow and suspect a bloated products table is the cause.
- SEO-focused merchants who need a clean catalogue with no duplicate URLs competing against each other in search results.
How It Works
- Go to WooCommerce → Delete Duplicates in your WordPress admin.
- Choose your detection method: Title, SKU, or Both.
- Click Scan for Duplicates — the plugin queries your database and returns grouped results instantly.
- Review each group. View the name, SKU, price, stock status, creation date, and links for every product in the group.
- Select the products you want to remove — individually, by group, or across all groups at once.
- Click Delete Selected and confirm in the dialog.
- The plugin permanently deletes selected products (and their variations if applicable) and shows a deletion summary.
Technical Details
- Detection queries run directly against
{prefix}_postsand{prefix}_postmetausingGROUP BYandHAVING COUNT(*) > 1— no full table scans. - Scans cover
post_type IN ('product', 'product_variation')andpost_status = 'publish'only. Drafts, pending, private, and trashed products are excluded. - Admin page is mounted under WooCommerce → Delete Duplicates and gated by the
manage_woocommercecapability. - REST API namespace:
rtddpw/v1. Endpoints:GET /duplicates?method=title|sku|bothandPOST /delete. - Built with the
@wordpress/scriptsbuild toolchain; dependencies resolved viaindex.asset.php. - Singleton pattern ensures a single plugin instance throughout the request lifecycle.
- Internationalisation-ready — all user-facing strings use
__()and_n()with text domainrt-delete-duplicate-products-for-woocommerce. - RTL stylesheet (
index-rtl.css) included and loaded automatically for right-to-left languages.
Yes. WooCommerce must be installed and active. The plugin checks for the WooCommerce class both on activation and on every load. If WooCommerce is missing, the plugin deactivates itself and shows an admin notice.
Three methods are supported. Title finds products sharing the same product name. SKU finds products sharing the same _sku meta value (blank SKUs are excluded). Both runs both scans and merges results, so you see every duplicate from either method in a single grouped list.
Yes. When a variable product is deleted, all of its child variations are deleted first, preventing orphaned records. Individual variation products can also be detected as duplicates in their own right and deleted independently.
Yes, deletions are permanent. The plugin uses WooCommerce force-delete ($product->delete( true )), which bypasses the trash and removes all associated product metadata immediately. A confirmation dialog is always shown before any delete action. Always back up your database before running bulk deletions.
Each product in a group shows its name, SKU, price, stock status, creation date, a direct WordPress edit link, and the frontend product permalink — enough to compare duplicates side-by-side and decide which one to keep.
Yes. The Keep One, Delete the Rest option lets you nominate which product to keep, then automatically queues all others in that group for deletion.
Only users with the manage_woocommerce capability — typically WordPress Administrators and WooCommerce Managers. The REST API endpoints enforce the same capability check on every request.
Detection queries use optimised SQL and run only when you click Scan — they are never triggered automatically or on page load. For very large catalogues (10,000+ products), the scan may take a few seconds but will not affect your store’s frontend performance.
No. The duplicate detector filters for post_status = 'publish' only. Drafts, pending, private, and trashed products are never included in scan results.
Yes. A dedicated RTL stylesheet (index-rtl.css) is included and loaded automatically for right-to-left languages.
Yes. The plugin functions on Multisite installations when activated per-site.
Plugin details
Tags on WordPress.org
