Bulk WordPress permalink and slug manager

Preview WordPress and WooCommerce permalink changes in bulk before anything is updated. Keep supported old links working, export redirects for the rest, and undo a completed run.

No account · no trial · no item limit · public GPL source.

WordPress 5.6+Supported
WooCommerceProducts supported
Free foreverNo item limit
Public sourceInspect on GitHub

Latest Free build

Downloaded SlugSync Free earlier? The build has moved on.

The installable now uses the SlugSync package and WordPress folder name. Arabic titles handled by PHP’s international transliterator no longer leave percent-encoded modifier marks inside an otherwise Latin slug. Read what changed, verify the SHA-256 before you install it, or have the next release arrive in your inbox.

Built

Inside SlugSync Free

See the complete workflow before you install

Nine current WordPress screens show each setup decision, a genuine 20-product multilingual Preview, the measured URL change summary, run history and the complete proposed-slug report.

Nine current Free workflow and report screens. Select any image to inspect the full-size interface.

What it fixes

Turn unclear WordPress permalinks into readable URLs

See how imported, temporary or outdated slugs become clear, readable permalinks based on each product, post or page title.

TitleBlue Cotton Shirt

/product/product-1423//product/blue-cotton-shirt/
Example 1 of 12
SlugSync snail mascot holding a wrench

Protect old links

Every old path stays paired with its destination

WordPress handles supported old post and product paths. SlugSync also exports a simple two-column file for pages and other paths that need explicit redirects.

Renaming a parent page also changes every page beneath it. A page's address contains its parents' slugs, so those child addresses change too — and they are not listed in the reports, which cover only the items whose own slug changed. Check what sits under anything you rename. Posts, products and other content that does not nest are unaffected.

Included with Free

Everything needed for a visible, reversible URL run

Inspect every proposed change before Apply, keep a redirect record and undo a completed run if you need to go back.

Preview every URL

See each old and proposed address side by side before anything changes. Duplicate titles are clearly marked.

Update in batches

Work through posts, pages, WooCommerce products and other public content types on your WordPress site without an item limit.

Protect old links

WordPress redirects supported old post and product paths. SlugSync exports the remaining source and destination pairs.

Download reports

Keep a record of proposed and completed changes, plus a two-column CSV for the free Redirection plugin. Reports are written to a folder with a random name, so nobody can guess their address.

Resume safely

Progress is saved between small groups. Stop controls and run locking prevent overlapping bulk updates.

Undo a run

Restore the URLs changed by one completed run without overwriting items edited afterward.

Avoid side effects

Slug writes skip the usual save hooks by default, so webhooks and integration syncs do not fire once per product and modified dates stay put. A full update that fires every hook is available when your setup needs it.

See the size of the change

Every completed preview ends with a URL change summary: how many public addresses actually change, how many WordPress will redirect on its own, how many need the redirect import, and how many targets were adjusted for a conflict. Measured counts from your own run, not a guessed SEO score.

New in this release

Transliterate WordPress slugs without changing titles

Create readable Latin permalinks from Cyrillic or Greek titles, decide how an assigned WooCommerce SKU affects a product URL, and review the exact result before Apply. Everything runs on your server without editing stored content.

Readable Latin permalinks from non-Latin titles

A Cyrillic or Greek title becomes a readable Latin slug instead of a percent-encoded address: Кофеварка becomes kofevarka. Both scripts are resolved by a map bundled with the plugin, so the same title gives the same slug on every host — not one address on a server with PHP’s international text support and a different one without it. Greek follows ELOT 743, the standard behind Greek passports and road signs, which reads vowel pairs as pairs: Παύλος becomes pavlos and Λευκάδα becomes lefkada. Where a server does provide international text support, it adds further scripts such as Chinese without changing the Cyrillic or Greek result. Arabic modifier letters produced by that optional system transliterator are removed before WordPress can percent-encode them inside an otherwise Latin slug.

Decide whether the SKU belongs in the URL

