URL Slug Generator

Zet elke titel direct om in een schone URL-slug in je browser — één voor één of in bulk. Echte transliteratiestandaarden voor Cyrillisch en accenten, aanpasbare regels, en er wordt nooit iets geüpload.

Vul de tekst in voor conversie
Geavanceerde opties

De slug is de leesbare staart van een webadres — de my-first-post in example.com/blog/my-first-post. Het is het gedeelte dat een persoon kan lezen voordat hij beslist of hij klikt, en het deel dat een zoekmachine leest als een korte beschrijving van wat de pagina bevat, en daarom verdient het meer aandacht dan een database-id of een datum. Deze gratis generator maakt van elke tekst een slug: plak een titel in "Tekst om te converteren", druk op "Genereren", en het resultaat verschijnt met een kopieerknop ernaast. De standaardinstellingen zijn de keuzes die de meeste websites willen — kleine letters, streepjes tussen woorden, veelvoorkomende stopwoorden weggelaten, niet-Latijnse letters getranslitereerd — dus een bruikbare slug is slechts één klik verwijderd, en elk van deze beslissingen is een optie die je kunt wijzigen.

Alles gebeurt op je eigen apparaat. De pagina laadt een kleine JavaScript-engine en draait deze lokaal: je titels worden nooit geüpload, nooit gelogd, en de tool blijft werken, zelfs als de verbinding is verbroken. Dat is ook de reden waarom het resultaat wordt bijgewerkt op het moment dat je een instelling wijzigt. De volgorde van het werk is het vermelden waard, omdat het de output voorspelbaar maakt: een geplakte link wordt eerst teruggebracht tot zijn laatste padsegment, vervolgens wordt de tekst omgezet in kleine letters, dan worden stopwoorden weggelaten, daarna worden niet-Latijnse tekens getranslitereerd, dan worden cijfers en speciale tekens verwijderd als je daarom vroeg, vervolgens wordt wat overblijft samengevoegd met je scheidingsteken, dan wordt het resultaat ingekort tot de maximale lengte, en ten slotte krijgt een duplicaat een numeriek achtervoegsel. "Tekst om te converteren" accepteert tot 500.000 tekens tegelijk, wat neerkomt op enkele duizenden artikeltitels.

Eén regel erin, één slug eruit. Plak een hele lijst met titels en elke regel wordt zijn eigen genummerde slug, met de oorspronkelijke titel erboven in het grijs, zodat je in een batch van vijftig nog steeds kunt zien welke slug bij welke kop hoort. Een lijst die al in een bestand staat, hoeft niet via het klembord te reizen: "Laden uit bestand", de knop naast het invoerveld, opent een gewoon tekstbestand — .txt, .csv, .md, .json en dergelijke — en plaatst de inhoud direct in het veld. Je browser leest dat bestand precies op de manier waarop hij leest wat je typt, en het wordt nergens naartoe geüpload. "Invoer splitsen op" beslist hoe de lijst in stukken wordt gesneden. "Automatisch" is de standaard: een nieuwe regel scheidt altijd items, terwijl een komma ze alleen scheidt wanneer de invoer een enkele regel is waarvan de delen er allemaal uitzien als op zichzelf staande waarden — dus "prijs 3,5 EUR" en "Hoofdstuk 5: resultaten, conclusies" blijven heel in plaats van in fragmenten te versplinteren. "Nieuwe regel", "Komma" en "Spatie" forceren de keuze wanneer je de vorm van je data al kent. "Uitvoerformaat" bepaalt hoe een batch wordt teruggegeven wanneer je deze kopieert — één per regel, gescheiden door spaties, of gescheiden door komma's — en zowel "Alles kopiëren" als "Opslaan als bestand" volgen deze keuze. "Geschiedenis" bewaart je laatste 10 batches in je eigen browser, zodat een lijst die je een uur geleden hebt geconverteerd er nog steeds is.

