induwara.lk
induwara.lkText · SEO

URL Slug Generator — clean, SEO-friendly slugs

Turn any title into a clean URL slug in your browser. Sinhala & Tamil transliteration built in, accented Latin folds to ASCII, hyphen-separated by default. RFC-3986-safe, no signup, sources cited below.

By Induwara AshinsanaUpdated May 11, 2026
Generate a URL slugSinhala & Tamil aware
Runs entirely in your browser. Nothing is uploaded, logged, or stored.42 chars in · 38 out · 6 words
Separator
Length cap
Short (10)Long (200)
Your slug
URL-safe
url-slug-generator-sinhala-tamil-aware
example.com/blog/url-slug-generator-sinhala-tamil-aware

Slug format follows RFC 3986 (unreserved characters) and Google's URL-structure guidance. Sinhala & Tamil transliteration is an ASCII-simplified subset of ISO 15919. Full citations in the Sources section below.

How it works

A URL slug is the readable tail of a URL path — /blog/your-slug-here. To stay safe across every browser, server, and search-engine crawler, the slug should contain only the unreserved-character subset of RFC 3986 §2.3: [A-Za-z0-9-._~]. This generator emits the kebab-safe core [a-z0-9] plus the chosen separator (hyphen by default; underscore or dot if you switch). Every step is a pure function — no network call, no state, no dependency beyond the JavaScript engine's built-in Unicode case mapping and normalisation.

  1. Transliterate Indic clusters. Sinhala and Tamil consonants carry an inherent a vowel. A virama (Sinhala U+0DCA, Tamil U+0BCD) suppresses that vowel; a vowel sign replaces it. The generator walks the input cluster-by-cluster and emits an ASCII-simplified ISO 15919 romanisation — for example ක + ි = කි → ki, ස + ් = ස් → s, த + ை = தை → thai.
  2. Fold accented Latin to ASCII. The string is normalised to Unicode form NFKD — the decomposition step that splits é into e + ́ — and combining marks (Unicode category \p{M}) are stripped. That is the same approach the GitHub Issues anchor slugifier and most CMS engines use; it leaves base Latin letters in place while removing every diacritic. A small table of ligatures (ß → ss, æ → ae, œ → oe, ø → o, þ → th, ł → l) is applied first because NFKD does not decompose those.
  3. Collapse to separator. Every run of characters that is not in [A-Za-z0-9] — whitespace, punctuation, emoji, symbols — collapses to a single separator character. Leading and trailing separators are trimmed.
  4. Case fold and length cap.Lowercase is applied (default on; the toggle preserves case if you need it). If the slug is longer than the configured cap, it is truncated at the last separator boundary inside the second half of the budget so you don't lose meaningful suffix words; if no separator falls in that window a hard cut is applied.

The result is verified by two independent checks. First, the slugifier is idempotent — slugify(slugify(x)) === slugify(x) — for every input. Second, a strict NFKD-only cross-check (no Indic transliteration, no ligature shortcuts) is run alongside the main function; its output must be a subsequence of the main output on the ASCII characters. The "verified · idempotent" badge in the tool header is wired to both checks running live.

Worked examples

Mixed punctuation

"Top 10 Best Restaurants in Colombo (2026)"

  1. Step 1: no Indic characters — pass through
  2. Step 2: NFKD — no accents to strip
  3. Step 3: collapse non-alnum → 'Top-10-Best-Restaurants-in-Colombo-2026-'
  4. Step 4: trim trailing '-' → 'Top-10-Best-Restaurants-in-Colombo-2026'
  5. Step 5: lowercase → 'top-10-best-restaurants-in-colombo-2026'
  6. Length 42 — under the 80 default cap

Sinhala title

"අයිතිහාසික දින"

  1. අ (independent vowel) → 'a'
  2. ය + ි → 'yi' (consonant + i vowel sign)
  3. ත + ි → 'thi' (dental t + i)
  4. හ + ා → 'haa' (h + long a)
  5. ස + ි → 'si'
  6. ක (no vowel sign, no virama) → 'ka' (inherent a)
  7. space → separator
  8. ද + ි → 'di', න (inherent a) → 'na'
  9. Result: 'ayithihaasika-dina'

Tamil title with virama

"தமிழ் மொழி"

  1. த (inherent a) → 'tha'
  2. ம + ி → 'mi'
  3. ழ + ் → 'zh' (virama suppresses inherent a)
  4. space → separator
  5. ம + ொ → 'mo', ழ + ி → 'zhi'
  6. Result: 'thamizh-mozhi'

Accented Latin

"naïve résumé — café au lait"

  1. Step 1: no Indic — pass through
  2. Step 2: NFKD splits ï,é,é,é,è into base + combining marks
  3. \p{M} strip → 'naive resume cafe au lait'
  4. Step 3: collapse whitespace + em-dash → 'naive-resume-cafe-au-lait'
  5. Step 4: lowercase (already) → 'naive-resume-cafe-au-lait'

Frequently asked questions

Sources & references

The transliteration tables and slug rules on this page were last cross-checked on 2026-05-11. The page is reviewed whenever ISO 15919 is revised, when the WHATWG URL spec changes the path-percent-encode set, or when a new Sinhala / Tamil orthography reference becomes the canonical romanisation source. If you spot a transliteration that disagrees with another tool, please email me below.

Related tools

Rate this tool
Be the first to rate

Comments & feedback

Spotted a bug or want an improvement? Tell us — our team reviews every comment, and good ideas get built. Comments are public and anonymous.

Spotted a slug mismatch, an edge case, or want to suggest a transliteration tweak?

Email me at [email protected] — most fixes ship within 24 hours.