For WooCommerce products, leave the exact SKU assigned to that product out of its slug when the same value appears in the title — or add it deliberately when it does not. Matching is bounded to that product’s own SKU, so a SKU of 15 never touches 1500, and the original title is kept whenever removing the code would leave too little to read.

What you previewed is what you apply

Returning from a completed preview restores the content type and every slug-building choice, so the run you apply is the run you reviewed. The changes report names the transformation behind each proposed slug.

Transliteration is not translation. It writes the same sounds in Latin characters. It does not translate a title into English, infer a language, or contact an external service — nothing leaves your site. The visible title and the stored WooCommerce SKU are never rewritten; only the proposed URL changes. Review the preview in the language your site actually uses.

Before you run

Find out what else controls your permalinks

SlugSync changes post_name. Plenty of other plugins sit between that value and the address a visitor actually sees. The compatibility preflight reads your active plugin list locally and reports what it finds, before anything changes.

Another plugin may own the public URL

Detects Permalink Manager, Permalink Manager Pro and Custom Permalinks. These can override the native WordPress permalink, so changing a slug may not change the address visitors see. Preview first and verify several finished URLs.

Translated URLs need their own review

Detects WPML, Polylang and Polylang Pro. SlugSync processes matching WordPress posts, but it does not coordinate translation relationships or per-language URL structures. Review every language represented in the changes report.

Your redirect tool is ready for the export

Detects Redirection and points you at its import screen for SlugSync’s two-column CSV. If Yoast SEO, Yoast SEO Premium or Rank Math is active it says so, without assuming their redirect modules are switched on. SlugSync never writes into another plugin’s tables or settings.

Plan a cache purge for afterwards

Detects WP Rocket, LiteSpeed Cache, W3 Total Cache, WP Super Cache, Cloudflare, Speed Optimizer, Breeze and FlyingPress, so a stale cached page is not mistaken for a broken redirect. Purge after the run, then test old and new URLs.

Presence is evidence for a warning, not a compatibility verdict. The preflight reports only what it can see in your active plugins. Custom code, theme behaviour and server or CDN configuration still need your own review — and finding nothing is not a guarantee that nothing will conflict.

How it works

Choose, preview, then update

Preview writes nothing. Changes begin only after a separate Apply choice and confirmation.

SlugSync mascot checking a completed preview checklist
1

Choose

Select the content type and scope. Take a database backup before any bulk change.

Nothing changed
2

Preview

Inspect every old and proposed URL. Duplicate titles and warnings remain visible.

Still nothing changed
3

Update

Confirm the run, inspect the report and test representative old links before wider use.

Changes start here

Use a staging copy and current database backup before any bulk WordPress change.

Requirements and privacy

Runs on your WordPress site

Free makes no external requests and does not send SlugSync content, settings, activation or usage data.

Compatibility

WordPress 5.6 or later, tested through 7.1, and PHP 7.4 or later.

Content support

Public post types including posts, pages and WooCommerce products. Product variations are excluded.

Open source

GPL-2.0-or-later source, release notes and the SHA-256 digest are public on GitHub. A documented slug_sync_source_title filter lets an add-on rewrite a title before its slug is generated — the same hook Pro uses.

Available now: SlugSync Free is published on WordPress.org — install it via Plugins → Add New → search “SlugSync”. This site also synchronizes a ZIP from the latest public GitHub build for manual installs; verify its SHA-256 in What’s new above or on the build page, then install through Plugins → Add New → Upload Plugin.

FAQ

Changing WordPress URLs without breaking them

The questions people arrive with when a permalink change has already gone wrong, or is about to.

Will changing a permalink cost me my Google rankings?

Changing a URL is only a risk when the old address stops resolving. WordPress already redirects an old post or product path to its new one by itself, so those keep working. What it does not do is redirect an old page path, because a page’s address contains its parents’ slugs — those are the rows in the exported redirect CSV, and they need importing into a redirect plugin.

