← Back to blog
Our WordPress plugins
August 31, 2026

WPML Bulk Delete Translations Safely: Database Backup, SQL, and WP-CLI Methods

WPML Bulk Delete Translations Safely: Database Backup, SQL, and WP-CLI Methods

Deleting a few stray translations in WPML is simple. Deleting hundreds of them after a failed rollout, a language strategy change, or an import gone wrong can turn into a database-level cleanup with consequences far beyond the posts you can see in the editor.

A wpml bulk delete translations operation can affect translated posts, taxonomy terms, media attachments, translation jobs, and the language relationships that tie everything together. The tempting shortcut is to run a quick SQL query and move on—but one missed relationship can leave a site looking clean while its multilingual data is anything but.

That does not mean a reset is impossible. It means the safest path starts before anything is deleted: a staging copy, a verified backup, and a clear understanding of exactly what WPML has stored. Once those safeguards are in place, bulk cleanup becomes a controlled maintenance task rather than a costly recovery job.

Before You Bulk Delete WPML Translations: What to Check

How to Bulk Delete WPML Translations

Back Up the Database and Test on a Staging Site First

A mistaken deletion in WPML rarely affects just one screen. Translation relationships, language metadata, jobs, and copied media can all sit in the same database, which makes a casual “cleanup” risky. Before you run SQL, WP-CLI, or any bulk action, create a full, restorable database backup—not merely a hosting snapshot you have never tested.

Verify that you can restore that backup to a separate environment. Then clone the production site to staging and perform the planned deletion there first. Check the front end in every remaining language, review WPML’s Translation Management screens, and confirm that the original-language posts still open normally. WordPress revisions are useful for restoring post content, but they are not a replacement for a database backup; they do not reliably restore WPML relationship tables, translation jobs, or related settings.

Identify the Original Language and Translation Scope

WPML does not treat every translated item as an isolated post. It links posts, pages, custom post types, taxonomy terms, and often media through translation groups. Within each group, one item is the original and the others are translations. Deleting the wrong side of that relationship can leave a site with missing primary content or confusing language assignments.

Start by confirming the site’s default language in WPML and inspecting several representative translation groups. Do not assume English is the original language simply because it is the administrative language or has the most content.

  • Target languages to remove, such as German and Italian while retaining English and French
  • Content types in scope: posts, pages, products, portfolio items, templates, or other custom post types
  • Related taxonomies, including translated categories, tags, product attributes, and terms
  • Whether media translations or duplicated attachments are included

This written scope is the safety net for a wpml bulk delete translations operation. “Delete Spanish” is not precise enough if Spanish products should go but Spanish legal pages must remain.

Review Translation Jobs, String Translations, and Media Separately

Published translated posts are only one layer of WPML data. Translation Management may still contain in-progress, cancelled, or completed translation jobs tied to content you intend to remove. Those jobs need their own review; deleting a translated post does not automatically guarantee that every related workflow record disappears.

Also separate interface text from editorial content. WPML String Translation can hold translated theme, plugin, WooCommerce, and custom-field strings that have no corresponding post to delete. Removing French pages, for example, will not necessarily remove French checkout labels or plugin messages.

Finally, inspect media. Depending on the site’s WPML media settings, attachments may be duplicated per language or share original files with translated titles, captions, and alt text. Decide whether you are removing translated metadata, duplicate attachment records, or neither. Treating these as separate cleanup passes makes the result easier to test—and far easier to reverse if staging exposes a problem.

How to Bulk Delete WPML Translations

Option 1: Delete Translated Posts from the WordPress Admin

The safest way to handle a small cleanup is also the least glamorous: delete translations through WordPress itself. In the relevant post list, use WPML’s language filter to show only the target language, select the translated posts, and move them to Trash. This route matters because WordPress and WPML can run their normal cleanup routines rather than leaving disconnected records behind.

Do not empty the Trash immediately. First, check the original-language posts, front-end language URLs, and WPML’s translation status to confirm that only the intended versions disappeared. Once validated, permanently delete the trashed items. Repeat the process for each custom post type, such as products or portfolio entries, and review translated taxonomy terms separately if categories, tags, or product attributes were translated.

Option 2: Use WP-CLI for Large, Repeatable Deletions

For an agency removing hundreds or thousands of translations, WP-CLI is usually the practical middle ground. Start by generating and exporting a list of post IDs for one post type and one target language. Review that list in a spreadsheet or staging log before anything is deleted. A mistaken language filter can turn a cleanup into an outage remarkably quickly.

After approval, pass the reviewed IDs to WordPress-aware deletion commands, such as wp post delete, rather than deleting database rows directly. Process IDs in manageable batches to avoid PHP memory limits, shell limits, or server timeouts. Treat the initial list as a dry run: compare its count against WPML’s translation totals, test a small batch on staging, then run the complete job. This makes wpml bulk delete translations work repeatable without bypassing hooks that may clean up metadata, relationships, and caches.

