URL-Slug-Generator

Verwandelt einen Titel in einen URL-Slug, transliteriert Hebräisch, Arabisch, Kyrillisch und Griechisch, mit Unicode-Pfadform und Kollisionsprüfung.

Slug
creme-brulee-gruesse-aus-muenchen
Unicode-Pfad — ohne Transliteration, ohne Verlust
crème-brûlée-grüße-aus-münchen
Prozentkodiert — was der Server sieht
cr%C3%A8me-br%C3%BBl%C3%A9e-gr%C3%BC%C3%9Fe-aus-m%C3%BCnchen

Der Browser zeigt die lesbare Form oben und sendet diese. Beide sind derselbe Pfad.

Was dieses Werkzeug tut

Fügen Sie einen Titel in beliebiger Schrift ein, und er kommt als der Slug zurück, den eine URL tragen kann: Kleinbuchstaben, keine Satzzeichen, Wörter durch ein Trennzeichen Ihrer Wahl verbunden. Lateinische Akzente werden entfernt, und Hebräisch, Arabisch, Kyrillisch und Griechisch werden in lateinische Buchstaben transliteriert.

Neben dem Slug steht derselbe Titel in seiner eigenen Schrift. Auch diese Form ist ein zulässiger Pfad, und für die Schriften, die bei der Transliteration am meisten verlieren, ist sie oft die bessere Antwort — beide entstehen deshalb aus einem Titel, statt dass das Werkzeug für Sie entscheidet.

Wozu ein Slug da ist

Ein Slug ist der für Menschen lesbare Teil einer URL: das Stück nach dem letzten Schrägstrich, das die Seite benennt statt sie zu nummerieren. Es gibt ihn, weil ein Pfad, der sich wie Wörter liest, das Einfügen in eine Nachricht, den Druck auf einer Folie und das Vorlesen am Telefon übersteht, und eine numerische Kennung nichts davon.

Genau darum ist seine Form so eng gefasst. Ein Slug soll stabil sein — ihn zu ändern zerbricht jeden Link, der bereits auf die Seite zeigt — und er soll eindeutig sein, wenn man ihn von Hand schreibt, was Leerzeichen ausschließt, Großbuchstaben, die eine Leserin vielleicht wiedergibt und vielleicht nicht, und Satzzeichen, die einer Shell oder einem Markdown-Parser etwas bedeuten.

Wie die Akzente verschwinden

Die meisten lateinischen Diakritika entfernt die Plattform und keine Tabelle. Unicode definiert é als zerlegbar in ein einfaches e gefolgt von einem kombinierenden Akut; wer also in diese zerlegte Form normalisiert und danach jede kombinierende Marke verwirft, behält den einfachen Buchstaben. Dieselbe Operation erledigt ñ, ç, ő und ein paar hundert weitere, und sie kann nicht veralten, weil sie die Unicode-Daten benutzt, die der Browser ohnehin mitbringt.

Sie erledigt nicht alles, und die Lücke ist es wert, gekannt zu werden. Ein Buchstabe, dessen Zeichen ein Strich durch die Glyphe ist statt ein Zeichen darüber — ø, ł, đ, ħ, ŧ — ist ein einzelnes, unteilbares Zeichen ganz ohne Zerlegung: Marken zu entfernen lässt ihn genau so, wie er war. Dasselbe gilt für eine Ligatur: ß, æ und œ stehen jeweils für eine Lautfolge, nicht für einen Buchstaben plus Verzierung. Sie alle brauchen eine ausdrückliche Schreibung, und ohne sie würden sie schlicht aus dem Slug verschwinden.

Warum die Spracheinstellung die Antwort ändert

Es gibt keine einzige richtige Romanisierung von ü. Das Deutsche schreibt es ue, seit es den Umlaut gab — die zwei Punkte begannen als kleines hochgestelltes e — also ist Müller richtig mueller, und einer deutschen Leserin erscheint muller falsch. Das Französische, das Spanische und das Portugiesische behandeln ihre Diakritika als Akzente auf einem Buchstaben, der ansonsten er selbst bleibt: crème brûlée ist deshalb richtig creme-brulee, und es cruemme zu schreiben wäre Unsinn.

