Slug Generator

Konvertera valfri text till en ren URL-vänlig slug

Prova ett exempel
Avskiljare

Inmatningstext

Slug

Körs lokalt · Säkert att klistra in hemligheter
Sluggen visas här…

Vad är ett URL-slug?

Ett URL-slug är den del av en webbadress som identifierar en specifik sida i en läsbar form. I URL:en https://example.com/blog/my-first-post är slugget my-first-post. En slug-generator omvandlar en sidtitel eller beskrivning till en sträng som bara innehåller gemener, siffror och bindestreck (eller ett annat valt avskiljartecken). Processen tar bort mellanslag, strippar accenter och diakritiska tecken, tar bort specialtecken och normaliserar blanksteg till enstaka avskiljare.

Slug-generering är ett standardsteg i innehållshanteringssystem, statiska webbplatsgeneratorer, bloggplattformar och alla applikationer som härleder URL:er från användarinmatning. WordPress, Ghost, Hugo, Next.js och Django inkluderar alla slug-genereringslogik eftersom läsbara URL:er förbättrar både användbarhet och sökmotoroptimering. Ett välformat slug berättar för användaren vad en sida innehåller redan innan de klickar på länken.

Termen "slug" kommer från tidningsproduktion, där det syftade på en kort etikett som användes för att identifiera en artikel under produktionen. Inom webbutveckling fyller slugget samma funktion: det är ett kompakt, unikt, URL-säkert identifierare som härleds från en längre titel eller ett namn. Eftersom slugs härleds programmatiskt säkerställer en tillförlitlig slug-generator konsekvens på varje sida och i varje locale.

Varför använda den här Slug Generator?

Att skapa URL-slugs manuellt är felbenäget. Att glömma att ta bort en accent, lämna ett dubbelt bindestreck eller missa ett kantfall med Unicode-inmatning kan ge trasiga eller fula URL:er. Det här verktyget hanterar sådana problem automatiskt.

Omedelbar konvertering
Klistra in eller skriv valfri text och se slugget uppdateras i realtid. Ingen formulärinlämning, ingen sidomladdning. Användbart när du behöver slugs för en batch med artikelrubriker eller produktnamn.
🔒
Integritetsskyddad bearbetning
All slug-generering körs i din webbläsare. Din text lämnar aldrig sidan, så du kan säkert konvertera utkaststitlar, interna projektnamn eller ännu ej lanserade produktnamn.
⚙️
Konfigurerbar utdata
Välj mellan bindestreck, understreck eller punkt som avskiljare. Slå på eller av gemener. Det täcker de vanligaste slug-konventionerna inom olika ramverk och CMS-system.
🌐
Unicode- och accenthantering
Generatorn tillämpar NFD-normalisering för att strippa diakritiska tecken från accenttecken. Café blir cafe, naïve blir naive. Icke-latinska tecken som inte kan translittereras tas bort på ett rent sätt.

Användningsfall för Slug Generator

Frontend-utvecklare — Ruttplanering
Generera konsekventa slugs för sidrutter i React Router, Next.js eller Nuxt innan du kopplar ihop dynamiska ruttsegment. Verifiera att titlar med specialtecken ger rena sökvägar.
Backend-ingenjör — Databasidentifierare
Skapa URL-säkra slugs för databasposter som behöver läsbara identifierare. Slugs fungerar bra som sekundärnycklar bredvid numeriska ID:n för REST API-ändpunkter som /api/products/wireless-headphones.
DevOps — Namngivning av konfigurationsfiler
Konvertera tjänstenamn eller miljöetiketter till filsystemssäkra strängar för konfigurationsfiler, Docker-bildtaggar eller Kubernetes-resursnamn där specialtecken inte är tillåtna.
QA-ingenjör — Generering av testdata
Generera snabbt slug-varianter från testfallstitlar för att verifiera URL-routing, omdirigeringsregler och kanonisk taggsidentitet i testmiljöer.
Dataingenjör — Kolumnnormalisering
Normalisera röriga kolumnrubriker från CSV- eller Excel-importer till konsekventa snake_case- eller kebab-case-identifierare för användning i databasscheman eller datapipelines.
Student — CMS- och blogprojekt
Lär dig hur slug-generering fungerar när du bygger en blogg med WordPress, Jekyll eller ett eget CMS. Använd det här verktyget för att jämföra dina manuella slugs mot en referensimplementering.

