Skip to content
AI-powered · free

Slug Generator

Single or bulk slugs — paste titles, get clean slugs, export CSV.

A slug is the URL-safe version of a title or heading. This slug generator takes a list of titles, one per line, and converts all of them into clean slugs in one run. Pick your case convention, separator character, and max length. The tool detects collisions, exports as CSV, and handles accents and special characters automatically.

60

Generate the whole content, not just check it.

BlazeHive writes SEO articles end to end from a single keyword. Outline, draft, meta, schema, internal links. Free trial, no card.

Start with BlazeHive Free trial

What a slug generator does

A slug generator batch-processes text into URL-compatible strings. It lowercases letters unless you choose a different case convention, replaces spaces with hyphens or underscores, strips punctuation that breaks URLs, and transliterates accented characters into ASCII equivalents.

The output is a list of slugs that match your input list one-to-one. If you paste 50 blog post titles, you get 50 slugs back. If two titles produce the same slug, the tool flags the collision and appends a number to the second one so every slug is unique.

Case conventions supported are kebab-case (lowercase with hyphens), snake_case (lowercase with underscores), camelCase (first word lowercase, subsequent words capitalized, no separator), and PascalCase (every word capitalized, no separator). Kebab-case is the default and the most SEO-friendly because hyphens act as word separators in URLs while underscores and lack of separation do not.

Separator options are dash, underscore, or none. Dash is standard for web URLs. Underscore is common in API route names and database slugs. None is used for camelCase and PascalCase or when you plan to insert your own separator later.

Stopword removal is optional and works the same as in the permalink generator. Common words like "the," "of," "a," and "in" are removed to shorten the slug. A title "The Ultimate Guide to SEO" becomes ultimate-guide-seo with stopwords removed or the-ultimate-guide-to-seo with them kept.

The max-length setting truncates slugs that exceed the specified character count. Truncation happens after stopword removal and case conversion, so the tool cuts from the end of the slug and preserves the start where the most important keywords usually sit.

How to use this slug generator

  1. Paste your titles into Titles (one per line). Each line becomes one slug. You can paste from a spreadsheet column, a Notion database export, or a plain-text list.
  2. Pick Case. Choose kebab-case for web URLs, snake_case for API routes or database keys, camelCase for JavaScript variable names, or PascalCase for class names.
  3. Pick Separator. Dash is the default for kebab-case and snake_case. Choose underscore for snake_case or none for camelCase and PascalCase.
  4. Toggle Remove stopwords on if you want shorter slugs, off if readability is more important than length.
  5. Set Max length. The default is 60 characters. Increase it if your CMS or system allows longer slugs, decrease it if you need compact URLs.
  6. Hit Generate slugs. The output appears in a table with the original title in one column and the generated slug in the next. Any collisions are highlighted.
  7. Copy the output or click Download CSV to save the list as a CSV file with two columns: title and slug.

Try pasting these three titles:

The Complete Guide to Headless SEO
Best Lightweight Node Frameworks in 2026
How to Start a Podcast: A Beginner's Guide

With kebab-case, stopwords removed, and max length 60, the output is:

complete-guide-headless-seo
best-lightweight-node-frameworks-2026
start-podcast-beginners-guide

If you switch to camelCase with no separator, the output becomes:

completeGuideHeadlessSeo
bestLightweightNodeFrameworks2026
startPodcastBeginnersGuide

Why bulk slug generation matters

Bulk slug generation saves time on migrations, content imports, and multi-page launches. Manually converting 50 titles into slugs takes an hour and introduces typos. The slug generator finishes in seconds and applies the same rules consistently to every title.

Site migrations. When migrating from one CMS to another, the old CMS and new CMS often use different slug conventions. WordPress uses lowercase hyphens. Strapi uses the same. Webflow allows uppercase. Generating all slugs in the new format before import ensures that internal links do not break and that 301 redirects map correctly from old slugs to new ones.

Content imports. Importing posts from a Google Sheet or CSV requires a slug column. Most CMSes auto-generate slugs from the title, but the auto-generation does not remove stopwords, does not enforce max length, and does not detect collisions ahead of time. Pre-generating slugs in a spreadsheet and importing them alongside titles prevents surprises after publish.