Option 3: Remove Translation Records with SQL Only When Necessary

Direct SQL is a recovery tool, not the default bulk-delete method. It can be appropriate when a failed import, interrupted migration, or abandoned translation job has left orphaned WPML records, or when an experienced administrator is resetting a controlled environment. It is not safe to paste a generic destructive query from a forum into production.

First inspect the site’s actual table prefix and WPML translation-related tables, including the records that map element IDs, languages, translation groups, and jobs. Queries must be narrowly targeted by language and element type; a post, a taxonomy term, and a translation job do not share the same cleanup path. Run the exact query on staging first, verify affected row counts, and plan associated post and job cleanup before touching production. Take a database backup immediately beforehand. SQL is powerful precisely because it skips WordPress safeguards, so it should be the final option—not the fast option.

Validate the Cleanup and Rebuild Your Translation Workflow

Check Content, Language Switchers, and Front-End URLs

A successful deletion is not proven by an empty translation list. It is proven when the original content still works exactly as it did before. After a wpml bulk delete translations operation, open a representative sample of source posts, pages, products, and custom post types in the WordPress editor. Confirm that their titles, bodies, taxonomies, featured images, and SEO fields remain intact.

  • Visit former target-language URLs and confirm they return an appropriate 404 or redirect, rather than stale translated content.
  • Test the language switcher on several source pages. It should not link to removed translations or offer misleading language variants.
  • Review translated archives, menus, product-category pages, and internal links for empty entries or broken destinations.
  • Inspect page source or an SEO tool to confirm obsolete hreflang references are no longer emitted.

Check both logged-in and logged-out views. WordPress can make a deleted relationship look alive when a cache is involved.

Clear Caches and Run WPML Troubleshooting Tools

Clear caches only after the database changes are complete and backed up: page-cache plugins, persistent object caches such as Redis, CDN caches, and any SEO-plugin cache that stores sitemap or metadata output. Then revisit the affected URLs in a private browser window. This avoids browser cookies, cached redirects, and your administrator session disguising a front-end problem.

WPML’s troubleshooting area can help repair stale language information and translation relationships, but treat its cleanup actions as maintenance tools, not a substitute for a verified backup. Run the narrowest relevant option first, review the result, and retest a small set of posts before applying additional fixes. A broad “fix” command after aggressive SQL deletion can create a second problem if it rebuilds relationships you intended to remove.

Create Future Translations with a Controlled Process

The usual cause of a repeat cleanup is not WPML itself; it is an undocumented workflow. Assign ownership of the source language, define which post statuses may be translated, and record whether translations are drafts, in review, or published. For agencies, visible status prevents two editors from creating competing language versions of the same page.

Before translating 200 posts, run a batch of five to ten. Check formatting, SEO fields, slugs, custom fields, and language-switcher behavior, then scale up only when that sample passes. Keep a rollback point before each large batch and export a list of affected post IDs.

For sites already using WPML: LATW AI Translator for WPML is an add-on that translates page and post content inside WPML’s existing workflow using the site’s own provider API key. It requires an active WPML installation; it does not replace WPML and does not perform translation deletion.

Make Cleanup a Controlled Change

A successful WPML bulk delete translations task is not measured by how many records disappear; it is measured by whether the remaining site still has coherent relationships, correct language URLs, and search signals that match what visitors can actually access. Define exactly which translations, jobs, and language pairs are in scope, take a verified backup, and rehearse the process on staging before touching production. Prefer WPML’s own controls or WordPress-aware automation whenever they can do the job, and treat direct SQL as a carefully reviewed exception rather than a shortcut.

Before you close the ticket, test the result from both sides: inspect the relevant database relationships and browse the public site in every affected language, checking switchers, redirects, hreflang, canonicals, sitemaps, and translated URLs. Delete only what you can verify—and verify everything that deletion can change.

Our WordPress plugins
Translate your WordPress site with AI
Pick the LATW plugin that fits how your site is built - a complete standalone multilingual system, or drop-in AI translation for the setup you already run.
LATW for WPML Add-on for WPML
LATW for WPML
Translate posts, pages, custom fields, builder content and strings 1400× cheaper than WPML's Automatic Translation - billed to your own API key.
Works with everything WPML supports
Gutenberg, WooCommerce, Elementor, Bricks
Yoast & Rank Math SEO fields
Read more →
LATW Multilingual Standalone
LATW Multilingual
Language switcher, clean URLs and full multilingual SEO in one package - no WPML or Polylang required. Pro adds AI translation on six engines.
Standalone - no WPML or Polylang needed
Switcher, clean URLs & full hreflang SEO
Free bilingual site; Pro adds AI translation
Read more →
← Back to blog