Regler och teckenhantering vid slug-generering

Slug-generering följer en förutsägbar sekvens av transformationer. Att förstå varje steg hjälper dig att felsöka oväntad utdata eller bygga din egen slugify-funktion.

  1. 1. Unicode-normalisering (NFD)
    Dela upp sammansatta tecken i bastecknet + kombinationsmärke. Till exempel blir é (U+00E9) e + kombinationsakcent (U+0301). Det gör att diakritiska tecken kan tas bort i nästa steg.
  2. 2. Strippa diakritiska tecken
    Ta bort alla tecken i Unicode-blocket Combining Diacritical Marks (U+0300–U+036F). Efter det här steget blir café cafe och Ñ blir N.
  3. 3. Ta bort specialtecken
    Ersätt alla tecken som inte är bokstäver, siffror, blanksteg eller bindestreck med ett mellanslag. Det tar bort skiljetecken, symboler och tecken som saknar ASCII-motsvarighet.
  4. 4. Trimma och komprimera blanksteg
    Ta bort inledande och avslutande blanksteg och komprimera sedan alla sekvenser av på varandra följande mellanslag, understreck eller bindestreck till ett enda valt avskiljartecken.
  5. 5. Tillämpa skiftläge och avskiljare
    Konvertera till gemener (valfritt) och sätt ihop ord med det valda avskiljartecknet: bindestreck (-), understreck (_) eller punkt (.).

Referens för teckentransformationer

Tabellen nedan visar hur vanliga tecken hanteras under slug-genereringen:

InmatningUtdataTillämpad regel
Hello Worldhello-worldLowercase + space → hyphen
Café au Laitcafe-au-laitNFD normalization strips é → e
naïve résuménaive-resumeMultiple diacritics removed
Price: $9.99!price-9-99Symbols ($, !, :) removed
too many too-manyWhitespace trimmed and collapsed
one--two___threeone-two-threeMixed separators collapsed
Привет мирprivet-mirCyrillic (if transliteration) or removed
file_name.txtfile-name-txtDots and underscores replaced
React & Vuereact-vueAmpersand removed
2026-03-302026-03-30Digits and hyphens preserved

Kodexempel

Slug-generering i populära språk och ramverk. Varje exempel hanterar Unicode-normalisering, borttagning av diakritiska tecken och infogning av avskiljare.

JavaScript
function slugify(text, separator = '-') {
  return text
    .normalize('NFD')                   // decompose accented chars
    .replace(/[\u0300-\u036f]/g, '')    // strip diacritics
    .toLowerCase()
    .replace(/[^\w\s-]/g, ' ')          // drop special chars
    .trim()
    .replace(/[\s_-]+/g, separator)     // collapse whitespace → separator

  // slugify('Café au Lait')      → "cafe-au-lait"
  // slugify('Hello World', '_')  → "hello_world"
}

// Node.js alternative using the `slugify` npm package:
// npm install slugify
// const slugify = require('slugify')
// slugify('Hello World', { lower: true, strict: true }) → "hello-world"
Python
import re
import unicodedata

def slugify(text: str, separator: str = '-') -> str:
    """Convert text to a URL-safe slug."""
    text = unicodedata.normalize('NFD', text)
    text = text.encode('ascii', 'ignore').decode('ascii')  # strip non-ASCII
    text = text.lower()
    text = re.sub(r'[^\w\s-]', ' ', text)
    text = text.strip()
    text = re.sub(r'[\s_-]+', separator, text)
    return text

# slugify('Café au Lait')      → "cafe-au-lait"
# slugify('Hello World', '_')  → "hello_world"

# Alternative: python-slugify (pip install python-slugify)
# from slugify import slugify
# slugify('Café au Lait')  → "cafe-au-lait"
Go
package main

import (
	"regexp"
	"strings"
	"unicode"

	"golang.org/x/text/unicode/norm"
	"golang.org/x/text/transform"
	"golang.org/x/text/runes"
)