Niet-Latijnse tekst is het onderdeel dat de meeste sluggeneratoren ongeveer goed krijgen en weinigen precies goed. Een URL is het veiligst in platte ASCII, dus Cyrillische, Griekse, Arabische, Chinese en Europese letters met accenten moeten worden geconverteerd, en de enige echte vraag is volgens wiens regel. Deze pagina beantwoordt dat in twee lagen. De algemene laag dekt elk schrift: een transliteratiebibliotheek met een verstandig ASCII-antwoord voor bijna elk teken dat je kunt typen, wat is wat "Translitereren vanuit" betekent wanneer er "Automatisch (elke taal)" staat. De specifieke laag is een reeks handgebouwde tabellen voor de talen waar het generieke antwoord niet is wat het land daadwerkelijk gebruikt; welke talen er vandaag een hebben, staat in het menu "Translitereren vanuit", en deze set groeit naarmate de tool talen bereikt die er een nodig hebben. Als je er een kiest, wordt de bijbehorende tabel geladen in een bewerkbaar raster onder "Transliteratieregels", waar elke letter een tekstveld is dat je kunt wijzigen, en "Regels herstellen" zet het weer terug naar de standaard. De Oekraïense tabel volgt Resolutie No. 55 van 2010 van het Kabinet van Ministers, de norm die op Oekraïense paspoorten is gedrukt, inclusief de details die makkelijk over het hoofd worden gezien: зг wordt zgh in plaats van zh zodat het te onderscheiden blijft van ж; є, ї, й, ю en я nemen de ene vorm aan aan het begin van een woord en een andere in het midden; en de apostrof en het zachte teken vallen weg zonder een nieuw woord te beginnen, dus Знам'янка wordt znamianka en niet znamyanka. Voor Duits is de standaard de uitgebreide variant ä → ae, ö → oe, ü → ue die Duitse adressen feitelijk gebruiken, met een eenvoudige ä → a variant als je die verkiest.

"Stopwoorden verwijderen" staat standaard aan. Het laat de kleine verbindingswoorden — de, het, een, en, van, voor — weg die een slug langer maken zonder er betekenis aan toe te voegen. De lijst onder "Stopwoorden" is volledig aanpasbaar en is al ingevuld: een Engelse lijst plus een lijst voor de taal van de pagina waar je op zit, dus de Nederlandse pagina kent de, het, een en op. Voeg je eigen woorden toe, verwijder de woorden die je wilt behouden, of schakel de functie helemaal uit, waarna het veld grijs wordt in plaats van te doen alsof het er nog toe doet. Twee eerlijke opmerkingen hierover. Het weglaten van stopwoorden is een kleine overwinning voor de netheid, geen hendel voor betere zoekresultaten — je krijgt een korter, opgeruimder adres, geen hogere positie. En als elk woord in een titel toevallig in de lijst staat, is het eerlijke resultaat helemaal niets, dus dat vertelt de tool je dan in plaats van je een leeg vakje te geven.

De rest van de schakelaars bepaalt de vorm. "Scheidingsteken in de slug" kiest wat er tussen de woorden staat, en de standaardinstelling met het streepje is geen kwestie van smaak: Google leest een streepje als een woordscheidingsteken en een liggend streepje als een verbinder, dus my_first_post bereikt een crawler als één lang woord terwijl my-first-post als drie woorden aankomt. "Liggend streepje (_)" is er voor de systemen die erop staan. "Kleine letters" staat aan omdat de meeste servers adressen als hoofdlettergevoelig behandelen, en een mix van hoofd- en kleine letters is een makkelijke manier om te eindigen met twee URL's voor één pagina. "Speciale tekens verwijderen" haalt alles weg wat geen letter, cijfer, spatie, streepje of liggend streepje is, wat inhoudt dat leestekens, aanhalingstekens en emoji's buiten een adres worden gehouden — emoji's worden specifiek vóór de transliteratie verwijderd zodat een raket niet het woord rocket wordt. "Cijfers verwijderen" staat uit, omdat een cijfer in een titel meestal onderdeel uitmaakt van die titel. "Max. lengte" loopt van 10 tot 200 en is standaard 80; wanneer een slug langer is dan dat, knipt de engine veilig af bij het laatste hele woord dat past in plaats van er halverwege één door te knippen. Het getal naast elk resultaat is de lengte in tekens, en dat wordt rood voorbij de 60 — geen harde limiet, maar het punt waarop een slug afgebroken begint te worden in de zoekresultaten en onhandig wordt om in een bericht te plakken.

