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
- 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.
- 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.
- Pick Separator. Dash is the default for kebab-case and snake_case. Choose underscore for snake_case or none for camelCase and PascalCase.
- Toggle Remove stopwords on if you want shorter slugs, off if readability is more important than length.
- 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.
- 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.
- Copy the output or click Download CSV to save the list as a CSV file with two columns:
titleandslug.
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-seoafter 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_slugbefore 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.