Slug Generator

CSV in · slugs + 301 rules out

Bulk CSV Slug Generator

Upload a spreadsheet of page titles and download it back with clean slug and URL columns. Add an old-URL column to get 301 redirect rules for Apache, Nginx or Cloudflare.

  • 100% in your browser
  • Zero upload: your text and files never leave your device
  • No row limit

1. Load your CSV

5 rows · 3 columns · delimiter "," · processed in your browser

Slug options

Separator & caseHyphen - · lowercase

Separator

TransliterationASCII
LengthNo limit

Limits cut only at word boundaries, so a word is never split in half.

Stop wordsOff
aantheandorbutinonattoforwithbyfrom
SymbolsTo words
Base URLOptional

Preview the full page address under each slug.

2. Preview & download

#titleold_urlslugurl
1Crème Brûlée & Café: The Complete Guide/blog/post?id=101creme-brulee-and-cafe-the-complete-guide/creme-brulee-and-cafe-the-complete-guide
210 Tips for Writing SEO-Friendly URLs/blog/post?id=10210-tips-for-writing-seo-friendly-urls/10-tips-for-writing-seo-friendly-urls
3Straße, Ärger und Übermut/blog/post?id=103strasse-arger-und-ubermut/strasse-arger-und-ubermut
410 Tips for Writing SEO-Friendly URLs/blog/post?id=10410-tips-for-writing-seo-friendly-urls-2/10-tips-for-writing-seo-friendly-urls-2
5Multi-line title cell/blog/post?id=105multi-line-title-cell/multi-line-title-cell

3. 301 redirect rules

redirects.htaccessApache .htaccess
RewriteEngine On
RewriteCond %{QUERY_STRING} ^id=101$
RewriteRule ^blog/post$ /creme-brulee-and-cafe-the-complete-guide? [R=301,L]
RewriteCond %{QUERY_STRING} ^id=102$
RewriteRule ^blog/post$ /10-tips-for-writing-seo-friendly-urls? [R=301,L]
RewriteCond %{QUERY_STRING} ^id=103$
RewriteRule ^blog/post$ /strasse-arger-und-ubermut? [R=301,L]
RewriteCond %{QUERY_STRING} ^id=104$
RewriteRule ^blog/post$ /10-tips-for-writing-seo-friendly-urls-2? [R=301,L]
RewriteCond %{QUERY_STRING} ^id=105$
RewriteRule ^blog/post$ /multi-line-title-cell? [R=301,L]

Tip: set a Base URL in the options to get absolute target URLs.

Upload a CSV of page titles and this bulk URL slug generator adds a clean slug and full URL to every row. Select an optional old-URL column and the built-in 301 redirect generator creates redirect rules for Apache, Nginx, or Cloudflare. This bulk CSV slug generator runs entirely in your browser with JavaScript—no account, no file uploads, and no data stored on a server.

How it works

How the bulk CSV slug generator works

  1. 01LoadUpload a CSV file or paste the data. Comma, semicolon, and tab delimiters are detected automatically.
  2. 02MapChoose the column that holds your titles and, if you are migrating, the column with the old URLs.
  3. 03TuneAdjust the slug options: separator, stop words, transliteration, length limits, and base URL prefix.
  4. 04CheckKeep "Make duplicates unique" on to add -2, -3 to repeated slugs, then check the preview table.
  5. 05DownloadDownload the CSV with the new slug and url columns, and copy or download the redirect rules.

Use cases

  • Boxes moving along an arrow, for a site migration

    CMS migrations

    Moving from WordPress to another platform? Rebuild every URL and redirect the old ones in one pass.

  • A product box with a price tag, for e-commerce URLs

    Product catalogs

    Turn an exported product list into handles your store accepts.

  • A notebook and pen, for blog and CMS slugs

    Content plans

    Give a whole editorial calendar consistent slugs before anything is published.

Redirect formats explained

Apache .htaccess

Plain paths become Redirect 301 /old-path https://example.com/new-slug lines. Old URLs with a query string use RewriteCond and RewriteRule, because Redirect only matches the path.

Nginx

Each rule is a location = /old-path { return 301 ...; } block for your server block. Old URLs with a query string are matched on $request_uri instead.

Cloudflare Bulk Redirects

You get a CSV in the format a Cloudflare Bulk Redirect List imports: source URL, target URL and status 301, with no header row. Cloudflare source URLs cannot include a query string, so it is removed.

Tips for migrating URLs

  • Set the base URL prefix to your live site so redirect targets are absolute.
  • Redirect each old page to its closest new page, not to the home page.
  • Avoid chains: point old URLs straight at the final address.
  • Test a few redirects on staging before you deploy the full list.
  • Update internal links and your sitemap to the new URLs as well.

The full seven-step process is in our guide to bulk URL changes with 301 redirects.

Need to convert a quick list instead of a file? Use the URL slug generator on the home page. Already have old and new URLs? Paste them into the 301 redirect generator.

FAQ

Frequently asked questions

Which CSV files are supported?

Standard CSV with comma, semicolon or tab delimiters. Quoted fields, commas and line breaks inside quotes and a UTF-8 BOM are all handled.

Will Excel show accented characters correctly?

Yes. The downloaded CSV is UTF-8 with a BOM, which tells Excel to read it as UTF-8.

What happens to duplicate titles?

With "Make duplicates unique" on, the second copy gets -2, the third -3 and so on, skipping any slug that already exists in the list.

Do I need an old URL column?

No. It is only needed for redirect rules. Without it you still get the slug and URL columns.

Is my CSV uploaded to a server?

No. The file is read and processed entirely in your browser with JavaScript. No account is required, and your data is never uploaded or stored on a server.

How many rows can I process?

There is no fixed row limit. The preview shows the first 200 rows and the download includes every row. Very large files depend on your device's memory.

Migrating a site this week?

Load your export, map two columns and download slugs and redirects together.