HTML: gängige Probleme und saubere Lösungen
Lesedauer: ca. 18 Minuten
HTML wirkt wie der einfache Teil vom Web. Und meistens ist es das auch. Trotzdem sind es in der Praxis oft genau die HTML Details, die dir Stunden klauen, weil der Fehler nicht dort sichtbar wird, wo er entsteht. Ein fehlendes schließendes Tag kann eine ganze Seite „verschlucken“. Ein falscher Pfad lässt Bilder verschwinden, aber nur auf dem Server. Umlaute sind auf dem Rechner okay, online kommt plötzlich „Müller“. Ein Menü funktioniert auf der Startseite, aber nicht in Unterordnern. Und manchmal ist gar nicht HTML schuld, sondern Caching, ein Redirect oder ein falscher Header, aber du merkst es erst, wenn du systematisch prüfst.
Diese Seite ist ein Sammelbecken für genau diese typischen HTML Probleme. Nicht als Lehrbuch, sondern als Werkzeugkasten: Symptom, Ursache, Lösung, und dazu kleine Prüfmethoden, damit du nicht rätst. Wenn du gerade akut hängst, spring zu dem Abschnitt, der am ehesten passt. Wenn du langfristig weniger Ärger willst, lies die Abschnitte zu Struktur, Semantik und Debugging. Die bringen dir am meisten Ruhe rein.
Die wichtigste Grundidee
Lesedauer: ca. 1 Minute
HTML ist Struktur. CSS ist Optik. JavaScript ist Verhalten. Wenn du versuchst, Struktur-Probleme mit Optik zu überdecken, wirkt es kurz „ok“, wird später aber immer schwieriger zu warten. Sauberer HTML Aufbau ist keine Schönheitsfrage, sondern spart dir später Zeit.
Umlaute und Sonderzeichen sind kaputt
Lesedauer: ca. 4 Minuten
Wenn aus „Ü“ plötzlich „Ü“ wird, ist das fast immer Encoding. Also die Frage: In welcher Zeichenkodierung wurde die Datei gespeichert, und welche Kodierung nimmt der Browser an. Heute sollte das in der Regel UTF-8 sein. Aber es reicht nicht, irgendwo „UTF-8“ hinzuschreiben. Es muss an drei Stellen zusammenpassen: die Datei selbst, die HTML Angabe im head, und der HTTP Header vom Server.
Die typische Falle: Du hast meta charset="utf-8" gesetzt, aber die Datei ist in einem Editor als Windows-1252 oder ISO-8859-1 gespeichert. Dann liest der Browser zwar „UTF-8“, die Bytes sind aber etwas anderes. Ergebnis: kaputte Zeichen. Eine zweite Falle ist der Server. Wenn der Server einen Header sendet, der z.B. ISO-8859-1 behauptet, kann das meta-Tag überstimmt werden oder es gibt widersprüchliches Verhalten. Und dann gibt es noch die dritte Variante: Inhalte kommen aus einer Quelle, die doppelt encodiert wurde. Dann ist es kein reines HTML-Datei-Problem, sondern ein Datenfluss-Problem.
Saubere Lösung in der Praxis: Speichere die Datei wirklich als UTF-8. In den meisten Editoren steht das unten irgendwo. Dann setze im head ganz oben (wirklich früh) das meta charset. Und falls du Serverzugriff hast, sorge dafür, dass der Content-Type Header UTF-8 liefert. Wenn du das nicht steuern kannst, ist die Datei-Variante zumindest die Hälfte der Miete. Wenn du zusätzlich Probleme bei Copy-Paste aus Word oder PDFs hast, kommen manchmal unsichtbare Sonderzeichen mit. Dann helfen einfache Tests: Text einmal in einen Plain-Text-Editor kopieren, dann wieder in HTML. So entfernst du oft „komische“ Zeichen, die du gar nicht siehst.
Links funktionieren auf der Startseite, aber nicht in Unterordnern
Lesedauer: ca. 4 Minuten
Das ist einer der häufigsten Web-Fehler überhaupt, weil er so unscheinbar ist. Auf der Startseite verlinkst du „kontakt.html“ und es geht. Auf /html/ klickst du denselben Link und plötzlich geht es nicht. Der Grund: relative Pfade. Ein relativer Link wie "kontakt.html" bezieht sich immer auf den aktuellen Ordner. Auf der Startseite ist das Root, also /kontakt.html. In /html/ ist es /html/kontakt.html. Wenn die Datei dort nicht liegt, ist es 404.
Pragmatische Lösung: Nutze absolute Pfade, beginnend mit einem Slash. Also "/impressum/" statt "impressum.html" oder "../impressum.html". Das sieht am Anfang vielleicht strenger aus, ist aber stabiler. Sobald du mehrere Ebenen hast, ist das die einzige Variante, die dich nicht nervt. Wenn du sehr viele Seiten hast, kannst du auch eine Basis-URL per base-Tag setzen, aber das bringt oft neue Stolpersteine mit sich, besonders wenn du später JavaScript, Formulare oder unterschiedliche Hostnamen ins Spiel bringst. Für klassische statische Seiten ist „vom Root aus verlinken“ meistens am robustesten.
Ein häufiger Spezialfall: Du hast sprechende URLs wie /html/ und intern liegt eine html.html oder index.html. Dann hängt es an deinem Rewrite, ob der Browser wirklich im gleichen Ordner ist oder ob die URL nur „virtuell“ ist. Das kann sich so anfühlen, als seien Links kaputt, obwohl sie nur relativ aufgelöst werden. Genau darum: absolute Pfade sparen Stress.
Bilder laden lokal, online aber nicht
Lesedauer: ca. 4 Minuten
Wenn Bilder lokal funktionieren, online aber nicht, sind es in 80 Prozent der Fälle Groß- und Kleinschreibung oder der Pfad. Auf vielen Systemen ist das Dateisystem tolerant. Server sind es oft nicht. "Logo.PNG" ist nicht dasselbe wie "logo.png". Und "Bilder/Foto.jpg" ist nicht dasselbe wie "bilder/foto.jpg". Wenn du also im HTML einen Pfad hast, der lokal zufällig passt, kann der Server trotzdem 404 liefern.
Zweite Ursache: relative Pfade in Unterordnern. Wenn deine Seite in /html/ liegt und du nutzt img src="img/logo.png", sucht der Browser in /html/img/logo.png. Wenn deine Bilder aber in /img/logo.png liegen, muss es "/img/logo.png" sein. Solche Fehler wirken wie „Bild kaputt“, sind aber nur Auflösung. Ein schneller Test ist: Bild-URL im Browser direkt öffnen. Dann siehst du sofort, ob es 404 ist. Und wenn du den Network Tab öffnest, siehst du sogar, von wo aus der Browser es versucht.
Dritte Ursache: Sonderzeichen oder Leerzeichen im Dateinamen. "Mein Bild.jpg" kann funktionieren, aber wenn irgendwo ein Encoding oder ein Copy-Paste passiert, wird daraus schnell ein Problem. Viele Tools encoden Leerzeichen zu %20, manche nicht. Umlaute im Dateinamen sind noch schlimmer. Nicht verboten, aber fehleranfälliger. Für weniger Ärger: Dateinamen klein, ohne Leerzeichen, ohne Umlaute, mit Bindestrichen. Das ist langweilig, aber zuverlässig.
CSS lädt nicht oder wirkt „alte Version“
Lesedauer: ca. 5 Minuten
Wenn eine Seite „plötzlich ungestylt“ aussieht, ist oft nicht das HTML kaputt, sondern die CSS-Datei lädt nicht. Oder sie lädt, aber der Browser zeigt eine gecachte Version. Das ist ein echter Klassiker. Du änderst CSS, speicherst, lädst neu, aber nichts passiert. Dann fängst du an, im falschen Bereich zu suchen.
Ein schneller Check: Developer Tools, Tab „Network“. Filter auf „CSS“. Wenn du 404 siehst, ist es Pfad oder Dateiname. Wenn du 200 siehst, aber der Inhalt alt wirkt, ist es Cache. Dann hilft eine harte Aktualisierung oder du nutzt Cache-Busting über einen Query-Parameter, so wie du es mit /style.css?v1 machst. Das ist simpel und effektiv. Wenn du später häufiger aktualisierst, kannst du die Version hochdrehen.
Wenn die Datei korrekt lädt und trotzdem einzelne Regeln nicht greifen, ist das meist CSS Spezifität oder Reihenfolge. Das ist nicht HTML, aber HTML kann es leichter machen: Wenn du klare Klassen-Strukturen nutzt und nicht alles über „div div div“ ansprichst, werden Regeln berechenbarer. Und wenn du einen Button immer gleich markierst, statt zehn Varianten zu bauen, musst du weniger raten.
Ein Bereich springt plötzlich auf volle Breite
Lesedauer: ca. 5 Minuten
Das ist genau der Bug, den du beschrieben hast: ein Abschnitt wirkt „full size“, also als wäre er nicht mehr im boxed Layout. Das kommt häufig von einem HTML Strukturbruch. Wenn du irgendwo einen Container nicht sauber schließt, endet dein Box-Wrapper früher als gedacht. Alles, was danach kommt, hängt dann direkt am body oder an einem anderen Container, der ganz andere Breitenregeln hat. Der Effekt sieht nach CSS aus, ist aber oft HTML.
Typische Ursachen: ein fehlendes schließendes div, ein fehlendes schließendes main, ein versehentliches zusätzliches </div>, das deinen Wrapper zu früh beendet, oder ein falsch verschachteltes Element (z.B. ein div innerhalb eines p, wodurch der Browser automatisch umsortiert). Browser sind bei HTML tolerant und reparieren, aber sie reparieren nicht so, wie du es erwartest. Deshalb kann ein Fehler an Zeile 50 dazu führen, dass erst bei Zeile 500 ein Abschnitt völlig falsch aussieht.
So debuggt man das sauber: Öffne im Browser den Inspector und schau dir an, wo der „kaputte“ Bereich im DOM hängt. Ist der Footer plötzlich im main drin? Steckt deine Sidebar plötzlich in der CTA Box? Oder hängt deine ganze Seite in einem Element, das eigentlich nur ein Panel sein sollte? Wenn du siehst, dass Struktur falsch ist, liegt der Fehler oft kurz davor. Ein guter Trick: Suche die Stelle, an der es „noch passt“ und dann „nicht mehr passt“. Dazwischen liegt das Problem. Wenn du einen Editor hast, der Tag-Paare markiert, kannst du schnell prüfen, ob ein div wirklich sein Gegenstück hat.
Ein weiterer Klassiker ist ein nicht geschlossenes <details> oder ein verschachteltes <a>, das nicht sauber endet. Links dürfen nicht verschachtelt werden. Wenn du aus Versehen ein Link-Tag offen lässt, kann plötzlich ein riesiger Bereich klickbar werden und Styling kippt. Genau deshalb: HTML sauber halten. Es klingt nach Pedanterie, ist aber im Alltag Gold wert.
Formulare: warum kommt nichts an
Lesedauer: ca. 6 Minuten
Bei Formularen ist HTML oft die Fehlerquelle, weil ein kleines Attribut fehlt. Der häufigste Grund, warum serverseitig „nichts ankommt“: Das name-Attribut fehlt. Ein input ohne name wird beim Absenden nicht übertragen. Viele bauen ein hübsches Formular, setzen id und placeholder, vergessen aber name. Ergebnis: du siehst Eingaben, der Server bekommt nichts.
Ein weiterer Punkt ist method. GET hängt Parameter an die URL, POST sendet sie im Body. Für Suchformulare ist GET okay, für Kontaktformulare nimmt man meistens POST. Wenn du GET nutzt und jemand schreibt viel Text, kann die URL zu lang werden. Und wenn du sensible Daten hast, willst du sie nicht in der URL sehen. Außerdem werden GET Parameter manchmal gecacht oder in Logs geschrieben, was man oft nicht möchte.
Dann gibt es action. Wenn action fehlt, wird das Formular an die aktuelle Seite geschickt. Das ist manchmal gewollt, manchmal nicht. Wenn du action falsch setzt, geht der Request ins Leere. Und wenn du serverseitig umleitest, kann es wirken, als sei das Formular „okay“, aber du verlierst Daten. Genau deshalb: Einmal in den Dev Tools prüfen, ob beim Submit überhaupt ein Request rausgeht und wohin. Netzwerk-Tab auf, Submit klicken, Request ansehen. Da steht alles drin.
Labels sind ein weiterer Punkt. Nicht weil es „nice“ ist, sondern weil es Bedienbarkeit verbessert. Ein label mit for="id" sorgt dafür, dass Klick auf den Text das Feld fokussiert. Das ist gerade auf Mobil angenehm. Platzhalter sind kein Ersatz für Labels, weil sie beim Tippen verschwinden. Viele Formulare wirken später unklar, weil man nicht mehr sieht, was ein Feld war, nachdem man etwas eingetippt hat. Also: echte Labels.
Tabellen: warum sprengen sie mobile Layouts
Lesedauer: ca. 6 Minuten
Tabellen sind für tabellarische Daten gedacht. Wenn du sie dafür nutzt, ist es okay. Das Problem ist: Tabellen sind von Natur aus breit. Viele Tabellen haben mehrere Spalten, lange Texte, und lassen sich nicht „einfach“ umbrechen, ohne dass es unleserlich wird. Auf Mobil sprengen Tabellen deshalb gern den Viewport, und du hast plötzlich horizontales Scrollen auf der ganzen Seite. Das sieht dann aus wie „Webseite kaputt“. In Wahrheit ist es nur eine große Tabelle, die nicht in die Breite passt.
HTML-seitig kannst du zumindest sauber bauen: thead, tbody, th für Überschriften, und sinnvolle Spalten. Wenn du Tabellen unstrukturiert baust, wird es später schwer, sie gezielt zu stylen. Viele Probleme entstehen auch durch falsche Verschachtelung, z.B. td ohne tr oder ein vergessener Abschluss. Browser reparieren das, aber unterschiedlich, und dann sieht es je nach Gerät anders aus. Wenn deine Tabelle komisch aussieht, prüfe zuerst, ob das Markup korrekt ist.
Pragmatische Lösung für Mobil: packe die Tabelle in einen Wrapper, der horizontal scrollen darf. Das ist nicht sexy, aber ehrlich. Alles andere ist meist komplexer: Tabellen in Karten umwandeln, Spalten verstecken, oder responsive Tabellen bauen. Das geht, kostet aber Zeit. Für ein Tutorial-Portal ist ein sauberer Scroll-Wrapper oft völlig okay. Wichtig ist nur, dass nicht die ganze Seite scrollt, sondern nur die Tabelle.
Wenn du sehr lange Wörter oder URLs in Tabellen hast, ist es sinnvoll, Trennmöglichkeiten zu erlauben. Sonst zwingt ein Wort die ganze Tabelle breit zu bleiben. HTML-seitig kann man mit sinnvollen Umbrüchen arbeiten, aber oft ist es CSS. Trotzdem: Wenn du merkst, dass eine Tabelle wegen einer einzigen Spalte explodiert, ist meist „Inhalt zu lang“ der Kern. Dann muss man überlegen: kürzen, umbrechen, oder anders darstellen.
Listen: Bulletpoints sind „komisch“ oder Einrückung passt nicht
Lesedauer: ca. 4 Minuten
Listen sehen harmlos aus, aber sie sind empfindlich, wenn man HTML nicht sauber hält. Eine ul oder ol darf als Kinder nur li haben. Wenn du dazwischen divs oder p direkt reinpackst, wird es semantisch falsch und das Styling wird unberechenbar. Browser versuchen zu reparieren, aber du verlierst Kontrolle. Viele „komische Einrückung“ Probleme entstehen genau so.
Ein weiterer Fehler ist der Missbrauch von br für Aufzählungen. Es sieht aus wie Liste, ist aber keine Liste. Dann kannst du später keine vernünftigen Abstände, Marker, oder Einrückungen steuern, ohne Tricks zu nutzen. Wenn es eine Liste ist, mach eine Liste. Punkt.
Wenn du verschachtelte Listen brauchst, halte die Struktur klar: li enthält eine ul als Kind, nicht nebenbei. Und wenn du im Text zwischen den Punkten Absätze brauchst, kannst du innerhalb eines li auch p nutzen. Aber nicht: ul enthält p und li gemischt. Das ist der Weg ins Chaos. Für Wartbarkeit lohnt sich sauberes Listen-Markup wirklich.
Semantik: warum Überschriftenhierarchie wichtig ist
Lesedauer: ca. 6 Minuten
Viele setzen Überschriften nach Optik: h1 ist groß, h2 ist kleiner. Das ist verständlich, aber falsch gedacht. Überschriften sollen Struktur zeigen. Eine Seite hat in der Regel eine h1 als Haupttitel. Darunter kommen h2 als Hauptabschnitte. Darunter h3 als Unterabschnitte. Das hilft nicht nur Suchmaschinen, sondern vor allem Menschen, die scannen. Und es hilft Tools wie Screenreadern, die sich über Überschriften navigieren. Wenn du die Hierarchie kaputt machst, wird die Seite schwerer zu verstehen.
Auch Elemente wie main, nav, header, footer sind nicht nur „modern“, sondern strukturieren die Seite. Gerade bei einem Tutorial-Portal ist das sinnvoll. Wenn du später mal etwas umbauen willst, kannst du gezielt Blöcke anfassen. Wenn alles ein großer div-Salat ist, musst du raten, wo was anfängt und endet.
Semantik heißt auch: nutze das passende Element. Ein Button ist nicht immer ein Link. Ein Link führt woanders hin, ein Button löst eine Aktion aus. Viele machen alles als a-Tag, weil es einfacher ist. Auf einer rein statischen Seite ist das oft okay, aber sobald du echte Aktionen hast, wird es wichtig. Und bei Formularen sowieso: submit ist ein button, nicht ein Link. Wenn du diese Grenzen sauber hältst, wirkt das „altmodisch korrekt“, aber es verhindert viele komische Nebenwirkungen.
Ein weiterer Punkt: alt-Attribute bei Bildern. Ein dekoratives Bild kann alt="" haben. Ein inhaltliches Bild braucht einen alt-Text. Das ist kein Moralthema, sondern praktischer Nutzen: wenn das Bild nicht lädt, steht da wenigstens ein Hinweis. Und für Screenreader ist es essenziell. Viele Bildprobleme werden dadurch schneller erkannt, weil du siehst, dass ein Bild fehlt, statt dass da nur eine leere Fläche ist.
Meta-Tags: kleine Zeilen, große Wirkung
Lesedauer: ca. 6 Minuten
Meta-Tags sind kein Glitzer, aber sie steuern wichtige Grundfunktionen. Das wichtigste ist charset. Dann viewport für mobile Darstellung. Dann description, damit Snippets in Suchmaschinen nicht komplett zufällig werden. Und canonical, damit Suchmaschinen wissen, welche URL die „Hauptversion“ ist. Gerade wenn du Parameter-URLs hast oder alte Backlinks, ist canonical wichtig, sonst kannst du dir unbeabsichtigt Duplicate Content bauen.
Ein häufiger Fehler ist ein falsches canonical. Wenn du aus Versehen canonical auf die Startseite setzt, signalisierst du: „alles ist eigentlich die Startseite“. Dann kann es passieren, dass einzelne Unterseiten schlechter indexiert werden. Umgekehrt, wenn canonical fehlt und du hast Parameter-URLs, kann Google viele Varianten sehen und du hast am Ende 1000 URLs, die alle denselben Inhalt zeigen. Das willst du nicht. Da hilft dann auch eher Server-seitig ein sauberer Redirect. Aber HTML-seitig sollte canonical zumindest korrekt gesetzt sein.
Meta description ist nicht direkt Ranking, aber es beeinflusst, wie Nutzer deine Seite wahrnehmen. Bei Tutorials ist es sinnvoll, die Beschreibung so zu schreiben, dass sie Problem und Nutzen klar macht. Nicht als Werbung, sondern als klare Ansage: „Hier findest du Lösungen zu X“. Wenn du das sauber pflegst, steigt die Klickrate oft, ohne dass du an Rankings schraubst.
Auch robots meta kann wichtig sein, aber damit kann man sich schnell selbst ins Knie schießen. Wenn du aus Versehen „noindex“ setzt, verschwindet die Seite. Deshalb: robots nur setzen, wenn du es wirklich brauchst. Für normale Inhalte lieber die Finger weg.
Warum ist mein HTML „valide“ und trotzdem sieht es komisch aus
Lesedauer: ca. 5 Minuten
Valides HTML heißt nicht automatisch gutes Layout. Es heißt nur: Die Syntax ist okay. Du kannst ein valides Dokument bauen, das inhaltlich unlogisch strukturiert ist. Zum Beispiel: du nutzt h1 fünfmal. Oder du nutzt nur divs ohne Struktur. Browser zeigen es trotzdem an. Aber du machst dir die Arbeit schwerer, wenn du später navigieren, stylen, oder Inhalte sauber gliedern willst.
Ein typisches Problem ist auch „unsichtbare“ HTML-Fehler, die Validator nicht als Fehler markiert, die aber trotzdem Nebenwirkungen haben. Beispiel: Du packst Block-Elemente in Inline-Kontexte und Browser korrigieren es. Oder du nutzt ein p-Tag und packst darin andere p-Tags, was nicht erlaubt ist. Browser schließen p automatisch. Dann hast du plötzlich Abstände, die du nicht erklärst. Du suchst dann im CSS, dabei hat HTML automatisch umgebaut.
Wenn du so einen Effekt siehst, geh in den Inspector und schau dir an, wie der Browser das HTML tatsächlich interpretiert. Nicht, wie es in deinem Editor steht. Der DOM ist die Wahrheit. Wenn du dort siehst, dass ein Element gar nicht dort ist, wo du denkst, ist es ein HTML-Strukturproblem. Das ist eine der wichtigsten Debugging-Fähigkeiten im Web: nicht am Quelltext kleben, sondern schauen, was der Browser daraus macht.
Relative vs. absolute URLs: warum du dich immer wieder vertust
Lesedauer: ca. 5 Minuten
Relative URLs wirken bequem, weil man weniger tippt. Aber sie sind eine der Hauptquellen für kaputte Links und Bilder. Sobald du Unterordner hast, ändert sich die Basis. Und sobald du Rewrites nutzt, wird es noch verwirrender, weil die URL im Browser nicht unbedingt dem physischen Pfad entspricht. Daher ist die „langweilige“ Empfehlung oft die beste: verlinke vom Root aus.
Wenn du doch relative Pfade nutzt, halte ein klares Muster ein. Zum Beispiel: Alle Seiten liegen in einem Ordner und alle Assets liegen daneben. Dann sind Pfade stabil. Aber sobald du anfängst, Seiten tiefer zu legen und Assets oben zu halten, ist es fast garantiert, dass irgendwer irgendwo einen Pfad falsch setzt. Das passiert nicht, weil Leute dumm sind, sondern weil es im Kopf schwer zu visualisieren ist, wenn du schnell arbeitest.
Eine Variante, die viele nutzen: Assets immer absolut, Inhalte relativ. Also CSS und Bilder immer "/style.css" oder "/img/..." und die Seitenlinks ggf. relativ. Das kann funktionieren, reduziert aber nicht alle Probleme. Für ein Portal wie deins ist es meistens am saubersten, alle wichtigen Pfade absolut zu halten. Dann kannst du Seiten verschieben, ohne dass dir alles um die Ohren fliegt.
Debugging: die 7 Prüfungen, die dich fast immer retten
Lesedauer: ca. 6 Minuten
Wenn du im Web festhängst, hilft ein fester Debugging-Ablauf. Nicht, weil es Spaß macht, sondern weil du damit schneller zum Kern kommst. Hier ist ein Ablauf, der in der Praxis für HTML-Probleme sehr gut funktioniert:
- URL prüfen: bist du wirklich auf der Seite, die du denkst? (keine Weiterleitung auf eine andere)
- Dev Tools Network: gibt es 404 für CSS, Bilder, JS?
- Cache: harte Aktualisierung, und prüfen, ob die Datei wirklich neu geladen wurde
- DOM prüfen: stimmt die Struktur so, wie du sie geschrieben hast, oder hat der Browser umgebaut?
- Validierung: gibt es offensichtliche Tag-Fehler oder Verschachtelungsfehler?
- Schrittweise Eingrenzung: wo kippt es zum ersten Mal, ab welcher Stelle wird es falsch?
- Minimaltest: reduziere den Problemblock auf das Kleinste, das den Fehler noch zeigt
Der Minimaltest ist unterschätzt. Wenn du einen Fehler in einem großen Dokument suchst, wirst du verrückt. Wenn du den Problemteil isolierst, siehst du oft sofort, ob es ein fehlender Tag ist oder ein Pfad. Und du kannst schneller ausprobieren, ohne gleich die ganze Seite neu zu laden.
Kleiner Reality-Check
Lesedauer: ca. 1 Minute
Viele HTML-Probleme sind keine „Web-Genie“-Probleme. Es sind Tippfehler, Pfade, Cache, Encoding, oder ein fehlendes schließendes Tag. Wenn du systematisch prüfst, bist du meist in wenigen Minuten durch.
Typische Quelltext-Fehler, die niemand gern zugibt
Lesedauer: ca. 6 Minuten
Hier eine Sammlung von Dingen, die in echten Projekten ständig passieren. Nicht, weil man es nicht weiß, sondern weil man schnell arbeitet:
- Ein div wird geöffnet, aber nie geschlossen. Der Browser „rettet“ es, aber die Seite kippt später.
- Ein Link-Tag bleibt offen. Plötzlich ist ein riesiger Bereich klickbar und Styling wirkt falsch.
- Ein Bildpfad funktioniert lokal, aber online nicht wegen Groß-/Kleinschreibung.
- Ein HTML-File ist als falsches Encoding gespeichert, meta charset ist zwar gesetzt, aber hilft nicht.
- Ein Element wird doppelt verschachtelt, z.B. p in p oder ul ohne li. Browser baut um.
- Ein Script oder CSS-Link zeigt auf eine Datei, die es nicht gibt. Dadurch fehlt Styling oder Verhalten.
- Ein Copy-Paste bringt unsichtbare Sonderzeichen mit, die später Ärger machen.
Wenn du diese Liste einmal im Kopf hast, wirst du bei Problemen automatisch in diese Richtung denken. Das ist nicht pessimistisch, das ist realistisch. Und genau das macht dich schneller.
Warum HTML und SEO sich gegenseitig beeinflussen
Lesedauer: ca. 6 Minuten
Auch wenn SEO nicht nur HTML ist, hängt viel am Markup. Überschriftenstruktur macht Inhalte verständlicher. Saubere interne Links helfen Crawlern. Alt-Texte helfen bei Bildern. Canonical verhindert Duplicate-URL-Varianten. Und ein klares main mit sinnvollen Abschnitten hilft, den Inhalt zu erkennen. Du musst dafür kein SEO-Zauberer sein. Du musst nur vermeiden, dass du Suchmaschinen und Nutzern unnötige Hürden baust.
Ein Beispiel: Wenn du alles in einen einzigen langen Text ohne Zwischenüberschriften packst, ist es für Menschen schwer zu scannen. Das senkt oft die Nutzersignale. Wenn du dagegen klare Abschnitte hast, bleiben Leute länger, weil sie schnell finden, was sie brauchen. Das wirkt indirekt. Und es ist am Ende nichts anderes als gute Struktur.
Auch die Ladezeit hängt manchmal an HTML. Wenn du unnötig viele externe Dinge lädst oder Bilder ohne Größenangaben einbindest, springt das Layout. Das wirkt billig und nervt. Wenn du Bildgrößen setzt, kann der Browser Platz reservieren. Das macht die Seite ruhiger. Das ist wieder so ein kleines Detail, das große Wirkung hat.
Kurze Zusammenfassung: was du dir merken solltest
Lesedauer: ca. 2 Minuten
Wenn du nur drei Dinge aus dieser Seite mitnimmst, dann diese: Erstens, Encoding und Pfade sind die häufigsten Ursachen für „komische“ Web-Probleme. Zweitens, ein Strukturfehler im HTML kann aussehen wie ein CSS-Bug, ist aber meist ein fehlendes schließendes Tag oder eine falsche Verschachtelung. Drittens, der Inspector zeigt dir die Wahrheit: nicht dein Quelltext, sondern der DOM, den der Browser daraus gemacht hat.
Wenn du dir zusätzlich einen Ablauf angewöhnst, also Network prüfen, Cache ausschließen, DOM checken, bist du im Alltag deutlich schneller. Du rätselst weniger und löst mehr. Und das ist bei Web-Themen meistens der Unterschied zwischen „hat mich wieder einen halben Tag gekostet“ und „ok, war nur ein Pfad“.
FAQ
Warum werden Umlaute auf meiner Seite falsch angezeigt
Meistens stimmt das Encoding nicht. Die Datei muss wirklich als UTF-8 gespeichert sein, meta charset sollte früh im head stehen, und idealerweise liefert der Server auch UTF-8 im Header.
Warum funktionieren Links in Unterordnern nicht
Weil relative Pfade sich auf den aktuellen Ordner beziehen. Nutze besser absolute Pfade vom Root aus, damit Links überall gleich funktionieren.
Warum springt ein Abschnitt plötzlich auf volle Breite
Sehr oft fehlt ein schließendes Tag oder ein Wrapper wurde zu früh geschlossen. Prüfe im Inspector, ob der „kaputte“ Bereich noch innerhalb des richtigen Containers liegt.