Et slug er den læsbare hale af en webadresse — my-first-post i example.com/blog/my-first-post. Det er den del, en person kan læse, før de beslutter sig for at klikke, og den del, en søgemaskine læser som en kort beskrivelse af, hvad siden indeholder, hvilket er grunden til, at det fortjener mere omtanke end et database-id eller en dato. Denne gratis generator forvandler enhver tekst til et: indsæt en titel i "Tekst til konvertering", tryk på "Generér", og resultatet vises med en kopiknap ved siden af. Standardindstillingerne er de indstillinger, de fleste hjemmesider ønsker — små bogstaver, bindestreger mellem ord, almindelige fyldord fjernet, ikke-latinske bogstaver translittereret — så et brugbart slug er ét klik væk, og hver af disse beslutninger er en kontakt, du kan ændre.
Alt sker på din egen enhed. Siden indlæser en lille JavaScript-motor og kører den lokalt: dine titler bliver aldrig uploadet, aldrig logget, og værktøjet fortsætter med at fungere, selv når forbindelsen er afbrudt. Det er også grunden til, at resultatet opdateres i det øjeblik, du ændrer en indstilling. Rækkefølgen af arbejdet er værd at nævne, fordi den gør outputtet forudsigeligt: et indsat link reduceres først til det sidste segment af stien, derefter ændres teksten til små bogstaver, stopord fjernes, ikke-latinske tegn translittereres, tal og specialtegn fjernes, hvis du har bedt om det, og derefter samles alt det resterende med din valgte separator. Derefter afkortes resultatet til den maksimale længde, og til sidst får en gentagelse et numerisk suffiks. "Tekst til konvertering" accepterer op til 500.000 tegn ad gangen, hvilket svarer til et par tusind artikeltitler.
Én linje ind, ét slug ud. Indsæt en hel liste af titler, og hver linje bliver til sit eget nummererede slug, hvor den oprindelige titel vises ovenover i gråt, så du i et parti på halvtreds stadig kan se, hvilket slug der hører til hvilken overskrift. En liste, der allerede findes i en fil, behøver ikke at gå gennem udklipsholderen: "Indlæs fra fil", knappen ved siden af inputfeltet, åbner en almindelig tekstfil — .txt, .csv, .md, .json og lignende — og slipper indholdet ned i feltet. Din browser læser filen på præcis samme måde, som den læser det, du skriver, og den bliver ikke uploadet nogen steder. "Opdel input efter" bestemmer, hvordan listen bliver skåret fra hinanden. "Automatisk" er standard: et linjeskift adskiller altid elementer, mens et komma kun adskiller dem, når inputtet er en enkelt linje, hvor delene alle ser ud som selvstændige værdier — så "pris 3,5 EUR" og "Kapitel 5: resultater, konklusioner" forbliver hele i stedet for at blive splintret i fragmenter. "Linjeskift", "Komma" og "Mellemrum" tvinger valget, når du allerede kender formen på dine data. "Outputformat" bestemmer, hvordan et parti kommer tilbage, når du tager det — én per linje, adskilt med mellemrum eller adskilt med komma — og både "Kopiér alt" og "Gem som fil" følger det. "Historik" gemmer dine sidste 10 partier i din egen browser, så en liste, du konverterede for en time siden, stadig er der.
Ikke-latinsk tekst er den del, de fleste slug-generatorer får nogenlunde rigtigt, men som få får helt rigtigt. En URL er sikrest i ren ASCII, så kyrilliske, græske, arabiske, kinesiske og europæiske bogstaver med accent skal konverteres, og det eneste reelle spørgsmål er efter hvilken regel. Denne side besvarer det i to lag. Det generelle lag dækker hvert eneste skriftsystem: et translitterationsbibliotek med et fornuftigt ASCII-svar for næsten ethvert tegn, du kan skrive, og det er det lag, der træder til for tegn, ingen tabel dækker. Det specifikke lag er et sæt håndbyggede tabeller til sprog, hvor det generiske svar ikke er det, landet faktisk bruger; dansk er et af dem, og listen udvides, efterhånden som værktøjet når sprog, der har brug for en. Ved at vælge en af dem indlæses dens tabel i et redigerbart gitter under "Translitterationsregler", hvor hvert bogstav er et tekstfelt, du kan ændre, og "Nulstil regler til standard" sætter det tilbage. Dansk har sin egen tabel her, hvor for eksempel æ → ae, ø → oe og å → aa som standard. For at vise, at standarderne virkelig varierer: den ukrainske standard følger Ministerkabinettets resolution nr. 55.
"Fjern stopord" er slået til som standard. Den fjerner de små bindeord — som en, et, og, i, på — der forlænger et slug uden at tilføje mening til det. Listen under "Stopord" er fuldt redigerbar og leveres allerede udfyldt: en engelsk liste plus en liste for det sprog, siden er på, så den danske side kender og, i, at, en, et og på. Tilføj dine egne ord, slet dem du vil beholde, eller slå funktionen helt fra, i hvilket tilfælde feltet bliver gråt i stedet for at foregive, at det stadig har betydning. To ærlige bemærkninger om dette. At fjerne stopord er en lille oprydningsgevinst snarere end et rangordningsværktøj — du får en kortere, renere adresse, ikke en bedre position i søgemaskinerne. Og hvis hvert eneste ord i en titel tilfældigvis står på listen, er det ærlige resultat ingenting overhovedet, så værktøjet fortæller dig det i stedet for at give dig et tomt felt.
Resten af kontakterne bestemmer formen. "Separator i slug" vælger, hvad der sidder mellem ordene, og bindestregen som standard er ikke et spørgsmål om smag: Google læser en bindestreg som en ordadskiller og en understregning som et bindesymbol, så my_first_post når en crawler som ét langt ord, mens my-first-post når den som tre. "Understregning (_)" er der for de systemer, der insisterer på det. "Små bogstaver" er slået til, fordi de fleste servere behandler adresser som store og små bogstaver, og blandede store og små bogstaver er en nem måde at ende med to URL'er til den samme side. "Fjern specialtegn" fjerner alt, der ikke er et bogstav, tal, mellemrum, bindestreg eller understregning, hvilket holder tegnsætning, anførselstegn og emoji ude af en adresse — emoji fjernes specifikt før translitteration, så en raket ikke bliver til ordet rocket. "Fjern tal" er slået fra, fordi et tal i en titel normalt er en del af titlen. "Maks. længde" løber fra 10 til 200 og er som standard 80; når et slug er længere end det, skærer motoren ved det sidste hele ord, der passer, i stedet for midt i et. Tallet ved siden af hvert resultat er dets længde i tegn, og det bliver rødt efter 60 — ikke en hård grænse, men det punkt, hvor et slug begynder at blive afkortet i søgeresultater og bliver besværligt at indsætte i en besked.
Der findes to kontakter mere, fordi de forvandler en bulkkonvertering tilbage til en opgave med ét klik. "Gør slugs unikke" fanger det tilfælde, hvor to forskellige titler reduceres til det samme slug — "Top 10 tips" og "Top-10 tips" bliver begge til top-10-tips — og giver den anden et -2, den tredje et -3, idet basen først forkortes, hvis suffikset ville skubbe det forbi din maksimale længde. To sider på én adresse er et problem, der er langt billigere at fange i denne liste end i dit CMS. "Hent slug fra en indsat URL" fungerer i den anden retning: indsæt et fuldt link, og værktøjet tager den sidste del af stien, fjerner forespørgselsstrengen og enhver .html eller .php-endelse og afkoder procentkodning, så en Wikipedia-adresse, der slutter på %D0%9B%D1%8C%D0%B2%D1%96%D0%B2, kommer tilbage som lviv i stedet for en række hex-cifre. Det udløses kun, når hele linjen er et link, så en URL, der er citeret inde i en sætning, efterlades, hvor den er.
Hvorfor vælge denne slug-generator?
- Kun i browseren: dine titler uploades aldrig, og siden fortsætter med at fungere offline
- Bulkkonvertering fra indsættelse eller en tekstfil, med kildetitlen over hvert slug
- Ægte translitterationsstandarder per sprog, ikke én generisk tabel til dem alle
- Dansk translitteration er tilgængelig som standard (æ → ae, ø → oe, å → aa)
- Hver regel kan redigeres bogstav for bogstav, med nulstilling med ét klik
- Automatiske -2 og -3 suffikser, så ingen to slugs i et parti kolliderer
- Indsæt et link, og få slugget ud af det, med procentkodning afkodet
- En redigerbar liste over stopord, der ankommer udfyldt for dit sprog
- Sikker afkortning ved et helt ord, med et tegnantal ved siden af hvert resultat
- Gratis og ubegrænset: ingen tilmelding, ingen kvote, intet gemt på vores servere
Slugs er nødvendige, hvor end en side skal have en læsbar adresse. En blog eller et nyhedswebsted forvandler hver overskrift til et slug, hvilket er det scenarie, dette værktøj blev formet omkring: indsæt ugens overskrifter, få ugens URL'er. En webshop gør det samme for produkt- og kategorinavne, normalt i bulk efter en import, og typisk på et sprog, hvis alfabet adressen ikke kan indeholde. Dokumentation og vidensdatabaser opbygger ankre og filnavne på samme måde. Ud over webadresser er den samme rene streng, hvad du ønsker for et filnavn, der ikke går i stykker på et andet styresystem, en databasenøgle, som en person kan læse i en log, et branchenavn, et billednavn i et mediebibliotek eller identifikatoren for en sektion i en statisk sidegenerator. Ethvert sted, hvor et menneskelæsbart navn skal overleve at blive lagt i et maskinlæsbart felt, er et sted, hvor et slug hører hjemme.
Et par begrænsninger er værd at kende til, før du stoler på det. Dette er en generator, ikke en validator: den kontrollerer ikke, om et slug allerede er taget på din hjemmeside, fordi den ingen idé har om, hvad dit websted indeholder — den unikhed, den garanterer, er inden for det parti, du har foran dig. Omdirigeringer er også dit job; at ændre slugget på en udgivet side ødelægger dens gamle adresse, og det er en beslutning for dit CMS snarere end for dette værktøj. "Gem som fil" skriver ren tekst, ikke CSV eller JSON. Den automatiske opdeling træffer en beslutning om kommaer, der er rigtig i næsten alle tilfælde, men ikke i dem alle, hvilket er præcis hvorfor "Opdel input efter" lader dig underkende det. Og translitteration er en konvention snarere end en oversættelse — København bliver til koebenhavn, ikke Copenhagen — så når en side har et etableret navn på målsproget, er det navn et bedre slug end en automatisk konvertering af originalen.