Two URLs for the same article — /blog/post?id=12345 vs /blog/how-qr-codes-are-made. Both work. But click-through, shareability, and SEO signals all favor the latter. Why? And how should Korean (or any non-Latin) titles get slugified — raw UTF-8, Romanization, or English translation? This guide walks through what makes a good slug, the Korean slug strategies, and the 301 redirect rules every long-lived site eventually needs.
Five traits of a good slug
- Readable — you can guess the content from the URL alone
- Short — easy to share, remember, copy. 3-5 words is the sweet spot
- Keyword-bearing — small SEO matching signal
- Stable — once published, it shouldn't change. If it must, 301 redirect
- URL-safe characters only — avoid spaces, special chars, raw non-ASCII (or encode)
Slug Generator turns any text into a URL-safe slug — lowercase, hyphenated, ASCII when possible.
The slug as an SEO signal
Google treats ?id=12345 very differently from how-qr-codes-are-made:
- Result snippet — the URL shows up under the result. Keyword-bearing URLs raise click-through (CTR)
- Ranking signal — weaker than title / description / body, but real. Descriptive slugs help slightly
- Backlink anchor — when external sites link to your URL without custom text, the slug words become implied anchor text
- Social previews — Twitter / Slack show the URL in their preview. A meaningful slug = more clicks
Google's John Mueller has repeated this: don't stuff keywords, but descriptive slugs help. Six or seven words with the actual topic, separated by hyphens.
Hyphen (-) vs underscore (_)
how-qr-codes-are-made ← Google treats as word boundaries
how_qr_codes_are_made ← Google treats as one token (legacy)Google has recommended hyphens since 2014. Underscores are treated like variable names, not word separators — bad for SEO. Hyphens are also easier to read at a glance.
Non-Latin slugs — three strategies (Korean as example)
Strategy 1: keep the original characters (UTF-8)
/blog/qr-코드는-어떻게-만들어질까
Browser address bar — shows the Hangul (readable)
Actual URL on the wire — /blog/qr-%EC%BD%94%EB%93%9C%EB%8A%94...
Pros:
- Readable for the target audience
- Native-language keyword matching
Cons:
- Looks broken to non-Korean speakers
- Copy/paste shows the percent-encoded form (long)
- Some legacy systems break
- Some email / SMS previews mangle itStrategy 2: Romanization
/blog/qr-codeneun-eotteokge-mandeureojilkka
Pros:
- Works everywhere
- Safe for email / social previews
- Some letters guessable by non-Korean readers
Cons:
- Less readable for Korean readers
- Requires a Romanization library (multiple Romanization schemes exist)Strategy 3: English translation
/blog/how-qr-codes-are-made
Pros:
- Universally safe
- Global SEO (shows up for English searches)
- Cleanest looking URL
Cons:
- Korean content + English URL feels inconsistent
- Korean keyword matching weakens (compensate via title and body)Real-world choice — global-facing sites use strategy 3. Korean-only sites use strategy 1 or 2.
This site (yutils) uses strategy 3. Korean titles appear on the page; the URL slug is English so it ranks in both languages.
Punycode — non-Latin in the domain part
Korean domains (한글.kr) live in the host, not the path. Percent-encoding doesn't apply — DNS doesn't understand %. Punycode does the translation:
한글.kr → xn--bj0bj06e.kr ← what DNS actually sees
한국.kr → xn--3e0b707e.kr
한.kr → xn--6q8b.kr
Browser address bar — shows Hangul (xn-- form hidden)
DNS lookup — uses the xn-- formThe Punycode algorithm (RFC 3492) is deterministic — same input, same output.
Punycode (IDN) converts both ways. Useful when you suspect an IDN homograph attack — Latin "a" vs Cyrillic "а" look identical but produce different Punycode.
The slug-change problem — 301 redirects
Slugs should be stable. But sometimes they have to change:
- Typo fixes (
/blog/how-jsoon-parsing-works) - Meaningful renames (
/post/12345→/post/best-tools) - Product / brand renames
When changing, redirect from the old URL to the new one with a 301 (Permanent Redirect):
GET /blog/old-slug HTTP/1.1
→ 301 Moved Permanently
Location: /blog/new-slug
GET /blog/new-slug HTTP/1.1
→ 200 OKWhat you get:
- Old bookmarks and backlinks keep working
- Google transfers most of the SEO value (~90%+)
- 302 (Temporary) doesn't transfer SEO value — use 301
A slug-generation pipeline
Input: "How QR Codes Are Made? (Part 1)"
1. lowercase:
"how qr codes are made? (part 1)"
2. strip or replace special characters:
"how qr codes are made part 1"
3. non-Latin → ASCII (Romanize or drop):
"how qr codes are made part 1"
4. spaces → hyphens:
"how-qr-codes-are-made-part-1"
5. collapse repeated hyphens:
"how-qr-codes-are-made-part-1"
6. trim leading/trailing hyphensNon-Latin handling:
Option A — keep as UTF-8 (percent-encoded on the wire):
"QR 코드 만들기" → "qr-코드-만들기" → "qr-%EC%BD%94%EB%93%9C-..."
Option B — Romanize:
"QR 코드 만들기" → "qr-kodeu-mandeulgi"
Option C — strip (English words only):
"QR 코드 만들기" → "qr" ← too short, usually not chosenSlug Generator defaults to keeping the original characters and only cleaning up spaces and specials. Lowercase + URL-safe.
Common pitfalls
1. Timestamp / ID-only slugs
/post/2024-05-22-1716345600 ← meaningless, no SEO value
/post/abc123def ← UUID. zero keyword matchingWordPress' default is /?p=123. Set Permalink Settings to a meaningful pattern from day one.
2. Slugs that are too long
/blog/how-to-create-a-beautiful-modern-responsive-web-application-with-nextjs-and-tailwind
← 75 chars
→ Looks like keyword stuffing → SEO penalty
→ Truncated in the browser address bar → UX hitAim for under 60 characters. 3-5 keywords max.
3. Trailing slash
/blog/post-1 ← URL A
/blog/post-1/ ← URL B
To Google, these are different URLs. Duplicate-content risk.
Pick one and redirect the other.4. Uppercase
/Blog/Post-1 ← URL A
/blog/post-1 ← URL B
Some servers treat these as different. Always lowercase.5. Filler words ("stop words")
"a", "the", "is" carry little SEO value. how-to-make-qr vs how-to-make-a-qr — the latter is longer with less signal. Don't be cargo-cult about it though; readability still matters.
6. Renaming without a 301
Change a slug and skip the redirect → the old URL returns 404. You lose all the backlinks, bookmarks, and search-result clicks. SEO value evaporates.
References
- Google — Keep a simple URL structure — Search Central
- Google — Underscores vs hyphens (Matt Cutts video) — YouTube
- RFC 3492 (Punycode) — datatracker
- Cool URIs don't change (Tim Berners-Lee, 1998) — W3C
Summary
- Good slug = readable + short + keyword + stable + URL-safe.
- Slugs are a weak SEO signal but a real CTR / preview / backlink-anchor signal.
- Hyphens are word boundaries to Google. Underscores aren't — hurts SEO.
- Non-Latin slugs have three strategies (UTF-8 / Romanize / translate). Global-facing sites: translate.
- Non-Latin in the domain = Punycode (Punycode (IDN)). In the path = percent-encoding.
- Always 301 when changing a slug. SEO value transfers.
- Avoid timestamp / id / UUID-only slugs. Pick keywords.
- Try it: Slug Generator turns text → URL-safe slug — lowercase + hyphens + cleaned specials.