Collision detection. Two different titles can produce the same slug after stopword removal and special character stripping. "Best AI Tools" and "The Best AI Tools" both become best-ai-tools. The slug generator flags the duplicate and appends -2 to the second occurrence. Catching collisions before publish avoids the scenario where the second post overwrites the first or gets a URL you did not intend.

Exporting as CSV is faster than copying from the browser. The CSV includes a header row with title and slug columns. Import it directly into your CMS, paste it into a spreadsheet for further work, or feed it into a script that updates your static site frontmatter.

Case and separator explained

Kebab-case (this-is-kebab-case) is the standard for web URLs. Lowercase keeps URLs case-insensitive, and hyphens separate words so Google reads each word individually. Use kebab-case for blog posts, product pages, and any public-facing URL.

Snake_case (this_is_snake_case) is common in API route names, database table columns, and file names. It is less common for public URLs because underscores are harder to see in underlined links. Use snake_case when your system enforces it or when you are generating identifiers for code rather than URLs.

camelCase (thisIsCamelCase) joins words without a separator and capitalizes the first letter of each word except the first. It is standard for JavaScript variable names and JSON keys. It is not URL-friendly because URLs are case-insensitive in many systems and capital letters can cause routing issues. Use camelCase when generating identifiers for code, not URLs.

PascalCase (ThisIsPascalCase) is like camelCase but capitalizes the first word too. It is standard for class names and component names in JavaScript and TypeScript. It has the same URL issues as camelCase and should not be used for web slugs.

If you choose camelCase or PascalCase, set the separator to "none." If you choose kebab-case, set the separator to dash. If you choose snake_case, set the separator to underscore. The tool enforces these conventions by default but lets you override them if you need a custom format.

Common mistakes

  • Pasting titles with line breaks inside a single title. The tool treats each line as one title. If a title spans two lines in your source document, paste it as one line or merge it before pasting. Otherwise you will get two slugs where you wanted one.
  • Forgetting to check for collisions. The tool highlights collisions in the output table. Do not skip the review step. A collision means two pages will try to claim the same URL, and one will lose. Fix the collision by editing one of the titles before you publish.
  • Using camelCase for web URLs. camelCase and PascalCase are for code, not URLs. If you generate camelCase slugs and paste them into a CMS, some systems will lowercase them and break the capitalization. Use kebab-case for anything that becomes a URL.
  • Setting max length too short. A max length of 20 characters truncates most slugs into meaninglessness. Set it to 40 at minimum, 60 as the default, and 80 if your CMS has no limits and you want to preserve full readability.
  • Not exporting the CSV. Copying from the browser works for small lists. For 50 or more slugs, download the CSV. It is faster, preserves formatting, and lets you diff against your source list to confirm nothing was dropped.

Advanced tips

  • Sort your titles alphabetically before pasting. The tool preserves input order, so sorted titles produce sorted slugs. Sorted slugs are easier to scan in the output table and easier to match against a database or CMS import log.
  • When generating slugs for a multi-language site, run the tool once per language. A Spanish title like "Guía Completa de SEO" becomes guia-completa-seo after accent transliteration. Do not mix languages in one run; it makes collision detection harder.
  • Use the collision warnings as a signal to rethink the titles. If two titles produce the same slug, they may be too similar in topic and cannibalizing each other. Consider merging them or differentiating the titles further.
  • For a one-off migration, keep both the old slug and the new slug in your CSV. Add a third column called old_slug before you paste into this tool. After generating new slugs, you have a three-column CSV mapping old to new. Use it to configure 301 redirects.
  • If your CMS enforces slug uniqueness by appending numbers automatically, turn off the tool's collision detection by ignoring the warnings. Paste the slugs as-is and let the CMS handle deduplication. This works only if the CMS appends numbers to the end and does not silently overwrite.

For single titles where you want to see a live URL preview as you type, use the permalink generator instead. It is optimized for one title at a time and shows the full URL as https://yourdomain.com/base-path/slug while you adjust settings. For generating title tags to match your slugs, the SEO title generator produces 10 title variations per keyword and includes character counts and Google SERP previews.

Generate the whole content, not just check it.

BlazeHive writes SEO articles end to end from a single keyword. Outline, draft, meta, schema, internal links. Free trial, no card.

Start with BlazeHive Free trial

Frequently Asked Questions

What is a URL slug?