Er zijn nog twee extra schakelaars omdat ze een massale conversie terugbrengen naar een taak van één klik. "Slugs uniek maken" pakt het scenario aan waarbij twee verschillende titels tot dezelfde slug leiden — "Top 10 tips" en "Top-10 tips" worden allebei top-10-tips — en geeft de tweede een -2, de derde een -3, waarbij eerst de basis wordt verkort als het achtervoegsel deze over de maximale lengte zou duwen. Twee pagina's op één adres is een probleem dat veel goedkoper in deze lijst kan worden opgelost dan in je CMS. "Slug uit een geplakte URL halen" werkt de andere kant op: plak een volledige link en de tool pakt het laatste deel van het pad, verwijdert de querystring en eventuele .html of .php-eindes, en decodeert procentcodering, zodat een Wikipedia-link die eindigt in %D0%9B%D1%8C%D0%B2%D1%96%D0%B2 terugkomt als lviv in plaats van een reeks hexadecimale cijfers. Dit werkt alleen wanneer de volledige regel een link is, dus een URL geciteerd binnen een zin wordt gelaten waar hij is.

Waarom deze sluggenerator kiezen?

Slugs zijn overal nodig waar een pagina een leesbaar adres moet hebben. Een blog of nieuwssite maakt van elke kop een slug, wat de voornaamste reden is waarom deze tool zo is vormgegeven: plak de koppen van de week, krijg de URL's van de week. Een online winkel doet hetzelfde voor product- en categorienamen, meestal in bulk na een import, en vaak in een taal waarvan het alfabet niet in het adres past. Documentatie en kennisbanken bouwen ankers en bestandsnamen op dezelfde manier. Buiten webadressen om is dezelfde schone string wat je wilt voor een bestandsnaam die niet breekt op een ander besturingssysteem, een databasesleutel die een persoon in een logboek kan lezen, de naam van een branch, de naam van een afbeelding in een mediabibliotheek, of de identificatie van een sectie in een static site generator. Elke plek waar een menselijk leesbare naam moet overleven om in een machinaal leesbaar veld te worden gezet, is een plek waar een slug thuishoort.

Het is de moeite waard om een paar beperkingen te kennen voordat je erop vertrouwt. Dit is een generator, geen validator: hij zal niet controleren of een slug al op je site in gebruik is, omdat hij geen idee heeft wat je site bevat — de uniekheid die het garandeert geldt alleen binnen de batch die voor je ligt. Redirects zijn ook jouw verantwoordelijkheid; het wijzigen van de slug van een gepubliceerde pagina verbreekt zijn oude adres, en dat is een beslissing voor je CMS in plaats van voor deze tool. "Opslaan als bestand" schrijft platte tekst, geen CSV of JSON. De automatische splitsing maakt een inschatting over komma's die in bijna elk geval klopt, maar niet in allemaal, wat precies de reden is waarom je dat kunt overrulen met "Invoer splitsen op". En transliteratie is meer een afspraak dan een vertaling — München wordt muenchen, niet Munich — dus als een pagina al een gevestigde naam heeft in de doeltaal, is die naam altijd een betere slug dan een automatische conversie van het origineel.

FAQ

Hoe maak ik een URL slug?

