Deleting products one by one can quickly become frustrating when your WooCommerce catalog grows. Bulk deletion helps you clean up hundreds or thousands of products faster and with better control.
Looking to delete 500, 5,000, or even 10,000 WooCommerce products in bulk? Whether you’re cleaning up old listings, removing duplicate test listings after a bad import, or resetting your catalog for a seasonal refresh, bulk product deletion can save hours of manual work.
WooCommerce gives you multiple ways to do this, from the built-in dashboard tools to CSV-based deletion with the Product Import Export Plugin for WooCommerce, to advanced options like SQL or WP-CLI for very large stores.
In this article, we’ll walk you through three proven methods to bulk delete WooCommerce products, so you can choose the right approach based on your store size, technical comfort, and the number of products you need to remove.
Key Takeaways:
- Bulk deleting products from your WooCommerce store allows for quick removal instead of individually deleting them, saving considerable time and effort.
- Using the premium version of the Product Import Export Plugin for WooCommerce makes it easier to delete products and ensures that your store remains organized and current.
Which Method Should You Use?
Choosing the right method depends on your store’s size, your technical expertise, and the level of control you need over the deletion process.
Here’s a quick comparison to help you decide:
| Method | Best For | Difficulty | Handles 1000+ Products? | Reversible? |
|---|---|---|---|---|
| WooCommerce Bulk Actions | Small stores (<100 products) | Easy | No | Yes (moves to trash) |
| CSV via Plugin (Recommended) | Selective bulk deletion with control | Medium | Yes | No |
| SQL via phpMyAdmin | Full catalog wipe / advanced filtering | Advanced | Yes | No |
| WP-CLI | Developer workflows & automation | Advanced | Yes | No |
Before bulk deleting products in WooCommerce, it’s important to review a few precautions to avoid losing important data.
- Back up your WooCommerce store: Always create a backup before deleting products. This ensures you can restore your store if products are accidentally removed.
- Check if the products are linked to orders: Some products may be associated with previous orders. Deleting them won’t remove order records, but it may make order details harder to track.
- Consider hiding products instead of deleting them: If a product might be needed later, you can mark it as out of stock, draft, or hidden instead of permanently deleting it.
- Understand trash vs permanent deletion: Deleted products first move to the Trash, where they can be restored. Once permanently deleted from the trash, they cannot be recovered without a backup.
- Consider orphaned images — WooCommerce does NOT auto-delete media when a product is removed; flag this as something to clean up afterward
Need to bulk delete WooCommerce products? There are three ways to do it: use WooCommerce’s built-in Bulk Actions on the Products page, import a CSV file through a plugin like the Product Import Export Plugin for WooCommerce for faster, large-scale deletions, and advanced methods like SQL or WP-CLI.
Manually removing outdated, duplicate, or test products one by one is painfully slow — especially with a large catalog. Bulk deletion solves that.
Let’s look at all of them.
Method 1: Default Products Using WooCommerce Bulk Actions
WooCommerce includes a basic Bulk Actions feature that allows you to select multiple products from the Products page in your WordPress dashboard and delete them at once. For this,
- Go to Products > All Products.
- Use the checkboxes to select the products you want to delete.
- From the Bulk Actions dropdown, choose Move to Trash and click Apply.

