30%
OFFLimited time
Make sure your store is healthy and ready forGet your store ready for Black Friday
Catalog Health Scanner for WooCommerce
Use code at checkout
Get 30% Off

Slugs Manager: Delete Old Permalinks from WordPress Database

WordPress Plugin
4.5
15 Reviews
v2.9.0
Updated 6 days ago
4,500+
Sites Live
why your new URL has a -2 at the end ↓

Delete the old slug. Reclaim your clean URL.

You renamed a post and WordPress saved the new one as /your-slug-2/. That extra -2 is there because the old slug is still locked in wp_postmeta. Slugs Manager scans every stale row, deletes them, and frees the clean URL you actually wanted, in bulk or on a schedule. $49.99/yr or $149 once.

14-day refund
Manual + auto cleanup
Multisite-ready
three things WordPress quietly does wrong ↓

The "-2" in your URL. And the bloat behind it.

Every time you fix a typo, change a title, or rename a product, WordPress writes the old URL into wp_postmeta with the key _wp_old_slug and never cleans it up. That's why your new URL ends in -2, why wp_postmeta keeps growing, and why the standard "fix" is a risky phpMyAdmin DELETE. Three problems, one missing tool.

problem · 1

Why does WordPress keep adding "-2" to my URL?

📝 You wanted/spring-sale/✕ slug locked
⚠️ WordPress saved/spring-sale-2/✕ ugly URL
🗄️ Reason_wp_old_slug✕ holding /spring-sale/

You renamed a post once a year ago. WordPress kept the old slug as a redirect and now refuses to let any new post reuse it without slapping -2 on the end. Delete the row and you get the clean URL back.

problem · 2

Yoast and Rank Math manage redirects, not the rows.

SEO plugin · what it touches
✕ wp_postmeta old-slug rows
✕ no scan, no list, no purge
✓ 301 redirect table only
→ rows stay forever

Both leading SEO plugins write their own redirect tables and leave wp_postmeta alone. The data WordPress added is still there, year after year, in every backup and every migration.

problem · 3

The phpMyAdmin DELETE that goes wrong at 2am.

DELETE FROM wp_postmeta3,217 rows→ no preview, no undo
WHERE meta_key = ...no filter→ takes every site
No backup takensingle shot→ irreversible
one wrong WHERE clause · whole table gone

The internet's standard advice is to fire a raw DELETE in phpMyAdmin. It works until it does not. One forgotten WHERE clause and you are restoring from backup at 3am explaining to a client what happened.

eight controls you'll use ↓

Scan. Delete. Schedule. Forget about it.

The plugin does four jobs well: scan the wp_postmeta table for old slugs, list every one with post context, delete selectively or in bulk, and schedule the cleanup so the table never bloats again. Plus regenerate-from-title, on-save triggers, WooCommerce + WPML + multisite support.

list · with post context

Every old slug, with the post it belongs to.

Every row shows the old slug, the current slug, post title, and post type. You see exactly what you are about to remove before you click.

mode · manual or automatic

Two modes, your call.

Run the first cleanup manually so you see the scale of the problem. Then switch to automatic so it never builds up again.

schedule · 5 frequencies

Cleanup intervals you control.

WP-Cron handles the trigger. Five preset frequencies in the dropdown. Or set a custom interval via the alg_sm_cron_interval filter.

reclaim · clean URLs

Drop the "-2" from every URL WordPress slapped it on.

Delete the row holding the old slug and WordPress lets you save the post at the original URL again. No suffix, no compromise.

scope · every post type

Posts, pages, products, anything with a slug.

Filter the scan by post type so you can keep blog redirects while cleaning out years of seasonal product slugs in one pass.

regenerate · from title

Rebuild slugs to match titles. One click.

Bulk-rewrite every slug to match its current post title. Great after a CSV import, a translation migration, or fixing legacy IDs in URLs.

savings · postmeta shrinks

Watch the table get smaller, not bigger.

scale · network + i18n

Multisite, WPML, WooCommerce, all native.

A 50-site multisite network can run a different schedule on each install. WPML installs are scanned per language so translated redirect chains stay intact.

setup

Four steps. Cleaner database in under 5 minutes.

i · install

Activate the plugin

Upload the .zip from Plugins → Add New, then activate. No setup wizard, no configuration screen to click through.

Slugs Manager: Delete Old Permalinks Active
ii · scan

Open Tools → Slugs Manager

The scan finds every _wp_old_slug row in the database and lists them with post title, current slug, post type, and ID. No SQL required.

total old slugs 3,217
scan time 2.4s
iii · delete

Select what to remove

Tick individual rows, filter by post type, or hit "Remove all". Pro version remembers the filters between sessions.

All posts (1,841)✓ selected
All products (1,294)✓ selected
Pages (82)skip
iv · automate

Set a schedule (Pro)

Pick a frequency in the dropdown - minute, hourly, twice daily, daily, or weekly. Or toggle clean-on-save so it fires on every Update click.

how we stack up

Other plugins manage redirects. We delete the rows.

