Quellen und Lizenzen
Woher jede Zahl auf dieser Website kommt, unter welcher Lizenz sie steht, was der Fahrplandatensatz nicht veröffentlicht — und wer die Fotografien gemacht hat
Der ganze Fahrplan steckt in einer einzigen Datei, und die läuft ab
Es gibt für die Leipziger Straßenbahn keinen kleinen, eigenen Fahrplandatensatz. Was es gibt, ist der offene Fahrplandatensatz für ganz Deutschland, herausgegeben von DELFI e.V. und ausgeliefert über das Spiegelangebot gtfs.de: ein Archiv von 265 MB, in dem der Nahverkehr der ganzen Republik liegt. Alles, was auf dieser Website eine Uhrzeit, eine Haltestelle oder einen Takt nennt, ist daraus gerechnet.
Aus diesem Archiv wird genau ein Betrieb herausgefiltert: die Linien mit dem Verkehrsmittel-Kennzeichen der Straßenbahn in Leipzig. Das sind 19 Linieneinträge, 228 Haltestellen, 495 Bahnsteige, 10.774 Fahrtzeilen und 272.277 Zeilen mit Haltezeiten — gelesen im Durchlauf, ohne das Archiv auszupacken. Was diesen Filter übersteht, ist diese Website: 13 Tageslinien, zwei Nachtlinien und 225 Haltestellen mit eigener Seite.
Die vier Nummern 38, 51, 54 und 56 tauchen im Datensatz ebenfalls auf, fahren aber nur an je drei Tagen und wechseln von Ausgabe zu Ausgabe. Sie werden deshalb mit ihren Daten erwähnt und haben keine eigene Seite: eine Linienseite, die in zwei Wochen eine andere Linie beschreibt, ist schlechter als keine.
| Was der Aufbau über die Quelldatei festhält | Wert |
|---|---|
| Herausgeber der Daten | DELFI e.V. |
| Ausgeliefert über | gtfs.de |
| Datei | https://download.gtfs.de/germany/nv_free/latest.zip |
| Größe | 265 MB (264.567.981 Bytes) |
| MD5 | 10c367ba330634005e455bf403e26e21 |
| SHA-256 | b77c2536187847ea36cabe3a6faf9450ea3125be471bd1d8d8b1fdfab9b40350 |
| Last-Modified, wie der Server sie meldet | Sat, 07 Nov 2026 09:32:04 GMT |
| Geltungszeitraum im Inneren der Datei | 7. November 2026 bis 7. Dezember 2026 |
| Tage im Fenster | 31 |
| Tabellen im Archiv | agency.txt, attributions.txt, calendar.txt, calendar_dates.txt, feed_info.txt, routes.txt, stop_times.txt, stops.txt, trips.txt |
Die Lizenz, so wie sie heute dasteht: CC BY, ohne Version
Hier wird bewusst CC BY geschrieben und nicht „CC BY 4.0“, obwohl das runder klänge. Der Grund ist, dass niemand in der Kette die Variante benennt. gtfs.de schreibt auf der Seite seiner Feeds wörtlich „Creative Commons 4.0 Lizenz“, ohne zu sagen, welche der vier Varianten gemeint ist. Das amtliche Portal von DELFI schreibt „Creative Commons Namensnennung (CC-BY)“ und nennt dafür keine Version. Und feed_info.txt im Archiv selbst nennt den Herausgeber und erklärt überhaupt keine Lizenz. Was sich aus allen drei Stellen zusammen sicher sagen lässt, ist genau das: Namensnennung. Gelesen am 14. November 2026.
Die Namensnennung ist abgeschrieben, nicht formuliert
Im Archiv liegt eine Tabelle attributions.txt, und was dort steht, ist die Nennung, die die Lizenz verlangt. Sie lautet, Wort für Wort:
Diese Zeile wird nicht umgeschrieben und nicht gekürzt. Sie steht auf dieser Seite, und sie steht damit genau einmal auf der ganzen Website — eine Nennung, die in jeder Fußzeile wiederholt wird, liest irgendwann niemand mehr.
Der dritte Name in dieser Zeile ist der wichtigste
„OpenStreetMap contributors“ steht dort nicht aus Höflichkeit. Ein Teil der Geodaten des Bundesdatensatzes stammt aus OpenStreetMap, und OpenStreetMap steht unter der Open Database License 1.0. Das hat zwei Folgen, die diese Website einhält: der Netzplan auf dieser Website ist aus den Koordinaten dieses Datensatzes gezeichnet und nennt deshalb OpenStreetMap; und die Koordinatensammlung wird hier nirgends als eigene Grundlage ausgegeben. Die Bedingungen stehen bei OpenStreetMap.
Und eine Quelle, aus der hier nichts veröffentlicht wird
Es gibt einen zweiten, älteren Fahrplandatensatz für Leipzig, der auf einem offenen Datenportal der Stadt liegt. Er lädt herunter, aber sein Geltungszeitraum endete am 4. Januar 2024, seine Datenkarte sagt, dass er nicht mehr erneuert wird, und er erklärt keine Lizenz. Er wird hier ausschließlich zum Gegenlesen benutzt — um Haltestellennamen gegenzuprüfen —, und es wird nichts aus ihm veröffentlicht. Dass er bestimmte Daten enthält, die der heutige Datensatz nicht hat, ist an zwei Stellen dieser Seite ein Argument, nie eine Zahl.
Warum hier keine Ankunftszeiten aus einem Livestrom stehen
Ein offener Livestrom für Deutschland existiert, er braucht keinen Schlüssel, und er erfasst die Leipziger Straßenbahn auch wirklich. Das ist nachgemessen und nicht vermutet: 6 Stichproben im Abstand von einer Minute, alle mit Antwortcode 200, mit 410 bis 421 Straßenbahnfahrten, die gerade unterwegs waren, und allen 13 Tageslinien. Und 6 verschiedene Fingerabdrücke aus 6 Stichproben — wobei der Fingerabdruck nur aus den Vorhersagen der Straßenbahn gebildet wird und nicht aus der Prüfsumme der Bundesdatei, die sich schon durch die Busse des Landes ändert, selbst wenn Leipzig eingefroren wäre.
| Stichprobe | HTTP | Einträge im Bundesstrom | davon Straßenbahn | mit route_id | Fingerabdruck |
|---|---|---|---|---|---|
| 1 | 200 | 59.926 | 410 | 0 | 9f93dd4502c26c03 |
| 2 | 200 | 59.942 | 410 | 0 | 9cf7fed9847caa72 |
| 3 | 200 | 60.248 | 412 | 0 | 2e4325e354aba978 |
| 4 | 200 | 60.511 | 420 | 0 | de3de3257fd86421 |
| 5 | 200 | 60.233 | 419 | 0 | cc3e36df6ec237b3 |
| 6 | 200 | 61.007 | 421 | 0 | d54453cb228a470d |
Trotzdem wird dieser Strom hier nicht benutzt, und das hat drei Gründe, von denen jeder einzelne genügt.
Erstens: es ist eine andere Lizenz
Der statische Fahrplan steht unter CC BY. Der Livestrom steht unter CC BY-SA 4.0, diesmal mit ausdrücklich genannter Variante. Das ist die Bedingung „Weitergabe unter gleichen Bedingungen“. Einzelne Abfahrten auf einer Seite anzuzeigen erzeugt noch keine Datenbank, die man weitergeben müsste — den Strom selbst oder einen Abzug daraus weiterzureichen aber schon. Zwei Lizenzen in einem Produkt zu mischen ist eine Entscheidung, die man einmal trifft und dann jahrelang mit sich schleppt.
Zweitens: niemand verspricht, dass Leipzig drin bleibt
Auf der Seite, die diesen Strom beschreibt, steht eine Tabelle der beteiligten Verbünde und ihrer Gebiete. Leipzig steht in dieser Tabelle nicht — die Straßenbahn kommt über einen allgemeinen Eintrag herein, der „Teile Deutschlands“ abdeckt. Heute funktioniert das, gemessen. Eine Website, deren Abfahrtstafel von einem Eintrag abhängt, zu dem sich niemand verpflichtet hat, zeigt irgendwann eine leere Kachel, und das meistens an dem Tag, an dem viele Leute sie aufrufen.
Drittens, und das ist der technische Grund: der Strom sagt nicht, welche Linie er meint
In der Beschreibung jeder Fahrt im Livestrom ist das Feld für die Linie leer. Null von rund sechzigtausend Einträgen. Damit bleibt als einzige Verbindung zum Fahrplan die Fahrtnummer — und die Fahrtnummern dieses Datensatzes sind nackte Zahlen, die der Umwandler bei jeder Neuausgabe neu vergibt, und das passiert alle paar Tage. Eine Website, deren Datenschicht einen Tag älter ist als der Strom, ordnet also Fahrten aus einer anderen Stadt einer Leipziger Haltestelle zu, ohne dass irgendwo eine Fehlermeldung erscheint.
Wie groß dieses Rauschen ist, wurde ebenfalls gemessen: von 400 Kontrollnummern mit derselben Form, die im statischen Straßenbahn-Fahrplan nicht vorkommen, erscheinen 16 im Livestrom. Dass die Prüfung sie trotzdem alle verwirft, liegt an einer zweiten Bedingung — die Haltestellen einer erkannten Fahrt müssen zur gespeicherten Abfolge genau dieser Fahrt gehören — und am Ende bleiben null dieser falschen Treffer übrig. Die Prüfung funktioniert also; was fehlt, ist die Zusage, dass sie morgen dasselbe prüft.
Also steht auf dieser Website der veröffentlichte Fahrplan. Der Fahrplan weiß nichts von einer Verspätung, von einer Umleitung, von einer Baustelle oder von einem Ersatzverkehr, und an keiner Stelle wird behauptet, dass er das wüsste. Auch die Kachel zur Betriebslage auf der Startseite rechnet mit dem veröffentlichten Fahrplan und sagt das mit diesen Worten.
Die Linienfarben auf dieser Website sind unsere eigene Zuordnung
Die Linienfarben auf dieser Website sind unsere eigene Zuordnung. Im offenen Fahrplandatensatz steht nur eine einzige Farbe — die der Linie 1 (#65B32E); für die anderen achtzehn Linien ist das Feld leer.
Das ist kein Schönheitsfehler des Datensatzes, sondern eine Entscheidung, die hier offengelegt werden muss, weil Farbe auf einem Netzplan wie eine amtliche Angabe aussieht. Konkret: die Linie 1 behält den einzigen Wert, den die Datei mitbringt, nämlich #65B32E. Die anderen zwölf Tageslinien und die beiden Nachtlinien bekommen eine Farbe, die auf dieser Website gewählt wurde — nach drei Regeln, die man nachlesen können soll: die Töne sind über den Farbkreis verteilt und benachbarte Töne unterscheiden sich zusätzlich in der Helligkeit; jede Farbe muss mit der Schrift, die auf ihr steht, den Kontrastwert für Barrierefreiheit erreichen, was beim Aufbau geprüft wird und den Aufbau abbricht, wenn es nicht stimmt; und die Linienpaare, die sich die längsten gemeinsamen Abschnitte teilen, liegen im Farbkreis weit auseinander, damit man sie auf einem gemeinsamen Ast nicht verwechselt.
Dass es amtliche Linienfarben gibt, ist bekannt: der Netzplan des Verkehrsbetriebs arbeitet mit Linienkennfarben. Dieser Plan ist urheberrechtlich geschützt und wird hier weder nachgedruckt noch nachgezeichnet, und seine Farbwerte stehen in keiner offenen Quelle. Deshalb gilt hier: eine eigene, offengelegte Zuordnung ist ehrlicher als ein Farbwert, der amtlich aussieht und geraten ist.
Die Haltestellennamen sind aus zwei Feldern zusammengesetzt
Der Datensatz kennt zu jeder Haltestelle zwei Schreibweisen: eine für die Haltestelle als Ganzes und eine je Bahnsteig. Keine von beiden genügt allein. Die Haltestelle kürzt („Leipzig, Ahornstr.“), der Bahnsteig kürzt anders und hängt Betriebsangaben an („Hbf, Wintergartenstr. (Steig H)“, „Probstheida Li. 15“). Wer eines der beiden Felder einfach übernimmt, veröffentlicht 222 Haltestellennamen mit einer Abkürzung in der Überschrift und in der Adresse.
| Feld der Haltestelle | Feld des Bahnsteigs | auf dieser Website |
|---|---|---|
Leipzig, Ahornstr. | Ahornstraße | Ahornstraße |
Leipzig, Hauptbahnhof (Tram/Bus) | Hauptbahnhof (Steig A) | Hauptbahnhof |
Leipzig, Apelstr./Historischer Straßenbahnhof | Apelstr., Hist. Strbf. | Apelstraße/Historischer Straßenbahnhof |
Leipzig, Arthur-Hoffmann-/Richard-Lehmann-Str. | A.-Hoffmann-/R.-Lehmann-Str. | Arthur-Hoffmann-/Richard-Lehmann-Straße |
Leipzig, Thekla, Tauchaer Str. | Thekla (Steig A) | Thekla, Tauchaer Straße |
Taucha (b. Leipzig), Otto-Schmidt-Str. | Taucha, O.-Schmidt-Str. | Taucha, Otto-Schmidt-Straße |
Die Regel, in der Reihenfolge, in der sie angewandt wird
- Beide Felder werden als Kandidaten genommen.
- Das vorangestellte „Leipzig, “ fällt weg. Markkleeberg, Schkeuditz und Taucha bleiben stehen: das sind eigene Gemeinden, und dort ist der Gemeindename eine Information — und ein Tarifhinweis.
- Betriebsangaben fallen weg: (Steig X), (St.X), (Tram/Bus), (Bus/Tram), (Bus), (Tram), (Gleisschleife), Li. <Nr.>.
- Aufgelöst wird nur, was der Datensatz selbst an anderer Stelle ausschreibt: „Str.“ zu „Straße“ in 46 Haltestellen, „str.“ zu „straße“ in 70, „S-Bf.“ zu „S-Bahnhof“ in 6, „Hbf“ und „Strbf“ in je einer. Keine Auflösung ohne diesen Nachweis.
- Abgekürzte Vornamen mit Punkt — „O.-Schmidt-Straße“, „M.-Liebermann-Straße“ — werden nicht aufgelöst. Den vollen Namen zu erraten wäre Erfinden; stattdessen gewinnt das Feld, das ihn schon ausgeschrieben enthält.
- Übrig bleibt der Kandidat mit den wenigsten offenen Abkürzungen; bei Gleichstand der, den eine zweite Quelle bestätigt; bei erneutem Gleichstand der längere — niemals kürzen. Das war 18 Mal nötig, und mit der umgekehrten Regel hieße die Endhaltestelle der Linie 9 heute „Thekla“ statt „Thekla, Tauchaer Straße“.
Von 227 geprüften Namen weicht genau einer ab
Die veröffentlichten Namen wurden gegen zwei unabhängige Quellen gehalten: die Beschilderung, wie sie in OpenStreetMap und in der deutschsprachigen Wikipedia steht, und den alten Datensatz von 2023. 226 Namen stimmen überein. Der eine, der nicht überstimmt, wird nicht stillschweigend geändert, sondern hier genannt: diese Website schreibt „Markkleeberg-Ost“, weil der heutige Datensatz das so führt, während die anderen Quellen „Markkleeberg-Ost, Schillerplatz“ sagen — der Datensatz kürzt hier offenbar. Wer dort aussteigt, sucht am Schild also gegebenenfalls nach dem längeren Namen.
Zwei Haltestellen mit demselben Namen, 237 Meter auseinander
Der Datensatz führt „Klinikum St. Georg“ zweimal: die Haltestelle, an der die Linien durchfahren, und die Wendeschleife, in der eine Linie umsetzt. Nach den Regeln oben hätten beide denselben Namen bekommen. Die Haltestelle mit den deutlich meisten Fahrten behält den sauberen Namen; die Wendeschleife behält ihre Unterscheidung im Namen und bekommt keine eigene Seite, weil sie keine Haltestelle ist, an der man sinnvoll aussteigt. Dass es überhaupt so viele Wendeschleifen gibt, liegt an der Bauart der Leipziger Wagen: sie haben die Türen nur auf einer Seite und müssen am Ende der Linie eine Schleife fahren.
Dieser Datensatz hat keine dauerhafte Haltestellen-Kennung
Es gibt kein Feld stop_code, keine amtliche Haltestellen-Kennung, keine DHID. Was es gibt, sind laufende Zahlen für Haltestellen, Linien, Fahrten und Betriebstage — und die erzeugt der Umwandler, der aus den Rohdaten diese Datei macht. Bei jeder Neuausgabe werden sie neu vergeben. Eine Website, die eine solche Zahl in eine Adresse, in einen Bilddateinamen oder in eine Datenbankzeile schreibt, hat in zwei Wochen Zeilen, die auf etwas anderes zeigen als auf das, was dort steht.
Das ist nicht theoretisch, sondern gemessen, und zwar an einem anderen Projekt, das aus einer früheren Ausgabe genau dieser Datei neunundvierzig solcher Zahlen gespeichert hatte. 47 von ihnen gibt es noch — und alle neunundvierzig benennen heute eine andere Haltestelle, teils am anderen Ende des Landes. Aus einem Platz in einer süddeutschen Großstadt ist eine Bushaltestelle in einem Dorf in Nordrhein-Westfalen geworden. Die Zahl ist noch da, die Bedeutung nicht.
Die dauerhafte Kennung dieser Website ist deshalb der Name selbst: augustusplatz, thekla-tauchaer-strasse. Das sind 228 eindeutige Kurznamen bei 228 Haltestellen, ohne eine einzige unaufgelöste Doppelung. Bei jeder Neuausgabe wird jede Haltestelle über die Schreibweisen wiedergefunden, die die Datenschicht von ihr aufbewahrt, und die Koordinate dient als Zeuge: mehr als zwei Kilometer Abstand heißt, dass ein Name anderswo wiederverwendet wurde, und weniger als 70 Meter — die Hälfte des kleinsten Abstands zweier Haltestellen dieses Netzes — heißt, dass eine Haltestelle umbenannt wurde. Bleibt eine übrig, bricht der Aufbau ab, statt eine Seite unter falschem Namen zu veröffentlichen.
Die Linien sind der angenehme Gegenfall: ihre Nummer — 1, 16, N17 — ist dieselbe Kennung wie am Fahrzeug und bleibt. Deshalb heißen die Linienseiten dieser Website nach der Nummer und die Haltestellenseiten nach dem Namen.
Ein Fenster von 30 Tagen, und darin drei verschiedene Netze
Die Liste der Haltestellen in dieser Datei ist nicht „das Netz“. Sie ist das Netz, so wie es in diesen 30 Tagen gefahren wird, Baustellen eingeschlossen. Gruppiert man die Betriebsnächte danach, welche Haltestellen die Tageslinien bedienen, fallen sie in drei Gruppen auseinander.
| Zeitraum | Nächte | bediente Haltestellen | Unterschied zum gültigen Netz |
|---|---|---|---|
| 7.11.2026 – 8.11.2026 | 2 | 226 | ohne Hauptbahnhof, Wintergartenstraße, dafür mit Windmühlenstraße |
| 9.11.2026 – 20.11.2026 | 12 | 224 | ohne An den Tierkliniken und Richard-Lehmann-/Zwickauer Straße |
| 21.11.2026 – 6.12.2026 | 16 | 226 | das heute gültige Netz |
Diese Website ist auf dem zuletzt gültigen Zeitraum gebaut — dem Zeitraum 21.11.2026 – 6.12.2026 mit 226 bedienten Haltestellen — und nicht auf dem mit den meisten Nächten. In diesem Fenster ist das zufällig derselbe; wäre das Fenster zwei Wochen früher geschnitten, wäre der größte Zeitraum der mit der Baustelle gewesen, und diese Website hätte 224 Haltestellen als das Netz ausgegeben. Zwei Haltestellen, die es wirklich gibt, hätten dann keine Seite.
Fünf Haltestellen werden nicht an allen Tagen bedient
Drei davon stehen im gültigen Netz und fehlen nur an bestimmten Daten; sie haben ihre Seite und auf ihr den Hinweis mit diesen Daten. Zwei sind etwas anderes: „Windmühlenstraße“ wird an 2 von 31 Tagen bedient und ist eine Wendekurve für den Messeverkehr, „Sportforum Ost“ nur an drei Tagen und nur von Verstärkernummern. Beide werden hier nicht als Haltestelle des Netzes veröffentlicht. Dass die Wendekurve die einzige der 228 Haltestellen ist, deren Name von keiner äußeren Quelle bestätigt wird, ist das zweite, unabhängige Zeichen dafür, dass sie keine Haltestelle des Liniennetzes ist.
Und ein Fahrtziel, das es als Haltestelle nicht gibt
Die Linie 3 trägt in Hunderten von Fahrten das Ziel „Knautkleeberg“ am Wagen, und keine dieser Fahrten hält an einer Haltestelle dieses Namens: der Ast im Südwesten ist in dieser Datei nicht enthalten, im Datensatz von 2023 war er es. Deshalb werden die Endhaltestellen dieser Website aus dem Fahrtmuster bestimmt und nie aus dem Zielschild — und deshalb gibt es dazu eine eigene Seite, statt die Sache zu verschweigen.
Die Bahnanschlüsse stehen in zwei weiteren Dateien
Wer in der Nahverkehrsdatei nach der S-Bahn sucht, findet sie nicht: dort ist keine einzige Linie mit dem Kennzeichen für Eisenbahn, in der ganzen Bundesdatei nicht. Wer nur dort sucht, kommt zu dem Schluss, Leipzig habe keinen Bahnanschluss. Die Züge liegen in den beiden anderen freien Dateien desselben Anbieters, einer für den Regionalverkehr (11 MB) und einer für den Fernverkehr (345 KB).
Eine erklärte Verbindung zwischen Straßenbahnhaltestelle und Bahnsteig gibt es in keiner der drei Dateien, und beide Objekte stehen ohnehin in verschiedenen Dateien. Die Anschlüsse auf dieser Website sind deshalb aus der Entfernung abgeleitet: Umkreis 400 m, der jeweils nächstgelegene Anschluss je Verkehrsmittel und Linie, und ab 250 m wird der Eintrag zur Nachprüfung markiert. So entstehen 38 Straßenbahnhaltestellen mit Bahnanschluss und 293 einzelne Verbindungen.
- Woher das Verkehrsmittel kommt: Das Kennzeichen im Datensatz sagt nur „Eisenbahn“ und wirft S-Bahn, Regionalzug und Fernzug in einen Topf. Unterschieden wird hier am Liniennamen:
S1…S6ist S-Bahn,RE/RBist Regionalverkehr,ICE/IC/ECist Fernverkehr. - Warum der Bus fehlt: Neben fast jeder Straßenbahnhaltestelle hält ein Bus. Eine Liste, die überall dasselbe sagt, ist keine Information.
- Und eine Abgrenzung, die hier ernst genommen wird: Der City-Tunnel gehört zur S-Bahn. Er erscheint auf dieser Website als Anschluss an den Haltestellen, die über seinen Stationen liegen, und wird in keinem Text und auf keinem Bild der Straßenbahn zugeschrieben.
Was dieser Fahrplandatensatz nicht veröffentlicht
Das ist Inhalt und keine Lücke. Wer eine dieser Angaben auf einer Website findet, die sich auf offene Fahrplandaten beruft, sollte fragen, woher sie kommt. Hier wird jede von ihnen weggelassen und benannt.
- Linienfarben. Das Feld ist in einer von 19 Linien gefüllt. Was auf dieser Website farbig ist, ist unsere Zuordnung — siehe oben.
- Langname und Beschreibung der Linie. Beide Felder sind in allen Linien leer. Was hier als Linienverlauf steht, ist aus den Endhaltestellen des Fahrtmusters gebildet.
- Richtung und Zielschild. Es gibt kein Feld für die Fahrtrichtung und keines für das Zielschild der Fahrt. Das Ziel steht an den Haltezeiten, die Richtung ergibt sich aus der Reihenfolge.
- Länge der Strecke. Es gibt keine Streckengeometrie. Die Kilometerangabe zu einer Linie ist die Luftlinienkette zwischen ihren Haltestellen und damit eine Untergrenze; sie heißt im Datenfeld auch so.
- Umsteigezeiten. Die Tabelle für Übergänge fehlt vollständig. Deshalb steht auf dieser Website nirgends eine Umsteigezeit in Minuten, sondern nur die Angabe, ob zwei Linien denselben Bahnsteig benutzen. Der alte Datensatz von 2023 hatte diese Tabelle — das ist der Beweis, dass die Angabe in der Kette des Betriebs existiert und man sie erfragen könnte.
- Tarife. Weder Preise noch Preisregeln. Woher der Fahrpreis hier kommt, steht im nächsten Abschnitt.
- Zugänge, Ausgänge und Aufzüge. Es gibt keine Zugänge als eigene Objekte, keine Wege im Inneren und keine Ebenen. Wie viele Ausgänge eine Haltestelle hat, wird hier deshalb nicht behauptet.
- Barrierefreiheit je Haltestelle. Das Feld für den stufenlosen Einstieg fehlt in den Haltestellen. Was diese Website über Barrierefreiheit sagt, sagt sie mit einer anderen Quelle und mit deren Namen.
- Der Grund für eine Umleitung. Der Datensatz zeigt die Wirkung — eine Haltestelle fehlt an bestimmten Tagen — und schweigt über den Anlass. Veröffentlicht wird die Wirkung, mit ihren Daten.
- Warum die vier Verstärkernummern an diesen drei Tagen fahren. Die Nummernbereiche lassen es vermuten, der Datensatz sagt es nicht.
- Alles, was kein Fahrplan ist. Fahrzeuge, Netzlänge, Eröffnungsdaten: alles davon steht in anderen Quellen, und wo diese Website so etwas nennt, nennt sie die Quelle dazu.
Der Fahrpreis steht nicht im Fahrplandatensatz
Die Preise auf dieser Website kommen aus den Veröffentlichungen des Tarifverbunds, der den Tarif für Leipzig und sein Umland festlegt: Mitteldeutscher Verkehrsverbund (MDV). Gelesen am 14. November 2026, mit dem Stand 27. März 2026; sie gelten laut der Preistabelle seit 1. August 2026. Die Tabelle selbst sagt „Alle Angaben ohne Gewähr“, und diese Website gibt sie deshalb mit Datum und Quelle weiter, statt zu versprechen, dass es die Preise von morgen sind.
Quellen: MDV-Ticketangebot (Preistabelle), Stand 27.03.2026 · Verbundtarif — Tickets & Preise im Überblick.
Veröffentlicht wird die Spalte für eine Zone, die Stadt Leipzig. Das ist eine Abgrenzung, die man kennen muss: Markkleeberg, Schkeuditz und Taucha liegen in anderen Tarifzonen, und wer dorthin oder von dort fährt, braucht eine andere Fahrkarte. Diese Website sagt das auf der Seite zu den Fahrpreisen und rechnet für solche Fahrten keinen Preis aus.
Was in der Nähe liegt, kommt aus OpenStreetMap
Auf jeder Haltestellenseite steht, was man von dort aus zu Fuß erreicht. Diese Angaben kommen aus OpenStreetMap und stehen unter der ODbL 1.0. Diese Lizenz verlangt die Nennung der Quelle, und die lautet „© OpenStreetMap contributors“. Das ist eine Bedingung und keine Höflichkeit: eine Karte oder eine Liste aus diesen Daten ohne diese Nennung verstößt gegen die Lizenz, auch wenn die Daten frei sind.
Gesucht wird im Umkreis von 600 m um die Haltestelle; wo in diesem Umkreis zu wenig Benanntes liegt — an 57 Haltestellen am Stadtrand — wird auf 1.000 m erweitert, und die Entfernung steht dann an jedem Eintrag. Von 2.280 gefundenen Objekten bleiben 1.804 brauchbare übrig; 476 fallen heraus, weil sie keinen Namen tragen oder nichts sind, wofür jemand aussteigt. Veröffentlicht werden 1.863 Einträge, verteilt auf die 225 Haltestellenseiten — mehr Einträge als Orte, weil mancher Ort bei zwei Haltestellen liegt und dann bei beiden steht.
Wie Entfernung und Gehzeit geschätzt werden
Diese Erklärung steht nur hier, und das ist Absicht: in 225 Haltestellenseiten wiederholt wäre sie doppelter Inhalt und würde trotzdem niemand lesen.
Die Meterangabe ist die Luftlinie zwischen Haltestelle und Ziel, multipliziert mit 1,3 — ein Zuschlag, der grob dafür aufkommt, dass man um Häuserblöcke herumgeht und nicht durch sie hindurch. Die Gehzeit rechnet mit 80 Metern pro Minute, was ein ruhiges Tempo auf dem Bürgersteig ist. Beides ist also eine Schätzung und keine berechnete Fußroute: es kennt keine Ampel, keine Treppe, keine Baustelle und keine Einbahnstraße für Fußgänger. Wörtlich steht an den Listen deshalb: „Entfernung und Gehzeit sind Schätzungen (Luftlinie × 1,3; 80 Meter pro Minute) und keine berechnete Fußroute.“.
Die 27 Fotografien und ihre Urheber
Die Bilder auf dieser Website sind nicht unsere. Sie kommen aus Wikimedia Commons und stehen unter Creative-Commons-Lizenzen, die ohne Ausnahme die Nennung des Urhebers verlangen; 25 von ihnen verlangen zusätzlich die Weitergabe unter gleichen Bedingungen. Genau das ist der Grund für diese Tabelle: ein Bild als Hintergrund einer Überschrift zu verwenden und den Namen des Fotografen nirgends zu nennen, ist ein Lizenzverstoß, auch wenn die Datei legal heruntergeladen wurde. Jedes Bild trägt seinen Urheber außerdem direkt unter sich, dort, wo es steht.
Noch eine Einschränkung, die man den Haltestellenseiten ansieht: frei lizenzierte Fotografien gibt es nur von elf der 225 Haltestellen. Die übrigen Seiten zeigen deshalb eine Aufnahme ihrer Linie, und das steht auch unter dem Bild — in der Bildunterschrift und noch einmal im Bild selbst. Ein beliebiges Straßenbahnfoto als „diese Haltestelle“ auszugeben wäre bequemer und wäre falsch.
Das Logo dieser Website ist eigene Arbeit: es ist nicht von Commons und es ist keine Abwandlung des Zeichens des Verkehrsbetriebs, das diesem gehört. Dasselbe gilt für den Netzplan, die Liniendiagramme und die Tabellen dieser Website — gezeichnet aus den Koordinaten und der Haltestellenfolge des offenen Datensatzes, mit der oben genannten Nennung, und nicht aus dem amtlichen Plan.
Wie diese Zahlen geprüft werden
Zwischen dem Datensatz und dieser Website liegt ein Prüfprogramm mit 134 Prüfungen in 16 Blöcken. Es prüft Dinge wie: dass die Haltestellenzahl stimmt, dass kein Name doppelt ist, dass jeder Wochentag von einem Fahrplan abgedeckt wird, dass keine Nacht in zwei Gruppen fällt, dass kein Datum außerhalb des Geltungszeitraums liegt, dass keine Umsteigezeit erfunden wurde, dass keine Linienfarbe erfunden wurde und dass die Datei nicht abgelaufen ist.
Ein Prüfprogramm, das immer grün leuchtet, prüft nichts. Deshalb gibt es ein zweites, das die Datenschicht 22 Mal absichtlich kaputt macht — eine Haltestelle löschen, eine Linie erfinden, die Umsteigezeit füllen, den Feiertag verschieben, eine Kennung des Datensatzes als Schlüssel benutzen — und verlangt, dass das Prüfprogramm jeden einzelnen Fall merkt. 22 von 22 werden erkannt.
Die zwei, auf die es ankommt
Der erste Angriff addiert 60 Sekunden auf einen einzigen Abschnitt der Linie 1. Der zweite ist der eigentlich interessante: er verändert zwei Abschnitte auf derselben Linie so, dass sie sich gegenseitig aufheben — eine Minute mehr hier, eine Minute weniger dort. Damit stimmt die Fahrzeit von Endhaltestelle zu Endhaltestelle wieder auf die Sekunde, und jede Prüfung, die nur das Ganze gegen die Summe seiner Teile hält, leuchtet grün. Gefunden werden beide von der Tabelle, die jedes Haltestellenpaar einzeln vergleicht: die Paare in der Mitte heben sich nicht auf.
Mediane addieren sich nicht, und darum ist die Toleranz gestaffelt
Die Fahrzeiten dieses Datensatzes stehen in ganzen Minuten: alle 272.277 Haltezeiten enden auf „:00“. Was diese Website zwischen zwei Haltestellen zeigt, ist der Median über alle Fahrten, und Mediane sind keine Summanden — zwanzig Rundungen hintereinander ergeben Minuten Abweichung gegen den Median der ganzen Strecke, ohne dass irgendwo ein Fehler steckt. Gemessen über alle Paare: bei einem Abschnitt ist die Abweichung in allen 1.467 Fällen null, bei zwei bis zehn Abschnitten höchstens eine Minute, bei elf bis einundzwanzig höchstens zwei und bei den längsten Ketten höchstens drei. Also lautet die Regel: eine Minute Spielraum je zehn Abschnitte.
Die 1.467 Paare mit einem Abschnitt werden dagegen exakt geprüft, mit Toleranz null. Das ist die Prüfung, die beißt: diese Paare decken jeden einzelnen Abschnitt jeder Linie ab, und deshalb fällt eine gefälschte Minute in einem Abschnitt immer auf, wie großzügig man die langen Strecken auch behandelt.
Die Tabelle, die prüft, wird nicht veröffentlicht
Verglichen wird gegen eine eigene Tabelle aus 20.332 Dreiergruppen (Linie, von, nach) mit 3.767.874 Einzelbeobachtungen, in der jeder Eintrag zusätzlich den Weg festhält, auf dem er gemessen wurde — es gibt Haltestellenpaare, die eine einzige Linie auf zwei verschiedenen Wegen verbindet, und ohne den Weg im Wert entstehen bis zu fünf Minuten Phantomabweichung ohne jeden Fehler. Diese Tabelle wird weder veröffentlicht noch zum Rechnen benutzt: wer mit derselben Zahl rechnet, mit der er prüft, prüft nichts. Gerechnet wird aus den Abschnitten (495 einzelne Nachbarpaare, 260.524 Messungen), weil nur das auch dann noch funktioniert, wenn man umsteigen muss.
Und was am Ende gegen die Wirklichkeit gehalten wird
Die Fahrzeit von Endhaltestelle zu Endhaltestelle wird nicht gegen die Summe der Abschnitte geprüft, und das ist ein Ergebnis und kein Verzicht: die beiden messen verschiedene Fahrten. Die eine rechnet über die Fahrten, die an der Endhaltestelle beginnen, die andere über alle, die dort vorbeifahren — und das sind in einem Straßenbahnnetz nicht dieselben. Geprüft wird stattdessen, was wirklich prüfbar ist: dass der Wert existiert, dass er positiv ist und dass die Reisegeschwindigkeit, die er bedeutet, die einer Straßenbahn ist. Für die 13 Tageslinien ergibt sie 15,3 km/h bis 19,8 km/h — und weil die Kilometer eine Untergrenze sind, ist dieses Fenster auch eines. Ein Fehler in der Einheit fällt genau hier auf.
Die robots.txt der Quellen, und die eine Stelle, die nicht sauber ist
Eine Datei herunterzuladen ist erlaubt oder nicht erlaubt, und das steht in der robots.txt der jeweiligen Stelle. Für diese Website wurden sie alle gelesen, mit ihrem Antwortcode notiert, und hier ist das Ergebnis — auch der Teil, der uns nicht gut aussehen lässt.
gtfs.deverbietet nur die eigenen Seiten für Impressum und Kontakt. Der Weg zu den Feeds ist erlaubt.download.gtfs.deundrealtime.gtfs.deveröffentlichen keine robots.txt (Antwort 403 beziehungsweise 404), ebenso das amtliche Portal von DELFI.opendata.leipzig.deverbietet seine Programmierschnittstelle und bittet um zehn Sekunden Pause zwischen Abfragen. Diese Datenschicht benutzt die Schnittstelle nicht: sie liest die bereits heruntergeladene Datei.
Zwei Quellen, die nur zum Gegenlesen gedient haben
Die Haltestellennamen und die Reihenfolge der Haltestellen wurden gegen OpenStreetMap und gegen die deutschsprachige Wikipedia gehalten. Beide Abfragewege, die dafür benutzt wurden, sind in der robots.txt der jeweiligen Stelle nicht freigegeben: die Wikipedia verbietet allgemeinen Programmen den Pfad, über den der Artikeltext abgefragt wurde, und der Abfragedienst für OpenStreetMap-Daten verbietet den Pfad seiner Schnittstelle.
Benutzt wurden sie trotzdem, einmal, mit einer Abfrage je Seite und Pausen dazwischen, und es ist im Protokoll der Quellen wörtlich festgehalten. Zwei Dinge dazu, weil die ganze Seite sonst nichts wert ist: nichts auf dieser Website hängt davon ab — alle veröffentlichten Zahlen, Zeiten und Haltestellen kommen aus dem Fahrplandatensatz, und diese beiden Quellen haben ausschließlich bestätigt, was dort schon stand. Und wiederholt wird das nicht auf diesem Weg, sondern über die ausdrücklich freigegebene Schnittstelle der Wikipedia beziehungsweise über einen Datenauszug mit erklärter Nutzungserlaubnis.
Fragen und Hinweise
Wenn auf dieser Website eine Haltestelle falsch heißt, eine Zeit nicht stimmt oder eine Quelle fehlt, ist das eine Zeile wert: [email protected] oder über das Kontaktformular. Hinweise mit Haltestelle, Linie und Uhrzeit sind am schnellsten zu prüfen, weil genau so die Daten geordnet sind.
Diese Seite ist auf dem Stand von November 2026. Die Lizenzen, die robots.txt und die Preistabelle wurden am 14. November 2026 gelesen; die Fahrplandatei wird täglich neu geholt.