Limitations of this method:
- Limited visibility: You can only see and select a set number of products per page, requiring manual selection across multiple pages.
- Time-consuming: Selecting and deleting products in batches can be tedious, especially if you have hundreds or thousands.
- No filters for custom conditions: You can’t easily filter products by SKU, category, stock status, or other custom fields.
Method 2: Bulk Delete WooCommerce Products Using CSV (via Import Export Plugin)
This is the most efficient and scalable method, ideal for stores with hundreds or thousands of products. Instead of manually selecting items, you can delete products in bulk using a CSV file with the help of a WooCommerce import export plugin.
One of the easiest ways to do this is to use the WooCommerce product import export plugin by WebToffee, which simplifies the process and gives you precise control over product deletion.
Why Use a CSV-Based Approach?
Using a CSV file allows you to:
- Delete thousands of products in a single operation
- Precisely control which products are removed (via ID, SKU, or filters)
- Perform repeatable bulk operations
- Avoid manual errors and save time
With a plugin like WebToffee’s, you also get advanced options such as deleting non-matching products, which is especially useful for syncing your catalog.
By leveraging a CSV file, the plugin identifies exactly which products to delete, ensuring accuracy and control over the process. This approach is especially useful when you’re dealing with variable products, outdated items, imported catalogs, or products coming from external inventory systems.
Requirements:
✅ Premium version of the Product Import Export Plugin for WooCommerce
The advanced features required for bulk deletion, including delete actions and deeper product control, are only available in the premium version. These capabilities go beyond simple imports and exports, giving you full flexibility to manage your product catalog.
✅ A properly formatted CSV file
To delete products, your CSV file must include key identifiers such as:
- Product ID
- SKU
- Or any other unique identifier
Along with these identifiers, the CSV should include a dedicated column specifying the delete action (e.g., Delete, Remove, or the exact keyword required by the plugin). During the import process, the plugin will read this action and automatically delete the matching products from your store.
How It Works
The process follows a simple workflow:
Export products → Modify CSV → Re-import with delete settings
Here’s a quick overview of what we’ll be doing:
- Export products from your store to a CSV file using the Product Import/Export Plugin.
- Edit the CSV to remove the products you no longer want on your site.
- Re-import the file using the same plugin, this time with the “Delete non-matching products from store” option enabled. This will delete all products not listed in the CSV.
Export Your Current Products into a CSV File
Now, follow the steps below to export products from your WooCommerce store.
Step 1: Install & Activate the WebToffee Product Import Export Plugin
- After purchasing the plugin, download the plugin file from My Account > Downloads.
- Go to Plugins > Add New Plugin from your WordPress dashboard and upload the plugin file.
- Install and Activate the plugin.

Step 2: Select Product as Post Type for Export
After you have installed and activated the plugin, let’s see how the export process is carried out.
- Go to – WebToffee Import Export (Pro) > Export.
- Choose the post type as Product and proceed to select the export method.

Step 3: Choose Advanced Export Method
- Now select the method for exporting the products. You will have two options: Quick export and Advanced export.
- Let’s select Advanced export and proceed to the next step.

Step 4: Filter Product Data to Export
Here, you can export specific WooCommerce products by customizing the export settings, including the number of products to export and the products, categories, or tags to include or exclude.
However, if you want to export all products, it’s best to skip these steps.

Step 5: Map and Rename Export Columns
Here, you can decide which information to export and how to organize it. You can rearrange the product fields, rename the columns, and select specific fields to appear in the output export file.
Since we have to export all the products, you can skip configuring and proceed directly to the next step. If you prefer to rename or rearrange any fields, you can do so before moving forward.

Step 6: Set Advanced Options/Batch Export of Products
In this final step, you can customize the export file name and format, as well as access advanced options like scheduling, batch exporting, and more.
- In the Delimiter drop-down, choose a separator (comma, semicolon, tab, space) that differentiates columns in the CSV file.
- Select the number of products to be exported in a single batch. By default, it’s set to 100.
- Once done, click Export to start exporting your products.