WordPress core
free · no cleanup
Yoast SEO Premium
$118.80/yr · no lifetime
Permalink Manager Pro
$79/yr · $149 lifetime
WPFactory
$49.99/yr · $149 once
core: cleaning the wp_postmeta table
Scan database for _wp_old_slug rows✕✕✕
List every stale slug with post context✕✕✕
Delete old slugs from the database✕✕✕
Selective or bulk deletion✕✕✕
automation
Scheduled cleanup (minute · hourly · daily · weekly)✕✕✕
Clean-on-save trigger✕✕✕
Regenerate slugs from post title✕✕manual per-post
Flush rewrite rules tool✕✕✓
redirect handling
Auto 301 from old slug to new (core behaviour)✓✓✓
Edit or remove individual redirects✕✓✓
404 monitor✕✓✕
scope & compatibility
WooCommerce products + variations-✓✓
WPML / Polylang per-language scan✕✓✓
Multisite per-site schedule✕not specifiednot specified
pricing & ownership
Free version on .org-✓ SEO only✓ Lite
Lifetime tier-✕✓ $149 · 1 site
Multi-store licensing-1 site / license1-2 sites
10-year cost$0$1,188$149
50+ plugins (All Access)-✕✕
Ready to clean every old slug WordPress left behind? ↓ Jump to pricing
scroll →
three real sites ↓

Three teams. Three cleanup strategies.

news site · hourly cleanup

News publisher · "Fixing typos shouldn't bloat the DB."

A national news site publishes 40+ posts a day. Editors fix headlines on the fly, which writes a new _wp_old_slug row every time. After 18 months they had 94,000 of them. Slugs Manager scanned them all, deleted in one pass, and now runs hourly so the table never grows again.

SetupManual first-pass · then hourly cron
Cleaned94,000 rows in 6 seconds
SEOYoast handles redirects · cleanup never touches them

Daily backups dropped from 1.2 GB to 940 MB. The wp-admin Posts list now loads in 0.4s instead of 2.1s.

multisite · 50 sites · per-site

Agency network · "One plugin. 50 client sites."

A WordPress agency runs 50 client sites on a single multisite network. Every client has different content velocity. Slugs Manager activates network-wide, each subsite picks its own schedule (news clients hourly, brochure sites monthly), and the network admin sees a roll-up of stale rows across the whole install.

Network50 subsites · 1 license · unlimited
CadencePer-site override · network defaults
MaintenanceDown from 4 hours/quarter to zero

Agency stopped charging clients for "database cleanup" hours. Plugin paid for itself in the first month.

verified reviews

From sites running this right now.

Using the plugin? Leave a review on WordPress.org.

"Great plugin and really great Service! I needed some support and I was kindly helped, almost directly with best results I could wish for."
T
Tiny Kanters
verified user · WordPress.org
see review →
"Does exactly what it says. Scanned a 6-year-old blog and surfaced 47,000 stale rows in seconds. One click, gone. Backup file 18% smaller."
A
Verified buyer
verified · multisite
see review →
"Scheduled hourly cleanup is the killer feature. We push 60 posts/day and editors rename headlines constantly. Set once, never thought about it again."
N
Verified buyer
verified · Pro user
see review →
tested with

Works with every WordPress stack you've already got.

Platform

WP 5.0+WP 6.9PHP 7.4+PHP 8.3MultisiteWP-CLI

Content types

PostsPagesWC productsVariationsCategoriesTagsCustom CPT

Multilingual

WPMLPolylangTranslatePressper-language scan

SEO & redirects

Yoast SEORank MathRedirectionAll in One SEOSEOPress
why this plugin

Built for sites where renames happen all the time.

Every WPFactory plugin ships with the same eight guarantees. Here's what running this one looks like in practice.

Clean code, reviewed

One scan query, one delete query, batched. No extra tables. Scheduled tasks run via native WP-Cron, never via long-running PHP requests.

Docs & specs, written

Every filter is documented (alg_sm_scan_post_types, alg_sm_cron_interval, alg_sm_after_delete). Read the docs here.

Support that ships

Email-only at [email protected]. See Tiny's review: a real bug report became a release within days. Pro plans skip the queue.

14-day money-back

14-day refund on yearly and lifetime, 30 days on All Access, no questions asked. If the scan does not surface what you expected, support helps; if it still does not fit, you walk away whole.

Bundle savings, real

All Access is $499 once for all 50+ plugins, lifetime, unlimited sites, and it includes every plugin we release later. Three lifetime licenses at $199 already cost $597, so the bundle usually wins by your third plugin.

Updates, regularly

Tested against the latest WordPress and PHP within days of every release. Plays nicely with WP 6.9, PHP 8.3, and the upcoming WP 7.0 changes to rewrite rules.

Plays well with others

Compatible with Yoast, Rank Math, Redirection, All in One SEO, SEOPress, WPML, Polylang, WooCommerce. The cleanup is scoped to wp_postmeta so it never collides with their redirect tables.

Designed for site owners