Plak je titel in "Tekst om te converteren" en druk op "Genereren". Het resultaat verschijnt met een kopieerknop ernaast, geconverteerd met de standaardinstellingen die de meeste sites willen: kleine letters, streepjes tussen woorden, stopwoorden weggelaten en niet-Latijnse letters getranslitereerd. Elk daarvan is een optie die je kunt aanpassen, en in "Geavanceerde opties" vind je de rest — scheidingsteken, maximale lengte, stopwoordenlijst en transliteratieregels.

Kan ik een hele lijst met titels tegelijk converteren?

Ja. Plak tot 500.000 tekens — enkele duizenden krantenkoppen — of haal ze rechtstreeks uit een bestand met "Laden uit bestand", de knop naast het invoerveld, die het in je browser leest zonder het te uploaden. Elke regel wordt zijn eigen slug, genummerd, met de oorspronkelijke titel erboven zodat je ze kunt koppelen. "Invoer splitsen op" bepaalt hoe de lijst wordt verdeeld, "Uitvoerformaat" beslist of de batch wordt geretourneerd als regels, gescheiden door spaties of gescheiden door komma's, en zowel "Alles kopiëren" als "Opslaan als bestand" pakken in één keer de hele lijst.

Hoe gaat de generator om met Cyrillische en geaccentueerde letters?

Het translitereert ze naar ASCII, en wel in twee lagen. Welk schrift dan ook — Cyrillisch, Grieks, Arabisch, Chinees, Latijns met accenten — valt onder een algemene transliteratiebibliotheek, wat is wat "Automatisch (elke taal)" gebruikt. Daarbovenop zitten speciaal gemaakte tabellen voor de talen waar het generieke antwoord niet overeenkomt met wat het land zelf gebruikt; welke dat zijn, staat in het menu "Translitereren vanuit". Kies er eentje en de betreffende tabel wordt geladen, waarbij elke letter bewerkbaar is.

Welke transliteratiestandaard wordt er gebruikt voor het Oekraïens?

Resolutie nr. 55 van het Kabinet van Ministers van 27 januari 2010 — de norm die in Oekraïense paspoorten wordt gebruikt. Dat omvat de onderdelen waar mensen vaak fouten mee maken: зг wordt zgh zodat het onderscheiden blijft van ж, de letters є, ї, й, ю en я nemen één vorm aan aan het begin van een woord en een andere daarbinnen, en de apostrof en het zachte teken worden weggelaten zonder een nieuw woord te beginnen, dus Знам'янка wordt znamianka en niet znamyanka. Een tweede variant met ya, yu en yi overal is beschikbaar als je de eenvoudigere look verkiest.

Kan ik wijzigen hoe een specifieke letter wordt getranslitereerd?

Ja. Open "Transliteratieregels" en je zult zien dat elke letter van de tabel een tekstveld is: typ wat je maar wilt dat die letter wordt, en het resultaat wordt tijdens het typen bijgewerkt. Een veld leegmaken verwijdert de letter volledig. Je wijzigingen worden onthouden in je eigen browser voor de volgende keer, en "Regels herstellen" laadt de standaardtabel weer in wanneer je deze terug wilt.

Wat zijn stopwoorden en moet ik ze verwijderen?

Dit zijn de kleine verbindingswoorden — de, het, een, en, van, voor — die een slug langer maken zonder het duidelijker te maken. "Stopwoorden verwijderen" staat standaard aan en de lijst onder "Stopwoorden" is bewerkbaar; deze is al ingevuld met een Engelse lijst plus één voor de taal van de pagina waar je op zit. Wees wel eerlijk over het nut ervan: het levert een korter, netter adres op, geen betere zoekpositie. Als een titel uitsluitend uit stopwoorden bestaat, zal de tool dat zeggen in plaats van een lege slug te retourneren.

Moet ik streepjes of liggende streepjes gebruiken in een slug?