func slugify(text string) string {
	// NFD normalize and strip diacritics
	t := transform.Chain(norm.NFD, runes.Remove(runes.In(unicode.Mn)), norm.NFC)
	result, _, _ := transform.String(t, text)

	result = strings.ToLower(result)
	re := regexp.MustCompile(`[^\w\s-]+`)
	result = re.ReplaceAllString(result, " ")
	result = strings.TrimSpace(result)
	re = regexp.MustCompile(`[\s_-]+`)
	result = re.ReplaceAllString(result, "-")
	return result
}

// slugify("Café au Lait") → "cafe-au-lait"
// slugify("Hello World")  → "hello-world"
PHP
function slugify(string $text, string $separator = '-'): string {
    // Transliterate non-ASCII characters
    $text = transliterator_transliterate(
        'Any-Latin; Latin-ASCII; Lower()', $text
    );
    // Remove anything that is not a word char, space, or hyphen
    $text = preg_replace('/[^\w\s-]/', ' ', $text);
    $text = trim($text);
    $text = preg_replace('/[\s_-]+/', $separator, $text);
    return $text;
}

// slugify('Café au Lait')      → "cafe-au-lait"
// slugify('Hello World', '_')  → "hello_world"

Vanliga frågor

Vad är skillnaden mellan ett slug och en URL-sökväg?
En URL-sökväg är hela segmentet efter domänen, som /blog/2026/my-post. Ett slug är den läsbara delen som identifierar en specifik resurs inom den sökvägen, typiskt det sista segmentet: my-post. Slugs härleds ofta från titlar, medan resten av sökvägen speglar webbplatsens routingstruktur.
Hur hanterar slug-generering icke-latinska skriftsystem som kinesiska eller arabiska?
Standardiserade slug-generatorer som använder NFD-normalisering och borttagning av diakritiska tecken kan inte translitterera icke-latinska skriftsystem. Tecken som kinesiska hanzi eller arabiska bokstäver saknar ASCII-motsvarighet och tas därför bort i steget för specialteckensrensning. För att bevara icke-latinskt innehåll i slugs behöver du ett translittereringsbibliotek som limax (JavaScript), python-slugify med unidecode-backend eller en anpassad mappningstabell.
Ska jag använda bindestreck eller understreck i URL-slugs?
Google behandlar bindestreck som ordavskiljare men behandlar understreck som ordsammansättare. Slugget my-first-post läses som tre ord (my, first, post), medan my_first_post läses som ett token. För SEO-ändamål är bindestreck standardvalet för URL-slugs. Understreck är vanliga i filnamn, databaskolumner och programmeringsidentifierare där de fungerar som variabelsäkra kopplingar.
Hur långt bör ett URL-slug vara?
Google visar ungefär 60 tecken av en URL i sökresultat innan det trunkeras. Kortare slugs är lättare att läsa, dela och skriva. Sikta på 3 till 6 ord. Ta bort stoppord (den, ett, en, och, eller, i) när de inte förändrar betydelsen: how-to-build-nextjs-app är bättre än how-to-build-a-next-js-app-in-2026.
Är slug-generering samma sak som URL-kodning?
Nej. URL-kodning (procentkodning) ersätter osäkra tecken med procentteckentripler som %20 för ett mellanslag. Slug-generering tar bort eller ersätter osäkra tecken helt och hållet och producerar en ren sträng utan kodningsartefakter. Ett slug innehåller aldrig procenttecken, mellanslag eller specialtecken. URL-kodning bevarar det ursprungliga innehållet; slug-generering omvandlar det till något nytt.
Kan två olika titlar ge samma slug?
Ja. Titlar som bara skiljer sig åt i skiljetecken, accenter eller skiftläge kollapsar ofta till samma slug. Till exempel ger både Résumé Tips och Resume Tips slugget resume-tips. I CMS- eller databassammanhang behöver du en unikhetscontroll som lägger till ett numeriskt suffix (resume-tips-2) när en kollision uppstår.
Hur genererar jag slugs i WordPress eller Django?
WordPress genererar slugs automatiskt från inläggsrubriken med sanitize_title(). Du kan redigera slugget i inläggsredigeraren. Django tillhandahåller funktionen slugify() i django.utils.text, som hanterar ASCII-inmatning bra. För Unicode-stöd, skicka allow_unicode=True. Båda plattformarna lagrar slugs i databasen bredvid den fullständiga titeln.