A slug is the human-readable part of a URL after the domain and path. In https://yoursite.com/blog/how-to-start-a-podcast, the slug is how-to-start-a-podcast. It's the identifier your CMS uses to route the request to the right page, and the piece Google reads for keyword signals, breadcrumb display, and query matching in the SERP. Good slugs are short, lowercase, hyphen-separated, keyword-forward, and don't include stopwords, dates, or post IDs. Bad slugs look like /post?p=8472 or /the-article-about-how-to-start-a-new-podcast-in-2024-complete-guide. Our slug generator takes one title or a whole list of them, applies the rules automatically, and outputs clean slugs you can paste into any CMS without fighting the auto-sanitizer. Paste titles into Titles (one per line), pick a Case (kebab, snake, camel, Pascal), choose a Separator (dash, underscore, or none), toggle stopword removal, and export as CSV for bulk migrations or copy single slugs one at a time. The tool runs client-side for instant results.

What's the difference between a slug and a permalink?

A slug is just the identifier at the end of the URL: how-to-start-a-podcast. A permalink is the full URL including scheme, domain, and path: https://yoursite.com/blog/how-to-start-a-podcast. Slugs are portable across CMSs (they work anywhere that accepts a URL-safe string); permalinks are site-specific because they include your domain and path structure. Most writers and developers need slugs, not permalinks, because their CMS builds the surrounding URL from a template configured once and applied to every new post. Use our slug generator when you have a list of titles to convert at scale, want to export CSV for a site migration, or need consistent case formatting (kebab for URLs, camel for JSON keys, snake for filenames and database fields). Switch to our permalink generator when you need the full URL preview before publishing, or when your CMS's permalink structure varies by post type (blog vs product vs category) and you want to see the final link rendered.

How do I generate a slug from a title?

Paste one or many titles into Titles (one per line). Each title becomes a slug on its own line in the output pane. Pick a Case: kebab-case (lowercase-with-dashes, the URL standard), snake_case (lowercase_with_underscores, common in Python and filenames), camelCase (for JavaScript keys), or PascalCase (for class names and React components). Pick a Separator if kebab or snake: dash (the standard), underscore, or none. Toggle Remove stopwords to strip 'the', 'of', 'a', 'and', 'to' and tighten the slug without losing keyword weight. Move the Max length slider to cap at 60 or shorter for product pages. Hit generate. You get a clean slug per title plus a copy-all button and a CSV download for bulk use. The tool runs entirely client-side, so nothing is uploaded, and collisions (two titles producing the same slug after normalization) get flagged automatically so you can disambiguate before publishing. For full URL previews with CMS path patterns, switch to our permalink generator.

How do I generate slugs in bulk?

Paste all your titles into Titles (one per line), one title per line, and hit generate. The output appears as a two-column table: original title next to clean slug. Hit Download CSV to export the whole list for migrations, Notion imports, or CMS bulk upload. The tool handles 500 titles per run without lag because it runs entirely in your browser. If two titles produce the same slug (common: 'How to Start a Podcast' and 'How to Start a Podcast: Part 2' both trim to the same words), we flag the collision in red so you can add a suffix or regenerate with stopwords kept. For WordPress or Shopify migrations where you need the full URL including path prefix, use our permalink generator with a CMS preset instead. Bulk mode is the main reason migrators and agencies pick this tool over a single-slug generator. Export the CSV, review collisions, and import directly into your CMS.

Should slugs use dashes or underscores?

Use dashes for URL slugs. Google has said explicitly that hyphens are treated as word separators in URLs, while underscores are treated as joiners. A slug like /how-to-start-a-podcast reads to Google as the phrase 'how to start a podcast'. The slug /how_to_start_a_podcast reads as one long word 'howtostartapodcast', which kills keyword matching. Use underscores only for filenames, variable names, or systems that require them (some CMSs, some database fields, some APIs). Our generator defaults to kebab-case with dashes for a reason. Switch to snake_case only when your CMS or route pattern demands it. A few frameworks (Ruby on Rails, Django) parse both as separators internally, but the rendered URL in the SERP and share cards still reads cleaner with dashes. The readability difference matters for click-through rate: users trust clean URLs with dashes over underscored strings that look like server paths. Pick dashes unless you have a concrete technical reason not to.

How long should a slug be?

