DevToolbox

Slug Generator

Convert text into URL-safe slugs

Separator

Max length (no limit)

Enter text to generate a URL slug

Related tools

What is a URL slug?

A URL slug is the readable part of a web address that names a page, like my-first-post in /blog/my-first-post. This generator writes a slug from any text: it transliterates accented letters and alphabets such as Cyrillic and Greek into Latin letters, or keeps every script as written, with your choice of separator and length. Everything runs in your browser.

How a title becomes a slug

The generator writes accented letters and other alphabets in Latin letters (é becomes e, Привет becomes privet), lowercases the text, and turns every run of spaces, punctuation, and symbols into a single separator, so Node.js & Express becomes node-js-express. Apostrophes inside a word are dropped rather than splitting it (don't becomes dont), separators at the start and end are trimmed, and full-width letters such as full become full.

With a maximum length, the slug is cut after the last whole word that fits; a single word longer than the limit is cut at the limit.

Latin letters or any script

Google's URL guidance recommends using "words in your audience's language in the URL (and, if applicable, transliterated words)". Latin only, the default, transliterates accented Latin letters and alphabets such as Cyrillic, Greek, Arabic, Armenian, and Georgian, and Vietnamese letters, into a–z and 0–9. Chinese, Japanese, Korean, Thai, and some other scripts have no transliteration here, so their letters are left out, and the tool lists the ones it left out.

Any script keeps the letters of every language as written, as in Google's example https://example.com/ペパーミント. In a link, those letters are percent-encoded, and the tool shows the encoded link and its length.

Accented letters depend on the language

Some letters are written differently in Latin letters depending on the language, so the Language setting follows the rules WordPress uses for its slugs. With Any language, ä, ö, and ü become a, o, and u. German writes them ae, oe, and ue (Grüße becomes gruesse); Danish and Norwegian write æ, ø, and å as ae, oe, and aa; and Serbian and Bosnian write đ as dj.

Hyphens, underscores, and dots

Google recommends "using hyphens (-) instead of underscores (_) to separate words in your URLs, as it helps users and search engines better identify concepts in the URL." Underscores and dots are available for file names, identifiers, and systems that expect them.

Slugs and search

A readable slug helps people more than rankings. Google's SEO Starter Guide says that "the keywords in the name of the domain (or URL path) alone have hardly any effect beyond appearing in breadcrumbs", and that parts of a URL can appear as breadcrumbs in search results, where they help people decide whether a result is useful.

Lowercase slugs also avoid duplicate addresses: Google treats /APPLE and /apple as different URLs.

Keeping slugs stable

Once a page is published, its slug becomes part of a URL that people bookmark and search engines index. Changing it later breaks those links unless you add a redirect, so it's worth settling on a clear, descriptive slug up front and leaving it unchanged.

Bulk mode

Bulk mode turns each line into its own slug, one row per line, so line numbers match your text. Rows for blank lines and for lines with no letters or numbers say so, and a slug that's the same as an earlier line's is marked, since two pages can't share one URL.

How to generate a URL slug

  1. 1Enter a title. Type or paste the page title or phrase. In Bulk mode, put one title per line.
  2. 2Choose the settings. Pick a separator and, if you need one, a maximum length. Choose Latin only or Any script, and the language for accented letters.
  3. 3Check the slug. The slug updates as you type. Letters that can't be written in Latin letters and duplicate slugs are pointed out.
  4. 4Copy the slug. Use Copy output, or the Copy button on a row in Bulk mode, and paste the slug into your route, permalink, or file name.

Examples

A blog title

Input

How to Test a Regex in 2026!

Output

how-to-test-a-regex-in-2026

Accents and punctuation

Input

Café & Résumé Tips

Output

cafe-resume-tips

A dot between words

Punctuation separates words instead of joining them.

Input

Getting Started with Node.js

Output

getting-started-with-node-js

Cyrillic

Transliterated to Latin letters.

Input

Как настроить Docker за 10 минут

Output

kak-nastroit-docker-za-10-minut

German spelling

Language set to German; with Any language it's grusse-aus-munchen.

Input

Grüße aus München

Output

gruesse-aus-muenchen

Japanese, kept as written

Letters set to Any script. In a link it's %E3%83%9A%E3%83%91%E3%83%BC%E3%83%9F%E3%83%B3%E3%83%88%E3%81%AE%E8%82%B2%E3%81%A6%E6%96%B9.

Input

ペパーミントの育て方

Output

ペパーミントの育て方

Maximum length 40

Cut after the last whole word that fits.

Input

Understanding CSS Grid Layout: A Complete Guide for 2026

Output

understanding-css-grid-layout-a-complete

Slug rules

What the generator does with each part of your text (Latin only, the default).

RuleExample
Lowercase everythingTitle → title
Spaces, punctuation, and symbols become one separatorNode.js & Express → node-js-express
Apostrophes inside a word are droppedDon't stop → dont-stop
Accented letters lose their accentsCafé → cafe
Other alphabets are transliteratedПривет → privet
Repeated separators collapse to onea -- b → a-b
A maximum length cuts at a whole word40 characters → understanding-css-grid-layout-a-complete

Frequently asked questions

Why should URLs use hyphens, not underscores?

Google recommends hyphens because they help users and search engines "better identify concepts in the URL". Underscores and dots are available for systems that need them.

Do slugs affect SEO?

Barely, for ranking: Google's SEO Starter Guide says keywords in the URL path alone have "hardly any effect beyond appearing in breadcrumbs". A clear slug still helps people, because parts of the URL can appear in search results as breadcrumbs.

What happens to accented or non-Latin characters?

With Latin only, the default, accented letters lose their accents (é becomes e) and alphabets such as Cyrillic, Greek, Arabic, Armenian, and Georgian are transliterated (Привет becomes privet). Scripts with no transliteration here, such as Chinese, Japanese, Korean, and Thai, are left out, and the tool lists the letters it left out. Choose Any script to keep them.

Should I keep letters in my own language?

Google recommends words in your audience's language, transliterated if applicable, and shows URLs such as https://example.com/ペパーミント as examples. Any script keeps your letters as written; in a link they're percent-encoded, which the tool shows.

What does the Language setting change?

How some accented letters are written in Latin letters, following WordPress's rules. Any language writes ä, ö, and ü as a, o, and u; German writes ae, oe, and ue; Danish and Norwegian write æ, ø, and å as ae, oe, and aa; Serbian and Bosnian write đ as dj.

Should slugs be lowercase?

Yes. Google treats /APPLE and /apple as different URLs, so one consistent case avoids two addresses for the same page.

Should slugs be short?

Generally yes. Keep the meaningful words and drop filler so the slug stays concise and readable. A maximum length cuts the slug after the last whole word that fits.

Should the slug match the page title exactly?

It should reflect the title but is usually shorter: keep the meaningful keywords and drop filler words like "a" and "the".

Is my text private?

Yes. Slugs are generated in your browser, and your text isn't sent to a server. The only exception is the Share link button: when you click it, it uploads your text and settings so the link can reopen them, so don't share text that contains personal data.

Is it free?

Yes — free with no limits.