Die nordischen Sprachen widersprechen einander auf dieselbe Weise. Dänisch und Norwegisch verdoppeln den Vokal und folgen damit der älteren Schreibung, die der Buchstabe ersetzt hat; das Schwedische nicht:

  • Deutsch — ä wird ae, ö wird oe, ü wird ue, ß wird ss. München wird muenchen.
  • Dänisch und Norwegisch — æ wird ae, ø wird oe, å wird aa. Ålborg wird aalborg.
  • Schwedisch — ä wird a, ö wird o, å wird a. Ålborg wird alborg.
  • Allgemein — jede Marke fällt weg, der Grundbuchstabe bleibt. Ålborg wird alborg, München wird munchen.

Das sind keine konkurrierenden Näherungen an eine Antwort; es sind vier verschiedene richtige Antworten auf vier verschiedene Fragen. Nur eine kann die Voreinstellung sein, deshalb ist die Einstellung sichtbar und das Werkzeug nennt die Konvention, die das Gezeigte hervorgebracht hat. Ein Buchstabe ist überall gleich: ß ist eine Ligatur und kein Akzent, ihn wegzulassen löschte also einen Laut, und er ist hier in jeder Einstellung ss.

Die Schriften, die eine Tabelle brauchen

Nichts im Browser romanisiert Kyrillisch, Griechisch, Hebräisch oder Arabisch, jede ist also eine von Hand gegen eine veröffentlichte Norm geschriebene Tabelle. Zwei davon gehen gut aus, weil sie ihre Vokale schreiben:

  • Kyrillisch folgt BGN/PCGN, der Romanisierung auf englischsprachigen Karten und in Pässen: ж ist zh, ч ist ch, щ ist shch, х ist kh. Aus Москва wird moskva und aus Чехов wird chekhov.
  • Griechisch folgt ELOT 743, samt der dort definierten Digraphen: ου ist ou und nicht oy, und ευ ist ev. Aus Αθήνα wird athina und aus Ευρώπη wird evropi.

ISO 9 ist die andere bekannte kyrillische Norm und wird hier bewusst nicht verwendet. Sie ist umkehrbar, das ist ihr Zweck, aber sie erreicht das mit Diakritika: ж ist dort ž. Ein Slug hat keinen Platz für ein Hatschek, es würde also sofort zu z verflachen — und Жуков und Зуков ergäben denselben Slug. Der Digraph aus BGN übersteht das Verflachen.

Ein Detail der kyrillischen Tabelle ist leicht falsch zu machen und gehört gesagt. ё und й sehen aus wie Buchstaben mit Akzent, und Unicode zerlegt sie auch so, aber die Marke ist es, die sie zu anderen Buchstaben macht, statt Verzierung auf demselben zu sein. Marken vor dem Nachschlagen zu entfernen — die richtige Reihenfolge für jede andere Schrift hier — macht aus Ёлка stillschweigend elka und aus Андрей andrei.

Hebräisch und Arabisch, und was sie verlieren

Beide Schriften schreiben Konsonanten und überlassen die meisten Vokale Punkten, die gewöhnlicher Text nicht trägt. Das ist kein Kodierungsproblem, das dieses Werkzeug mit einer besseren Tabelle lösen könnte: die Information steht nicht im Text. «מאמר» sind vier Buchstaben, Mem-Alef-Mem-Resch, und die Lesung maamar kommt von einer Leserin, die das Wort bereits kennt. Buchstabe für Buchstabe kann daraus nur mamr werden.

