Rebuilding a site — new framework, new CMS, new folder structure — almost always means the URLs change too. Here's a practical checklist for converting old titles into new slugs in bulk, without silently colliding with a reserved route or losing search rankings to an unmapped 404.
A migration touches every URL on a site at once, which is a very different problem from cleaning up a single slug when publishing one new post. If you convert titles one at a time as you go, it's easy to miss that "Getting Started" and "Getting Started (2026 Update)" both reduce to a name so similar the site framework treats them as a collision, or that two completely different sections both had a page literally titled "Overview."
Practical scenario: imagine migrating a documentation site with a spreadsheet of 40 old page titles pulled from the CMS export. Pasting that whole list into a bulk slug generator at once — rather than converting titles individually while rebuilding each page — surfaces every duplicate collision up front, with automatic -2, -3 suffixes applied consistently, so the new sitemap can be reviewed as a whole before a single redirect rule is written.
admin, api, login, category, tag, or static-asset folders such as assets or static. A page slug that happens to match one of these can shadow a real route or quietly break navigation.
This is a specific, and specifically annoying, migration failure mode: everything works locally, then one content page named exactly admin or feed goes live and starts fighting with a system route for the same path. It's rarely caught in a manual review because the slug itself looks perfectly reasonable — the collision only shows up once both routes exist in the same app.
/api to explain their public API pricing. Checking that candidate slug against a reserved-word list flags it as a likely framework route before launch, giving the team a chance to rename it to something like /api-pricing instead of discovering the conflict in production.During a rebuild it's common to take the same page title and derive several different identifiers from it: top-10-coffee-makers as the URL, topTenCoffeeMakers as a component prop, TOP_10_COFFEE_MAKERS as a constant key, and top_10_coffee_makers as a database slug column. Doing that conversion by hand for dozens of pages is tedious and error-prone — a naming-case tool that shows kebab-case, snake_case, camelCase, PascalCase, and a few others side by side for the same input saves that manual step.
| Convention | Typical use | Example |
|---|---|---|
| kebab-case | URL slug | top-10-coffee-makers |
| snake_case | Database column / config key | top_10_coffee_makers |
| camelCase | JS variable / component prop | top10CoffeeMakers |
| PascalCase | Component file name | Top10CoffeeMakers |
| CONSTANT_CASE | Environment / constant key | TOP_10_COFFEE_MAKERS |
.htaccess block, an Nginx map, or your framework's redirect config — before the new site goes live.
The riskiest part of any URL migration isn't generating the new slugs — it's making sure every old address that search engines or external links already know about still resolves to something, via a 301, instead of a 404. Having the old-title-to-new-slug pairs available as a plain CSV makes it straightforward to hand that list to whoever owns the server config, or to paste it directly into a spreadsheet for a final review pass before launch.
It's worth treating this step as non-optional even for pages that seem low-traffic. A page that ranks for a long-tail query you're not tracking closely can still lose that ranking permanently if its old URL starts returning a 404 with no redirect in place.
Paste your full batch of old titles or URLs and generate every new slug at once — bulk mode, reserved-word checking, and naming-case conversion, all in one free browser tool.
Try the free Slug Generator →