You can then download the CSV file and modify it to remove any products you no longer want on your site.
Prepare the CSV for Deletion
After exporting your product catalog, you need to edit the CSV file to specify which products should be deleted. There are two ways to do this, depending on whether you want to remove specific products or keep only certain ones.
Option 1: Delete Specific Products by Setting Status to “Trash”
Use this method when you already know which products you want to delete.
Open the exported CSV in a spreadsheet editor like Excel or Google Sheets. Remove the rows for products you want to keep so that the file contains only the products you want to delete. Then, locate the post_status column and change its value to trash for those products.
Make sure the CSV includes a unique identifier, such as ID or SKU, so the plugin can match each row with the correct product.
What it looks like in practice:
| ID | SKU | post_title | post_status |
|---|---|---|---|
| 1042 | DISC-BLK-001 | Black Widget (Discontinued) | trash |
| 1043 | DISC-BLK-002 | Black Widget v2 (Discontinued) | trash |
| 1089 | TEST-SAMPLE-01 | Test Product – Do Not Publish | trash |
When the file is imported, those products will be moved to the WooCommerce Trash. They can still be restored from Products > Trash, or permanently removed by emptying the trash.
Option 2: Keep Certain Products and Delete Everything Else
This method works best when you want to keep only a specific set of products and remove the rest.
Open the CSV and keep only the rows for products that should remain in your store. Do not change the post_status values. During import, enable the option “Delete non-matching products from store.” The plugin will compare the CSV with your store and automatically delete any products that are not listed in the file.
Example scenario: Say your store has 3,000 products. You’re switching to a new supplier, and only 1,800 products will carry forward. Rather than manually identifying and trashing the 1,200 items you’re dropping, you simply keep the 1,800 products in the CSV, enable “Delete non-matching products from store,” and import. The plugin handles the rest.
Because this method can remove large numbers of products, make sure you double-check the CSV and keep a backup before importing.
Which Option Should You Pick?
The right choice depends on which list is shorter and easier to define:
Choose Option 1 (Trash specific products) when you know exactly which products need to go. For instance, a list of SKUs from your warehouse team, a specific category of expired items, or test products with a recognizable naming pattern. This is the safer approach because it only touches the products explicitly listed in your file.
Choose Option 2 (Delete non-matching) when it’s easier to define what stays than what goes. For example, a new season’s catalog from your supplier, a post-migration cleanup, or a full inventory reset. It’s faster for large-scale removals but carries more risk if the CSV is incomplete.
Regardless of which option you choose, make sure the ID or SKU values in your CSV exactly match what’s in your WooCommerce store. A mismatched ID will cause the plugin to either skip the product or treat it as a new import, which defeats the purpose entirely.
Now let’s proceed to importing these product files.
Import Products for Bulk Deletion
Follow the steps below to import products using the same plugin and delete them in bulk from your WooCommerce store.
Step 1: Select Product as the Post Type to Import
Once you have installed the plugin,
- Go to WebToffee Import Export (Pro) and select Import.
- Select Product as the post type to import from the dropdown menu.

Step 2: Select Advanced Import Method
Here, you may select the Advanced import option and upload the CSV file you prepared earlier.

Proceed to the next step.
Step 3: Map Imported Columns to Product Data Fields
Here, you can map the CSV file to the WooCommerce data fields. Mapping is required to ensure that the column headers in the CSV file match the corresponding WooCommerce data fields.

Step 4: Set Advanced Options for Product Import
This is the final step in importing products, and here, we will configure the option to delete products in bulk.
- Choose to Update the existing products in the store.
- Then, you will find an option to Delete non-matching products from store. Enable the option to delete products from your store that are not presented in the CSV file.
- Now, click the Import/Schedule button and select Import.

After the import process is completed, the plugin will compare the products listed in your CSV file with the products currently in your WooCommerce store. Any product not included in the CSV will be automatically removed.
This ensures that only the products you intentionally keep — those present in the CSV — remain in your catalog.
Advantages of this method:
- Fast Bulk Deletion: Quickly delete large inventories with just a few steps—ideal for stores with hundreds or thousands of products.
- Targeted Control: Filter and delete by any product field, such as SKU, ID, name, or category, giving you precise control over what stays and what goes.
- No Manual Selection: No need for manual selection or scrolling through multiple pages in the dashboard.
- Up-to-Date Inventory: Keeps your product catalog up to date by automatically removing outdated or irrelevant items, helping you maintain a clean and relevant storefront.
- Error-Free Execution: Minimizes human error by using structured CSV data for deletion, ensuring accuracy.
- Automated Maintenance: Supports scheduled or repeat deletion tasks, making it perfect for ongoing store maintenance and inventory refreshes.