You do not need to touch phpMyAdmin or write SQL. Open Tools → Slugs Manager, scan, pick what to remove, click delete. Pro adds the schedule dropdown and that is the entire learning curve.

12 sites joined this week·4 in the last 24h
if you're going to keep this plugin a while ↓

Three tiers. Pick once.

14-day refund on yearly and lifetime, 30 days on All Access. Lifetime pays for itself by year 3. All Access pays for itself with any 2nd plugin you'd ever use. Yearly auto-renew can be turned off in your account.

SLUGS MANAGER PRO
$149 once

Buy once. Owns itself by year 3. Use on every site you own.

  • Unlimited sites
  • Lifetime updates
  • Priority email support
  • 14-day refund
  • GPL-licensed · use on client sites
Buy Lifetime - $149 once
★ SMART MOVE ALL ACCESS · LIFETIME
$999$499oncesave 50%

This plugin + 49 others, lifetime updates, unlimited sites - for $300 more than Lifetime alone.

! Buying any 3 single lifetimes?
$597 → $499 / 50+
  • 50+ plugins, lifetime updates
  • Unlimited sites - every plugin
  • Future plugins included free, forever
  • Lifetime priority support
  • Pays back at 5th plugin you'd use
Explore All Access
Why does my WordPress URL have "-2" at the end?
Because the original slug is still locked in the wp_postmeta table under the meta_key _wp_old_slug. WordPress refuses to let any new post reuse a slug it has already recorded as an old one, so it appends -2 (or -3, -4) instead. Delete the row and the original slug is free again. That is exactly what Slugs Manager does, without you touching SQL.
What exactly does this plugin delete?
It removes the _wp_old_slug postmeta entries WordPress writes every time you rename a post, page, or product. Those rows accumulate forever by default. Slugs Manager scans them, shows you the list, and lets you delete in bulk, individually, or on a schedule. The published post itself is untouched.
Is it safe? Will it break my SEO?
Safe for the post. Removing _wp_old_slug rows does not unpublish or rename anything. The only caveat is the built-in WordPress 301 redirect from the old URL stops working once you delete that meta. Keep redirects elsewhere (Rank Math, Yoast, Redirection plugin) if the old URLs already have inbound links you want to preserve.
How is this different from a redirect plugin?
Yoast and Rank Math manage the redirect AFTER a slug changes. They never clean the wp_postmeta row that WordPress wrote. Over 5 years a high-publishing site can carry tens of thousands of those rows. Slugs Manager is the only plugin that surfaces them, lets you decide, and deletes.
What is automatic cleanup?
Pro feature. Schedule the cleanup every minute, hour, twice daily, daily, or weekly via WP-Cron. Also a separate trigger: clean every time a post is saved or updated. Set it once and never think about old slugs again.
Does it work with WooCommerce products?
Yes. Products, variations, categories, tags - any taxonomy or post type that uses slugs. A store that renames products often (seasonal SKUs, A/B tested titles, supplier code changes) accumulates the most old slugs of any WordPress site.
What does regenerate slugs from title do?
Pro feature. One click rebuilds the current slug to match the post title. Useful after a bulk title fix, a translation migration, or when you imported posts and the slugs do not reflect the titles.
Does it support WPML and Polylang?
Yes. Multilingual installs accumulate old slugs in every translated copy. The scanner surfaces them per language and the cleanup runs per translation, so you do not lose the translated redirect chain you wanted to keep.
Will it slow my site?
No. Scans run on demand or on a cron schedule, not on every page load. Frontend traffic never touches the plugin. Deleting old slug rows actually speeds up WordPress because it shrinks wp_postmeta and reduces query overhead on saves and rewrite rules.
Does it work on WordPress Multisite?
Yes. Activated network-wide or per site. Each site keeps its own scan results and schedule, so a 50-site network can clean every install on its own cadence.
What is the refund policy?
14 days on the yearly and lifetime plans; 30 days on All Access. No questions asked. The yearly plan also includes an upgrade credit toward Lifetime or All Access. Lifetime never renews. Yearly auto-renew can be turned off in your account.
Is there a free version?
Yes. The free version on WordPress.org scans the database and deletes all old slugs in one click. The Pro version adds selective deletion, scheduled cleanups (minute, hourly, daily, weekly), clean-on-save, regenerate slugs from title, and priority email support.
How often should I run a cleanup?
Depends on how often you rename posts. A news site that fixes typos several times a day benefits from clean-on-save. A WooCommerce store with seasonal SKUs runs a weekly cleanup. A static blog can cleanup once a quarter manually.
if you've scrolled this far ↓

Drop the "-2" from every URL. Clean the table WordPress forgot.

Scan every _wp_old_slug row in wp_postmeta. Reclaim the clean URL WordPress wouldn't give you. Delete selectively or in bulk. Schedule automatic cleanups every minute, hour, day, or week. Clean on save_post. Regenerate slugs from titles. WooCommerce, WPML, multisite native. 4,500+ sites already running it. 14-day refund if it's not for you.

4,500+ stores · 4.5★ across 15 reviews · WordPress.org plugin · 14-day refund