En slug är den läsbara änden av en webbadress — my-first-post i example.com/blog/my-first-post. Det är den del en person kan läsa innan de bestämmer sig för att klicka, och den del som en sökmotor läser som en kort beskrivning av vad sidan innehåller. Därför förtjänar den mer omtanke än ett databas-ID eller ett datum. Denna gratisgenerator omvandlar vilken text som helst till en slug: klistra in en titel i "Text att konvertera", tryck på "Generera", och resultatet visas med en kopieringsknapp bredvid. Standardinställningarna är de som de flesta webbplatser föredrar — små bokstäver, bindestreck mellan orden, vanliga utfyllnadsord borttagna, icke-latinska bokstäver translittererade — så en användbar slug är bara ett klick bort, och varje beslut är ett reglage som du kan ändra.
Allt sker på din egen enhet. Sidan laddar en liten JavaScript-motor och kör den lokalt: dina titlar laddas aldrig upp, loggas aldrig, och verktyget fortsätter att fungera även om anslutningen stängs av. Detta är också anledningen till att resultatet uppdateras i samma ögonblick som du ändrar en inställning. Arbetsordningen är värd att nämna, eftersom det är den som gör utdata förutsägbar: en inklistrad länk reduceras först till dess sista sökvägssegment, sedan konverteras texten till små bokstäver, därefter tas stoppord bort, icke-latinska tecken translittereras, sedan tas siffror och specialtecken bort om du begärt det, varefter det som återstår sätts samman med din valda avskiljare, därefter kapas resultatet till maxlängden, och slutligen får en upprepning ett numeriskt suffix. "Text att konvertera" hanterar upp till 500 000 tecken på en gång, vilket motsvarar ett par tusen artikeltitlar.
En rad in, en slug ut. Klistra in en hel lista med titlar så blir varje rad en egen numrerad slug, med sin ursprungliga titel utskriven i grått ovanför. I en grupp på femtio kan du alltså fortfarande se vilken slug som tillhör vilken rubrik. En lista som redan finns i en fil behöver inte passera via urklipp: "Ladda från fil", knappen bredvid inmatningsfältet, öppnar en vanlig textfil — .txt, .csv, .md, .json och liknande — och släpper in dess innehåll i fältet. Din webbläsare läser filen exakt på samma sätt som den läser det du skriver, och ingenting laddas upp någonstans. "Dela upp indata med" avgör hur listan klipps isär. "Automatiskt" är standard: en radbrytning separerar alltid objekt, medan ett komma bara separerar dem när inmatningen är en enda rad där alla delar ser ut som fristående värden — så "pris 3,5 miljoner kr" och "Kapitel 5: resultat, slutsatser" förblir intakta i stället för att splittras i fragment. "Radbrytning", "Komma" och "Mellanslag" tvingar fram valet när du redan känner till formen på dina data. "Utdataformat" bestämmer hur ett parti kommer tillbaka när du hämtar det — en per rad, separerade med mellanslag eller separerade med kommatecken — och både "Kopiera alla" och "Spara till fil" följer denna inställning. Din "Historik" behåller de senaste 10 körningarna i din egen webbläsare, så en lista du konverterade för en timme sedan finns fortfarande kvar.
Icke-latinsk text är den del som de flesta slug-generatorer får ungefär rätt, och väldigt få får exakt rätt. En URL är som säkrast i ren ASCII, så kyrilliska, grekiska, arabiska, kinesiska och europeiska bokstäver med accent måste konverteras, och den enda verkliga frågan är enligt vems regel. Den här sidan besvarar det i två lager. Det allmänna lagret täcker varje skriftsystem: ett translittereringsbibliotek med ett rimligt ASCII-svar för nästan alla tecken du kan skriva, vilket är vad menyn "Translitterera från" menar med "Automatiskt (alla språk)". Det specifika lagret är en uppsättning handbyggda tabeller för de språk där det generiska svaret inte är det som landet faktiskt använder. Menyn "Translitterera från" namnger de som har en tabell idag, och uppsättningen växer i takt med att verktyget når fler språk som behöver en. Väljer du en laddas dess tabell in i ett redigerbart rutnät under "Translittereringsregler", där varje bokstav är ett textfält som du kan ändra, och "Återställ standardregler" återställer det. Den ukrainska tabellen följer ministerkabinettets resolution nr 55 från 2010, den standard som trycks i ukrainska pass, inklusive de detaljer som är lätta att missa: зг blir zgh istället för zh så att det skiljer sig från ж; є, ї, й, ю och я tar en form i början av ett ord och en annan inuti det; och apostrofen samt mjukt tecken tas bort utan att starta ett nytt ord, så Знам'янка blir znamianka och inte znamyanka. Tyska använder som standard den utökade varianten ä → ae, ö → oe, ü → ue som tyska adresser faktiskt använder, med en enklare ä → a-variant om du föredrar den.
"Ta bort stoppord" är aktiverat som standard. Funktionen tar bort de små bindeorden — en, ett, den, det, och — som förlänger en slug utan att tillföra någon mening. Listan under "Stoppord" är helt redigerbar och levereras redan ifylld: en engelsk lista plus en lista för språket på den sida du befinner dig, så den svenska sidan känner till och, i, på, för. Lägg till egna ord, radera de du vill behålla, eller stäng av funktionen helt, varpå fältet blir grått istället för att låtsas spela roll. Två ärliga anmärkningar om det. Att rensa bort stoppord är en liten vinst i renhet snarare än en hävstång för rankning — du får en kortare och snyggare adress, inte en bättre position. Och om varje ord i en titel råkar finnas med på listan är det ärliga resultatet ingenting alls, så verktyget talar om det för dig i stället för att ge dig en tom ruta.
Resten av reglagen bestämmer formen. "Avskiljare i slugen" väljer vad som sitter mellan orden, och standardvalet bindestreck är inte en smaksak: Google läser ett bindestreck som en ordavskiljare och ett understreck som ett sammanfogande tecken, så my_first_post når en sökrobot som ett enda långt ord medan my-first-post når den som tre. "Understreck (_)" finns där för de system som insisterar på det. "Små bokstäver" är aktiverat eftersom de flesta servrar behandlar adresser som skiftlägeskänsliga, och blandat skiftläge är ett enkelt sätt att få två webbadresser för en och samma sida. "Ta bort specialtecken" rensar bort allt som inte är en bokstav, en siffra, ett mellanslag, ett bindestreck eller ett understreck, vilket är det som håller interpunktion, citattecken och emojis borta från en adress — emojis tas bort före translittereringen specifikt så att en raket inte blir ordet rocket. "Ta bort siffror" är avstängt, eftersom en siffra i en titel vanligtvis är en del av titeln. "Maxlängd" går från 10 till 200 och har standardvärdet 80; när en slug är längre än så klipper motorn vid det sista hela ordet som får plats i stället för att klippa av ett ord i mitten. Siffran bredvid varje resultat är dess längd i tecken, och den blir röd efter 60 — inte en absolut gräns, men den punkt där en slug börjar klippas av i sökresultaten och blir klumpig att klistra in i ett meddelande.
Ytterligare två reglage existerar för att de förvandlar en masskonvertering tillbaka till ett klickjobb. "Gör sluggar unika" fångar upp det fall där två olika titlar reduceras till samma slug — "Topp 10 tips" och "Topp-10 tips" blir båda topp-10-tips — och ger den andra ändelsen -2, den tredje -3, och kortar av basen först ifall suffixet skulle pressa den över din maxlängd. Två sidor på samma adress är ett problem som är mycket billigare att fånga i den här listan än i ditt CMS. "Hämta slugen från en inklistrad URL" fungerar i motsatt riktning: klistra in en fullständig länk så tar verktyget den sista delen av sökvägen, tar bort frågesträngen och alla eventuella .html- eller .php-ändelser, och avkodar procentkodning, så att en Wikipedia-länk som slutar på %D0%9B%D1%8C%D0%B2%D1%96%D0%B2 kommer tillbaka som lviv istället för en rad hex-siffror. Funktionen löser bara ut när hela raden utgörs av en länk, så en URL som citeras i en mening lämnas där den är.
Varför välja den här slug-generatorn?
- Endast webbläsare: dina titlar laddas aldrig upp, och sidan fortsätter att fungera offline
- Masskonvertering från texturklipp eller textfil, med källtitel ovanför varje slug
- Riktiga translittereringsstandarder per språk, inte en generisk tabell för dem alla
- Ukrainska enligt resolution nr 55 från 2010 — den stavning som används i pass
- Varje regel är redigerbar bokstav för bokstav, med en snabbåterställning
- Automatiska suffix med -2 och -3 så att inga sluggar i en omgång kolliderar
- Klistra in en länk och få ut slugen ur den, med procentkodningen avkodad
- En redigerbar lista med stoppord som levereras ifylld för ditt språk
- Säker trunkering vid ett helt ord, med teckenräkning bredvid varje resultat
- Gratis och obegränsat: ingen registrering, ingen kvot, ingenting sparas på våra servrar
Sluggar behövs varhelst en sida måste bära en läsbar adress. En blogg eller nyhetssajt förvandlar varje rubrik till en, vilket är fallet detta verktyg formades kring: klistra in veckans rubriker, få ut veckans URL:er. En webbutik gör detsamma för produkt- och kategorinamn, vanligtvis i stor skala efter en import, och oftast på ett språk vars alfabet adressen inte rymmer. Dokumentationer och kunskapsdatabaser bygger ankarlänkar och filnamn på samma sätt. Utöver webbadresser är samma rena sträng det du vill ha för ett filnamn som inte kommer att gå sönder på ett annat operativsystem, en databasnyckel som en person kan läsa i en logg, ett branchnamn, ett bildnamn i ett mediabibliotek, eller identifieraren för en sektion i en statisk sidgenerator. Varje plats där ett mänskligt läsbart namn måste överleva att stoppas in i ett maskinläsbart fält är en plats där en slug hör hemma.
Ett fåtal begränsningar är bra att känna till innan du förlitar dig på det. Detta är en generator, inte en validator: den kommer inte att kontrollera om en slug redan är upptagen på din webbplats, eftersom den inte har någon aning om vad din webbplats innehåller — den unikhet som garanteras gäller enbart för den grupp du har framför dig. Omdirigeringar är också ditt jobb; om du ändrar slugen för en publicerad sida förstörs dess gamla adress, och det är ett beslut för ditt CMS snarare än för det här verktyget. "Spara till fil" skriver i vanlig klartext, inte i CSV eller JSON. Den automatiska uppdelningen gör en bedömning om kommatecken som är rätt i nästan varje fall men inte i precis alla, vilket är exakt anledningen till att "Dela upp indata med" låter dig åsidosätta det. Och translitterering är en konvention snarare än en översättning — München blir muenchen, inte Munich — så när en sida har ett etablerat namn på målspråket, är det namnet en bättre slug än någon automatisk konvertering av originalet.