Method 3: Delete WooCommerce Products Via SQL or WP-CLI
This method is best suited for developers or advanced users who need full control over bulk product deletion. It allows you to remove large numbers of products quickly, but it also carries a higher risk of permanent data loss.
Important: Never run these commands directly on a live store. Always take a full database backup first, then test in a staging environment. These operations cannot be undone.
Option 1: Delete Products Using SQL
WooCommerce stores products in the WordPress database. Regular products and variations are saved in the wp_posts table using the post types product and product_variation. Product-related details, such as prices, stock, and custom fields, are stored in the wp_postmeta table.
Since product data is stored across more than one table, you need to delete the related metadata first and then delete the products.
Before deleting anything, always run a SELECT query to check which products will be affected:
SELECT ID, post_title, post_type, post_status
FROM wp_posts
WHERE post_type IN (‘product’, ‘product_variation’);
This lets you preview the products and variations that match the query.
Delete All Products and Product Variations
Use the following queries if you want to remove all WooCommerce products and variations from your store:
DELETE FROM wp_postmeta
WHERE post_id IN (
SELECT ID FROM wp_posts
WHERE post_type IN (‘product’, ‘product_variation’)
);
DELETE FROM wp_posts
WHERE post_type IN (‘product’, ‘product_variation’);
The first query removes the product metadata. The second query removes the actual product and variation entries.
Delete Only Trashed Products
For a safer first step, you can delete only products that are already in the Trash:
DELETE FROM wp_postmeta
WHERE post_id IN (
SELECT ID FROM wp_posts
WHERE post_type = ‘product’
AND post_status = ‘trash’
);
DELETE FROM wp_posts
WHERE post_type = ‘product’
AND post_status = ‘trash’;
This method is less risky because it only removes products you have already moved to Trash.
Note: These examples use the default WordPress database prefix wp_. If your site uses a custom prefix, such as mystore_, replace wp_ with your actual database prefix in all table names.
HPOS Compatibility Note
If your store uses WooCommerce 8.2 or later with High-Performance Order Storage, also known as HPOS, order data is stored in separate WooCommerce order tables instead of wp_posts.
However, this does not affect the product deletion queries above. WooCommerce products are still stored in the wp_posts table.
The important thing to remember is this: these queries are only for deleting products. If you also plan to bulk delete orders, do not use older SQL queries without checking your store’s order storage settings first.
You can check this from: WooCommerce > Settings > Advanced > Features
Option 2: Delete Products Using WP-CLI
If you have command-line access to your server, WP-CLI is one of the fastest ways to bulk delete WooCommerce products. It lets you delete products directly from the terminal without opening phpMyAdmin or using a database tool.
Before deleting anything, first run this command to preview the product IDs that will be affected:
wp post list –post_type=’product’ –format=ids
This shows the IDs of all products currently in your store.
Permanently Delete All Products
Use the following command to delete all WooCommerce products permanently:
wp post delete $(wp post list –post_type=’product’ –format=ids) –force
The –force option permanently deletes the products and skips the Trash. Use this only if you are sure you do not need to recover them later.
Move All Products to Trash
For a safer option, you can move all products to the Trash instead:
wp post delete $(wp post list –post_type=’product’ –format=ids)
Since this command does not include –force, the products are moved to Trash instead of being permanently deleted. This gives you a chance to restore them if needed.
Tip: Always back up your site before running WP-CLI delete commands, especially when working with hundreds or thousands of products.
Risks of Advanced Methods
SQL
- Permanent deletion with no undo
- Accidental removal of incorrect data
- Orphaned metadata and relationships
- Potential site issues if misused
WP-CLI
- No undo once commands are executed
- Incorrect filters can delete unintended content
- Requires command-line experience
While these methods are powerful, they are not recommended for most users. For safer and more controlled bulk deletion, the CSV method using the plugin remains the best option.
What Happens After You Delete? Post-Cleanup Tasks
Deleting your products is only half the job. WooCommerce doesn’t exactly tidy up after itself, so there are a few loose ends you’ll want to address before moving on. Skipping these steps can leave your store cluttered behind the scenes, confuse search engines, and even slow things down over time.
1. Empty the Trash
When you delete products using either method above, WooCommerce doesn’t remove them right away. They get moved to the Trash, where they sit for 30 days before WordPress auto-deletes them.
If you want them gone now and you’re sure you won’t need them back, head to Products > All Products, click the Trash tab, and hit Empty Trash.
2. Clean Up Orphaned Product Images
Here’s something that catches a lot of store owners off guard: when WooCommerce deletes a product, it does not delete the images attached to that product. Your featured images, gallery images, and variation images all stay behind in the Media Library, taking up storage and making a mess of things.
For a quick manual check, go to Media > Library, switch to list view, and click the Unattached filter. This shows you media files that aren’t linked to any post or product. A good chunk of these will be leftover product images you no longer need.
3. Clear Your Cache and Reindex
If you’re running any kind of caching, and most stores are, whether it’s through a plugin like WP Rocket, W3 Total Cache, or your hosting provider’s built-in cache, now’s the time to flush it. Cached pages may still show deleted products in category listings, search results, or related product sections until the cache refreshes.
The same goes for search. If you’re using a search plugin like SearchWP, ElasticPress, or Algolia, trigger a manual reindex after a bulk delete. Otherwise, customers might search for a product, find it in the results, click through, and land on a 404 page. Not a great experience.
Most caching and search plugins have a one-click purge or reindex button in their settings, and it only takes a moment.
4. Check Your Sitemap
Your XML sitemap is what tells Google (and other search engines) which pages exist on your site. If you’ve deleted a large batch of products, those URLs remain in the sitemap until it regenerates.
If you’re using an SEO plugin like Yoast SEO or Rank Math, the sitemap usually updates automatically. But after a large bulk delete, it’s worth forcing a refresh just to be safe.
Leaving dead URLs in your sitemap won’t crash your site, but it sends search engines on a wild goose chase and can result in a pile of crawl errors in Google Search Console over time.
5. Set Up 301 Redirects (If Needed)
This one’s easy to overlook, but it matters, especially if any of the deleted products had been around long enough to get indexed by Google or earn backlinks from other sites. When someone (or a search engine) visits a deleted product URL, they’ll get a 404 “Page Not Found” error.
The fix is to set up 301 redirects that point those old URLs to relevant pages, usually the parent category page or a similar product.
You don’t need to do this for every deleted product. Focus on the ones that actually had traffic or backlinks.
You can delete all products at once using methods like WooCommerce bulk actions, CSV import (with delete options enabled), SQL queries, or WP-CLI commands. For most users, the CSV method via a plugin is the safest and easiest approach.
No, bulk-deleted products are permanently removed unless they were moved to trash. To restore them, you’ll need a backup or previously exported CSV file.
Using a CSV file along with the premium version of the Product Import Export Plugin for WooCommerce allows you to delete multiple products at once efficiently. It’s a much faster and more efficient method than manually deleting products from the WooCommerce Products page, especially when dealing with large inventories.
Here’s how it works: First, export your products into a CSV file. Then, simply edit the file to remove any products you no longer want in your store. After that, import the file back into WooCommerce, and the plugin will automatically delete any products that aren’t listed in the CSV.
No, only products not listed in the CSV file will be deleted. The products that remain in the CSV file will remain in your store after the import process.
The bulk delete function only removes products not in the CSV file. It also removes all associated product data, such as images and descriptions, from your store.
No, existing orders will remain intact. However, the product will no longer be linked, and its details may appear as plain text in the order history.
Conclusion
This article aims to show you how to delete products in bulk via CSV in WooCommerce. There are several instances where you may need to delete products in bulk from your WooCommerce store. Deleting each product from the WooCommerce Products page can be daunting. This is why you need a plugin to make your effort easier.
The WooCommerce Product Import Export plugin mentioned in this article also has a free version with some of the basic features you’re looking for. Check out the free plugin and see if it suits your requirements.
However, if you need advanced product filtering options and bulk delete products, you’ll need to purchase the premium version.
If you have any questions, drop them in the comments section; we’ll be happy to help you.
Comments (13)
Jessica Thielke
September 1, 2024
Hallo,
leider habe ich zu spät gelesen, dass man die Produkte, die man behalten will in die CSV Liste eintragen muss.
Schön, dass ich es mit einem Produkt von 6.500 Produkten versucht habe.
LEIDER kann man den VORhang nicht abbrechen. Selbst wenn man abbrechen druckt und sogar in der Hitorie auf löschen drückt, werden im hintergrund alle Produkte weiterhin gelöst. Selbst wenn ich manuel in gelöschte Produkte gehe und versuche sie wiederherzustellen, fängt weptoffee immer und immer wieder von vorne an.
Gut dass ich ein stündliches Backup habe. Blöd nur, dass ich die Bestellungen dann auch verliere und sie manuel wieder herstellen darf.
Also diese Funktion oben ist überlst schlecht programmiert von webtoffe. Jede stink normale Plattform kann mit einem einzigen klilck die in der vorhandenen CSV Datei befindlichen Produkte löschen und muss nicht wiedersprüchliche IMPORT aussagen alleine in der Oberfläche versuchen zu verstehen.
Vielleicht kann webtoffe einfach diese simple funktion im import programmieren.
Danke
Grüße
Jessica
Hema
September 18, 2024
Hello Jessica,
Thanks for reaching out. Currently, the plugin deletes the products that are not in the CSV. We understand that your requirement is actually the inverse of this. We can help you with a customized code snippet to meet your requirement. Kindly contact customer support to get the code.
Matt Kerwick
March 6, 2024
Is there an update on the features discussed in the comments here. I need to remove a lot of products.
I would also like to know what happens to the images. We need to remove all associated images with each deleted product. How can we do this?
Hema
April 2, 2024
Hello Matt,
Thanks for reaching out. The discussed feature is not developed yet. Instead, importing the CSV file after changing the post_status column data to “trash” will be a workaround.
Note: Please make sure that the ID or SKU of the product is the same on the product page and in the CSV file.
There is another option in our pro version where user can delete the products which are in the store that are not present in the CSV file.
Ralph
March 24, 2022
“Delete non-matching products from store” option is no longer in latest version of the plugin
Alan
March 24, 2022
Hi,
The option is still present in the plugin. Can you please share the plugin version installed on your site?
Vithlesh
August 22, 2021
Hii I want to delete product when I scan QR code of product through mobile, so it should delete the product directly from woocomerce database. Is it possible? If yes, than please share its solution on my mail.
[email protected]
Mark
August 25, 2021
Hi,
You can delete certain products from the site by not including them in the CSV file and then import the CSV file with the Delete non-matching products from store option enabled so that all the products that are not in the SV file will be deleted. Please make sure that you either include ID or SKU in the CSV file and is mapped.
Kristian Brown
August 14, 2020
This is almost 100% the opposite way I’d want to remove products in bulk – by uploading all the details of the ones I want to keep?
I searched everywhere to find somewhere to help me delete products based on a list of SKUs given to me by a shop manager. In the end I’ve written some simple instructions using SQL to convert SKU’s to post_ids then clean up the post table and post_meta tables. I’ve shared it here; https://kristianbrown.co.uk/delete-woocommerce-products-using-skus/
Phil Birnie
October 22, 2020
I agree – it would be great if you could upload a CSV with a single column of SKUs and it would delete that set.
Alan
October 22, 2020
Hi,
Thank you for your valuable suggestion. We have included it in our development backlogs and will try to implement it in the upcoming releases.
Christian Brand
November 4, 2021
Is this feature already implemented? Currently this is exactly what I need 🙂
Alan
November 9, 2021
Hi,
Sorry to say that this feature is not yet implemented. Currently you can delete the products that are in the CSV file by setting the post_status as “trash” and those products will be moved to the trash.