The practical order is: preview, read the URL change summary, apply, import the redirect file, then test a representative old link. SlugSync will not tell you a change is ‘safe’ — it tells you exactly how many addresses change and how many of them WordPress covers on its own.

I changed my permalinks and now everything returns a 404. What happened?

Almost always one of three things. WordPress rewrite rules need flushing — open Settings → Permalinks and save once, without changing anything. A caching plugin or CDN is still serving the old routing, so purge it and retest. Or another plugin owns the public URL and is still generating the previous address.

That last case is why SlugSync runs a compatibility preflight before you start: if Permalink Manager, Custom Permalinks, WPML or Polylang is active, it says so up front rather than leaving you to work it out from the 404s afterwards.

How do I redirect an old WordPress URL after changing its slug?

For posts and products, WordPress stores the previous slug and redirects the old address automatically — you do not have to do anything. For pages, and for anything else that needs an explicit rule, every applied run exports a two-column CSV of old path and new path, with no header row, in the format the free Redirection plugin imports directly.

SlugSync does not write into another plugin’s redirect tables. It gives you the mapping and leaves the redirect tool to you, so the two never disagree about who owns a rule.

Why does WordPress add “-2” to my slug?

Because slugs must be unique. If the address is already claimed — by existing content, by a reserved WordPress word, or by a date archive — WordPress appends a number rather than refusing to save. Two products both named “Blue Shirt” cannot both be /product/blue-shirt/.

The preview tracks slug claims across the whole run, so a collision between two items in the same batch shows up before you apply rather than as a surprise afterwards. Each adjusted row is labelled with the reason: already used, also proposed in this preview, reserved word, date archive, or altered by another plugin’s slug rule.

Can I bulk edit permalinks in WordPress without a plugin?

Only by hand through Quick Edit, one item at a time, which stops being realistic past a few dozen. The alternative is direct SQL against wp_posts, which skips the uniqueness checks, records no redirects and cannot be undone.

SlugSync builds each slug the way WordPress itself would if the item were saved with an empty slug, in resumable batches, with the old paths recorded as it goes and a full undo for the completed run.

Does SlugSync update internal links that point at the old URL?

No, and it is worth being direct about that. SlugSync changes slugs, records redirects and reports every change; it does not rewrite links embedded in your post content, menus or widgets.

The changes report gives you every old and new URL pair, which is what a search-and-replace tool needs as input. Old links continue to resolve through the redirects in the meantime, so nothing is broken while you work through them — but a redirected internal link is still a redirected link, and cleaning them up afterwards is the better end state.

Can SlugSync turn a Cyrillic or Greek title into a readable URL?

Yes, as an optional step. Кофеварка becomes kofevarka rather than a percent-encoded address. Cyrillic and Greek are resolved by a map bundled with the plugin, so the answer does not change between hosts, and Greek follows ELOT 743 — the standard used for Greek passports and road signs — which reads vowel pairs as pairs: Φίλτρου becomes filtrou, not filtroy. PHP’s international text support widens coverage to further scripts where your server provides it, without altering either of those two. When it transliterates Arabic, SlugSync removes apostrophe-like modifier letters before WordPress can leave percent-encoded fragments inside the Latin result.

This is transliteration, not translation: it writes the same sounds in Latin characters, does not attempt English, and sends nothing anywhere. Your visible titles are untouched — only the proposed slug changes.

Should a SKU be part of a WooCommerce product URL?

It depends on how customers search. A SKU that people genuinely look up — a part number, a model reference — earns its place in the address. An internal warehouse code such as 4823-BLK usually just makes the URL harder to read and share.

SlugSync Free lets you go either way: leave the product’s exact assigned SKU out of the slug when it also appears in the title, or add it in when it does not. Either way the visible product title and the stored SKU stay exactly as they are — only the URL is affected.

Preview your WordPress URL changes

Download Free, inspect every proposed address and decide when you are ready to apply.

Free forever · no trial · no item limit · public source