Streepjes, tenzij iets in je stack iets anders vereist. Google behandelt een streepje als een scheidingsteken tussen woorden en een liggend streepje als een teken dat ze verbindt, dus my_first_post wordt gelezen als één lang woord terwijl my-first-post als drie woorden wordt gelezen. Om die reden heeft de generator standaard het streepje; "Scheidingsteken in de slug" biedt het "Liggend streepje (_)" aan voor de systemen die dit nodig hebben.

Hoe lang moet een URL slug zijn?

Kort genoeg om in één oogopslag te lezen — de eerste paar woorden dragen de betekenis en de rest is meestal het einde van een zin. Het cijfer naast elk resultaat is de lengte in tekens en kleurt rood na de 60, wat ongeveer het punt is waar zoekresultaten het beginnen af te kappen en waar het lastig wordt om het in een bericht te plakken. "Max. lengte" stelt een hard plafond in van 10 tot 200 tekens en staat standaard op 80.

Knipt het woorden doormidden als de slug te lang is?

Nee. Wanneer een slug de maximale lengte overschrijdt, gaat de engine terug naar het laatste hele woord dat past en snijdt daar af, zodat een afgebroken slug nog steeds leest als woorden in plaats van midden in een lettergreep te eindigen. Hetzelfde geldt wanneer een numeriek achtervoegsel aan een herhaling wordt toegevoegd: de basis wordt eerst ingekort zodat de uiteindelijke slug nog steeds je limiet respecteert.

Wat gebeurt er als twee titels dezelfde slug opleveren?

"Slugs uniek maken" staat standaard aan en regelt het: de eerste keer behoudt de normale slug, de tweede krijgt -2, de derde -3, enzovoort. Dit vangt het veelvoorkomende geval op waarin twee verschillende titels herleid worden tot hetzelfde — Top 10 tips en Top-10 tips worden beide top-10-tips. Door het uit te schakelen krijg je de ruwe output, waarbij de duplicaten intact blijven. Let op dat uniekheid alleen gegarandeerd is binnen de batch die je net hebt geconverteerd; de tool kan niet weten wat er al op je site staat.

Kan ik een URL plakken in plaats van een titel?

Ja. "Slug uit een geplakte URL halen" is standaard ingeschakeld, en wanneer een hele regel een link is, haalt de tool het laatste deel van het pad eruit, laat de querystring en eventuele .html of .php extensies vallen, en decodeert de procentcodering — dus een Wikipedia adres eindigend in %D0%9B%D1%8C%D0%B2%D1%96%D0%B2 komt terug als lviv in plaats van een reeks hex-tekens. Dit activeert alleen op een regel die in zijn geheel uit een link bestaat, dus een URL die geciteerd wordt binnen een zin wordt behandeld als gewone tekst.

Wordt mijn tekst naar een server gestuurd?

Nee. De conversie draait volledig in je browser als lokaal JavaScript. Er wordt niets geüpload, er wordt niets gelogd, en zodra de pagina is geladen blijft hij werken zonder verbinding. Ongepubliceerde krantenkoppen, interne productnamen en werk van klanten blijven op je eigen machine, wat de praktische reden is om voor deze specifieke taak een lokale tool te verkiezen boven een server-side versie.

Waarom is mijn enkele zin opgesplitst in twee slugs?

Omdat er een komma in zat en "Invoer splitsen op" op "Automatisch" stond. Die modus beschouwt een nieuwe regel als een definitief scheidingsteken en een komma als een mogelijke, en splitst alleen op komma's wanneer de delen van een enkele regel er allemaal uitzien als losstaande waarden — een decimaal getal zoals 3,5 of een zin met een dubbele punt wordt opzettelijk heel gelaten. Als een titel nog steeds splitst terwijl dat niet zou moeten, zet "Invoer splitsen op" dan op "Nieuwe regel" en de invoer zal alleen daar worden afgekapt waar je daadwerkelijk op Enter hebt gedrukt.