Was möglich ist, geschieht. Wo ein Buchstabe zugleich als Vokalzeichen dient, wird die Position genutzt, denn sie ist das einzige Signal, das unpunktierter Text übrig lässt:

  • ו und י sind am Wortanfang Konsonanten und im Wortinneren Vokalbuchstaben, was aus שלום shlom macht statt shlvm.
  • Ein doppeltes וו oder יי ist an beiden Stellen der Konsonant — genau mit dieser Verdoppelung unterscheidet das Hebräische die zwei Lesungen.
  • ב, כ und פ sind am Wortanfang Verschlusslaute und im Inneren Reibelaute. Das Dagesch, das den Unterschied markiert, ist ein Vokalpunkt, also bleibt nur die Position.
  • Ein Buchstabe mit folgendem Geresch ist der Laut, für den das Alphabet keinen Buchstaben hat: ג׳ ist j, צ׳ ist ch, ז׳ ist zh. Ihn zu übergehen machte aus ג׳אז ein anderes Wort.
  • Die arabischen emphatischen Konsonanten fallen mit ihren einfachen Gegenstücken zusammen, weil ASCII keinen Ort für den unterscheidenden Punkt darunter hat. صابر und سابر ergeben denselben Slug.

Das Ergebnis ist lesbar und wiedererkennbar, und es ist keine Schreibung, die jemand richtig nennen würde. Das Werkzeug sagt das bei jedem hebräischen oder arabischen Ergebnis, statt eine verlustbehaftete Antwort als fertige auszugeben — und verweist auf die Form darunter, die überhaupt nichts verliert.

Der Unicode-Pfad, der keine Transliteration braucht

Ein URL-Pfad ist nicht auf ASCII beschränkt. RFC 3987 definiert die IRI — einen Bezeichner, der jedes Unicode-Zeichen enthalten darf — und die Regel, ihn auf die Leitung zu bringen, lautet, die UTF-8-Bytes als Prozent-Escapes zu kodieren. Jeder Browser tut das seit zwei Jahrzehnten, weshalb Wikipedia ihre hebräischen und russischen Artikeltitel unter deren eigenem Namen ausliefert und die Adresszeile sie lesbar anzeigt.

Die zweite Ausgabe hier ist also der Titel mit bereinigten Satzzeichen und Abständen und sonst unangetastet, und die dritte ist das, wonach er auf der Leitung tatsächlich aussieht. Es ist derselbe Pfad: die lesbare Form ist, was ein Browser anzeigt und was ein Mensch kopiert, die kodierte ist, was der Server protokolliert.

Welche zu nehmen ist, ist eine echte Entscheidung und keine Formsache. Die Unicode-Form verliert nichts, liest sich für jeden richtig, der die Sprache spricht, und ist das, was eine Suchmaschine anzeigen wird. Die transliterierte Form übersteht das Einfügen an Stellen, die Kodierungen verstümmeln, passt in Systeme, die ASCII-Pfade voraussetzen, und lässt sich am Telefon vorlesen. Für Hebräisch und Arabisch ist die Unicode-Form meist die bessere Antwort, gerade weil die Transliteration die Vokale nicht zurückholen kann.

Kollisionen, und warum sie nicht für Sie aufgelöst werden

Beim Slug-Bilden fallen Satzzeichen weg, also hören Titel, die sich nur darin unterscheiden, ganz auf sich zu unterscheiden. «Unser CSS-Leitfaden» und «Unser CSS-Leitfaden!» sind zwei Beiträge und ein Slug. Im Listenmodus wird jeder solche Zusammenstoß mit der Zeile markiert, mit der er kollidiert, denn das ist der Fehler, den ein Redaktionssystem verbirgt: es hängt still ein Suffix an, veröffentlicht, und die URL, die Sie erwartet haben, gehört dem anderen Beitrag.

Das Suffix gibt es als Schalter und erzeugt den Stil von WordPress und Django — unser-css-leitfaden, unser-css-leitfaden-2 — für den Fall, dass eine Liste irgendwo so eingefügt werden soll, wie sie ist. Er ist standardmäßig aus, weil eine Kollision meist ein Inhalts- und kein Benennungsproblem ist, und die Kollision bleibt auch bei eingeschaltetem Schalter markiert: ihn einzuschalten verbirgt also nichts.

Länge, und an der richtigen Stelle schneiden

