Slugify Text
Turn one title or a whole list of titles into clean, URL-safe slugs, with automatic unique slugs, right in your browser.
- Free, no account
- No watermark
- No usage limit
About the Slugify Text
Slugify Text turns a title into the clean, readable tail of a URL, the part that looks like how-to-bake-bread. Paste a single headline and you get one slug. Paste a whole list, one title per line, and you get a slug for every line at once, with a trick most free tools skip: if two titles would produce the same slug, this one adds a number so every slug in the batch stays unique. That matters, because a CMS will not let two pages share a slug. It all runs in your browser as you type, nothing gets uploaded, and there is no signup.
Doing this one title at a time is fine until you have forty of them. Maybe you exported a content calendar, or you are migrating an old blog and need every post's permalink cleaned up. Slugging them by hand means lowercasing, swapping spaces for hyphens, pulling out apostrophes and ampersands, then squinting to catch the two that collided. Drop the list in here instead, or drag in a text file, and it handles all of that in one pass.
Two switches are worth knowing before you start. Remove stop words strips filler like a, the, of, and to so the slug keeps only the words that carry meaning. Max words caps the count, so a twelve word headline can come out as a tight three word slug. Both are off by default, so the plain behavior stays predictable until you ask for more.
How to use
- Type or paste your title. For a batch, put one title per line. The slugs update on every keystroke.
- Pull in a list if you have one. Hit Load file to pick a .txt or .csv, or drag the file straight into the box. Pasting a copied list works the same way.
- Pick a separator. Hyphen is the web standard and the right default for almost everything. Underscore is there for the rare filename or system that specifically wants one.
- Set the options. Keep Lowercase on for normal URLs. Turn on Remove stop words or set a Max words limit for shorter slugs. Leave Unique slugs on so a batch never repeats a name.
- Copy the result. A single title gives you a Copy slug button. A list gives you Copy all and a Download .txt button, plus Clear to empty the box.
A few things happen on their own. Accented letters fold down to plain ones, so "Café Déjà" becomes cafe-deja instead of a percent-encoded mess. Symbols and punctuation are removed rather than spelled out, which is why "Rock & Roll!" comes out rock-roll and "don't" becomes dont. Spaces and underscores both count as word breaks, and repeated separators collapse to one.
Turn a messy list into unique slugs
The unique-slug part is the piece I would go out of my way for. Say your list has How to Bake Bread and How To Bake Bread! on two different lines. Both reduce to how-to-bake-bread. A basic slugifier hands you the same string twice and leaves you to catch it, which you will not until your CMS rejects the second post or, worse, quietly overwrites the first. This tool spots the clash and gives the second one how-to-bake-bread-2, the third -3, and so on. Every slug you copy out is guaranteed to stand on its own.
It also handles a sneakier case. If a title already slugs to post-2 and a separate one needs the -2 suffix, the batch check skips ahead so no name repeats. Switch the numbering off with the Unique slugs box when you want the raw slug for each title instead.
Hyphens, not underscores, and why Google cares
This is the rule people get wrong most, and it carries a real cost. Between words in a URL, use hyphens, never underscores. Google has said plainly that it reads a hyphen as a word separator and an underscore as a word joiner. So web-development registers as two words, web and development. Write it web_development and Google reads one glued token instead, closer to "webdevelopment." Someone searching web development tips matches the hyphen version cleanly and can miss the other one.
The underscore habit comes straight from code, where snake_case variable names are normal. A public web address is not a variable name. That is why the tool defaults to a hyphen and keeps underscore only for the narrow filename cases that call for it.
Keep it short and keyword-first
Aim for roughly three to five meaningful words. Short slugs read better and share better, and they survive a search result snippet without getting chopped off. The idea is to keep the words that carry the topic and drop the ones that do not, which is what Remove stop words handles. It pulls out articles and prepositions like a, the, of, in, and to, so the-ultimate-guide-to-python collapses toward python-guide. Max words takes it further by capping the count, handy when you are slugging long headlines in bulk and want them a uniform length.
Put your main keyword near the front, since earlier words carry a little more weight. Do not stuff it though. A slug like best-running-shoes-top-running-shoes reads as spam to people and search engines alike. Use the phrase once and stop. One more habit: leave dates out of any slug you plan to keep updating, or you sign up for a rename and a redirect the moment that year turns over. Dated news and event pages are the fair exception.
Accents and non-Latin scripts
Accented Latin letters flatten cleanly because each has an obvious base letter. Scripts with no Latin equivalent are a different matter. Chinese, Arabic, Japanese, Cyrillic, and emoji do not map to a through z, so the tool removes what it cannot fold rather than inventing a transliteration that might be wrong. Paste a title written entirely in one of those scripts and you get an empty result, which is expected. Feed it a romanized or English version instead. Plenty of multilingual sites keep an English slug even when the page itself is in another language, because a typeable address travels better across systems.
Changing a slug after a page is live
One rule saves more grief than any other. Once a slug is published and pulling traffic, leave it alone unless you truly have no choice. A live URL builds up value you cannot see just by looking at it. Other sites link to it, people bookmark it, and search engines have it indexed and ranked. Rename it carelessly and every one of those links points at a page that returns a 404, and the ranking value can drain away fast.
If you genuinely must change one, set up a 301 redirect from the old address to the new one at the same time. A 301 tells search engines the page moved for good and carries the ranking value across, so old links and bookmarks still land in the right place. Then update your internal links and resubmit your sitemap. Getting the slug right before you publish beats cleaning up redirects later.
Frequently asked questions
Can I turn the automatic numbering off?
Yes. Uncheck Unique slugs and every line is slugified on its own, duplicates and all. That is the right call when you want the raw slug for each individual title and plan to handle any clashes yourself, or when you are just checking what one title becomes. For a batch headed into a content system, leaving it on saves you the collision hunt later.
What file types can I load?
Plain text is the safe bet, so a .txt file with one title per line drops in perfectly. It also accepts .csv, .tsv, and .md and reads them as raw text, so a single-column export works fine. A multi-column spreadsheet brings its other columns along as text, so trim it to just the titles first.
Why is my slug coming out empty?
Nothing in the input survived the cleanup. That happens when a line is made entirely of characters the tool cannot keep, like one that is only punctuation, only emoji, or written in a non-Latin script. Add some Latin letters or numbers, or supply a romanized version of the title, and a slug will appear.
Should I fix my CMS slug by hand or start fresh here?
Either works, but pasting the raw title in here usually beats editing the CMS output by hand. Auto-generated slugs from WordPress, Shopify, or Wix tend to keep the entire headline verbatim, stop words and all. Run the title through with Remove stop words on, trim it to the keyword core, and paste the clean version back.
Does my text get uploaded or saved anywhere?
No. The whole thing runs on your own device inside the browser. Titles you type and files you drop are never sent to a server, stored, or logged, and there is no size limit because there is no upload step at all. Close the tab and it is gone, which is why a local tool is the safe choice for unreleased post titles or internal project names.
Can I keep capital letters in the slug?
Yes. Turn off Lowercase and the original case is preserved, which helps when a slug has to match a case-sensitive identifier exactly. For a normal public URL, keep it on. Some servers treat /About and /about as two different pages, and staying lowercase avoids that duplicate-page trap.