Aim for three to five words and under 60 characters. A slug like podcast-launch-checklist (24 characters, three words) outranks how-to-launch-your-first-podcast-in-2026-the-complete-guide (60-plus characters, ten words) for the same query nearly every time. Shorter slugs have higher keyword density, survive truncation in SERP snippets and share previews, and are easier to remember when typed by hand. Move the Max length slider to 60 by default. Drop to 40 for product pages or category archives where the surrounding path already carries context. Push to 80 only for long-tail informational posts where cutting any word loses the query match. Our generator truncates at word boundaries and drops stopwords first, so a 90-character title trimmed to 60 still reads cleanly. Shorter slugs also load faster in analytics dashboards, fit cleanly in social share cards, and reduce the chance of encoding errors when copied across systems. For a full on-page SEO check of the final URL, run it through our SEO checklist.

Should I remove stopwords from slugs?

Usually yes. Google ignores common stopwords ('a', 'an', 'the', 'of', 'to', 'and') when matching slugs to queries, so removing them doesn't cost you keyword relevance. It does shorten the URL, bump keyword density in the URL string, and improve readability. 'How to Start a Podcast' becomes start-podcast rather than how-to-start-a-podcast. Both rank the same for the query; the shorter one looks better in share cards. Exceptions: keep stopwords when removing them changes the meaning ('how-to' vs 'how' reads differently in breadcrumbs) or produces a collision with another slug on your site. Our tool's Remove stopwords toggle is on by default. Turn it off when you need the slug to read as a natural phrase, when translating for international SEO (stopwords matter more in some languages), or when your editorial style guide requires full-title slugs. Keeping stopwords can also help when your site's breadcrumb or URL structure appears in rich results.

Do SEO slugs affect rankings?

Yes, but lightly. Google lists the URL as a ranking factor, and keyword-forward slugs give a small but consistent boost, especially for long-tail queries where the slug exactly matches the search phrase. The larger effects are indirect: click-through rate in the SERP (readable slugs get more clicks than /p?id=8472), social share behavior (clean URLs travel better), and breadcrumb display (Google sometimes shows the slug path as a breadcrumb). A perfect slug won't save a bad page, though. Content quality, topical authority, backlinks, and page experience weigh far more. Treat the slug as free optimization: do it right once, never think about it again. Our generator produces keyword-forward slugs that check every box automatically. In competitive verticals, the cumulative effect of clean slugs across 50 or 100 pages can lift site-wide authority signals because Google sees consistent, keyword-aligned URL structures. For broader on-page SEO checks beyond the URL, run your live page through our SEO checklist for a 20-item audit.

How do I handle slug collisions when two titles match?

Slug collisions happen when two different titles produce the same slug after normalization. 'How to Start a Podcast' and 'How to Start a Podcast in 2026' both trim to start-podcast if stopwords and dates are stripped. Our generator flags collisions in red inside the output table so you catch them before publishing. Four common fixes. First, keep one stopword: 'start-podcast' vs 'start-podcast-guide'. Second, add a disambiguating noun: 'podcast-launch' vs 'podcast-monetization'. Third, add a year suffix (only if the post is dated content, not evergreen): 'podcast-launch' vs 'podcast-launch-2026'. Fourth, regenerate one title with stopwords kept on. Most CMSs auto-append -2 or -3 on upload when they detect a duplicate, but that's an ugly fallback. Fix it at the slug-generation step. For migrations where hundreds of slugs might collide, export the CSV and spot-check the red rows before importing. Collisions are more common on category pages and tag archives, where titles follow templates, so review those sections separately during bulk generation.

Do I need to update old slugs to improve SEO?

Only if the current slug is actively hurting you. Changing a slug on a live page requires a 301 redirect from the old URL to the new one, or every backlink, bookmark, and indexed page returns a 404 and authority bleeds out. That's expensive. Only change a slug when the current one is genuinely broken: contains a typo, includes a date that ages the post, has a wrong keyword, or is so long it gets truncated in SERPs. Don't change slugs for cosmetic reasons. If you do change one, add the 301 redirect first (before the new slug goes live), then publish, then resubmit the sitemap in Search Console. For bulk slug migrations during a site replatform, export the old-to-new mapping from our tool as CSV, feed it into your CMS's redirect manager, and test three sample URLs before flipping DNS. Our permalink generator handles the full URL preview for migrations.

Related free tools

All tools →