Eine Längenbegrenzung schneidet an einer Trennzeichengrenze, nie innerhalb eines Wortes. Mitten im Wort abzuschneiden ergibt weniger einen kürzeren Slug als einen anderen — introduction-to-crypt ist kein ordentlicheres introduction-to-cryptography — und ein halbes Wort ist ein Wort, das etwas anderes bedeutet. Ist ein einzelnes Wort länger als die Grenze, gibt es keine Stelle zum Schneiden, und es wird ganz zurückgegeben statt zerteilt.

Es gibt keine allgemein richtige Grenze. Suchmaschinen zeigen etwa die ersten sechzig bis siebzig Zeichen einer URL, und ältere Systeme begrenzen manchmal ein Pfadsegment, aber nichts bricht bei einer bestimmten Zahl. Das Feld leer zu lassen lässt den Slug so lang, wie der Titel es braucht.

Häufig gestellte Fragen

Welche Zeichen sind in einem URL-Slug sicher?
Kleine ASCII-Buchstaben, Ziffern und ein einziges Trennzeichen funktionieren ausnahmslos überall. Der Bindestrich ist das übliche Trennzeichen; der Unterstrich funktioniert genauso, ist aber unter einem unterstrichenen Link schlechter zu sehen. Leerzeichen, Großbuchstaben und Satzzeichen sind technisch alle kodierbar und machen in der Praxis alle Ärger, deshalb entfernt ein Slug sie.
Bindestrich oder Unterstrich?
Der Bindestrich, aus zwei Gründen, die Moden überdauern. Er ist das, was jede große Plattform verwendet, also das, was Leser und andere Werkzeuge erwarten, und er verschwindet unter der Unterstreichung, die die meisten Links tragen — der Unterstrich nicht. Die Wahl wird hier angeboten, weil bestehende Systeme bestehende Konventionen haben und Einheitlichkeit innerhalb einer Website mehr zählt als jede der beiden Antworten.
Warum verliert mein hebräischer oder arabischer Titel die Vokale?
Weil sie nie geschrieben wurden. Beide Schriften markieren die meisten Vokale mit Punkten, die gewöhnlicher Text weglässt, also ist eine Lesung Buchstabe für Buchstabe alles, was ein Werkzeug ohne eine ratende Vokalisierungsmaschine hervorbringen kann. Dieses transliteriert, was tatsächlich dasteht, sagt es am Ergebnis dazu und bietet die Unicode-Pfadform, die den Titel genau so bewahrt, wie er eingegeben wurde.
Darf eine URL Hebräisch, Arabisch oder Chinesisch direkt enthalten?
Ja. Ein Pfad darf jedes Unicode-Zeichen führen; auf der Leitung wird er als UTF-8 prozentkodiert und vom Browser lesbar angezeigt. So liefert Wikipedia Artikeltitel in jeder Sprache aus, die sie abdeckt. Dieses Werkzeug zeigt beide Formen, die lesbare und die kodierte, denn die zweite erscheint in Serverprotokollen und in der Statistik.
Warum ist Müller mal mueller und mal muller?
Weil beides richtig ist, in verschiedenen Sprachen. Das Deutsche schreibt den Umlaut aus — die zwei Punkte begannen als kleines hochgestelltes e — während Französisch und Spanisch ihre Diakritika als Zeichen auf einem Buchstaben behandeln, der ansonsten er selbst bleibt. Die Spracheinstellung wählt eine Konvention, und das Werkzeug nennt Ihnen die angewandte.
Warum ergeben zwei meiner Titel denselben Slug?
Weil das Slug-Bilden Satzzeichen und Groß- und Kleinschreibung entfernt, oft das Einzige, was zwei Titel trennt. Der Listenmodus markiert jede Kollision mit der Zeile, mit der sie zusammenstößt. Sie können das Suffix -2 im WordPress-Stil einschalten, aber die dahinterliegende Frage — ob zwei Beiträge wirklich fast denselben Namen tragen sollten — verdient es, zuerst beantwortet zu werden.
Wird etwas von dem, was ich eingebe, an einen Server gesendet?
Nein. Jede Umwandlung läuft in Ihrem Browser; nichts wird hochgeladen oder protokolliert, und es funktioniert ohne Netzverbindung.