SVG-Barrierefreiheit: title, desc und Struktur validieren ohne Optimierung zu brechen

SVG-Barrierefreiheit: title, desc und Struktur validieren ohne Optimierung zu brechen

Dekorative vs. informative Icons: WCAG-Regeln, title/desc-Tags und schnelle Online-Validierung.

23.07.2026
9 Min. Lektüre
Teilen Sie diesen Artikel:
SVG
accessibility
a11y
wcag
validation
Anleitung

Warum SVG-Barrierefreiheit vor der Optimierung zählt

Ein um 60 % optimiertes SVG nützt nichts, wenn ein Screenreader „Bild“ ohne Kontext ansagt oder ein dekoratives Icon die Sprachnavigation stört. WCAG unterscheidet dekorative SVG (vor assistiven Technologien verborgen) von informativen SVG (Titel oder Beschreibung erforderlich). Der Online-SVG-Validator von FastMinify prüft Syntax, viewBox-Präsenz und fehlende <title> / <desc> — mit Hinweiswarnungen, kein vollständiges WCAG-Audit. Alles läuft im Browser im SVG-Tools-Hub, vor oder nach optimize SVG. Für SVGO-Preset-Kontext siehe SVGO-Presets erklärt.

Klare Unterscheidung dekorativ vs. informativ (WCAG 1.1.1)
Echtzeit-Validierung: Syntax + viewBox + title/desc
Hinweiswarnungen — kein falscher Vollkonformitäts-Eindruck
Kompatibel mit optimize-svg (title/desc bei Presets erhalten)
100 % lokale Verarbeitung — ideal vor Design-System-Auslieferung

Konkrete Beispiele: UI-Icons und Inline-SVG

Button-Icon mit Label (dekorativ)

Ein „Löschen“-Button mit Papierkorb-SVG links vom Text: SVG erhält <code>aria-hidden="true"</code>, kein title. validate-svg zeigt title/desc-Warning — erwartet. Barrierefreiheit liegt im Button-Text, nicht im Icon.

Before optimization

File size:SVG mit Figma-title (~2,1 KB)
Load time:

After optimization

File size:aria-hidden + optimize default (~0,9 KB)
Load time:
Alleinstehender Status ohne Text (informativ)

Ein Erfolgs- oder Fehler-Badge nur als SVG braucht <code>&lt;title&gt;Erfolg&lt;/title&gt;</code> oder explizites <code>aria-label</code> auf der Komponente. validate-svg bestätigt Textpräsenz; danach Tastatur und Screenreader testen.

Best Practices: WCAG, Optimize und Design System

Checkliste vor Produktion

validate-svg in Asset-Review einbinden — besonders bei Icons von Designern ohne AT-Tests.

Jedes Icon klassifizieren: dekorativ oder informativ (Design-System-Doku)
validate-svg: Syntax + viewBox + title/desc wenn informativ
Screenreader-Test an 2–3 repräsentativen Icons
optimize dann re-validate am informativen Sample
Quell-SVG mit a11y-Metadaten versionieren
Fallstricke nach SVGO oder JSX-Konvertierung

Aggressive-Preset kann Pfade mergen oder IDs entfernen — selten title/desc, aber visuell vergleichen. svg-to-jsx behält Markup; prüfen, dass title/desc erste Kinder von &lt;svg&gt; in der React-Komponente bleiben.

title nicht „zum Leichtmachen“ entfernen — optimize erledigt das
aria-hidden + title: title von AT ignoriert — OK
Gleicher title auf 50 Icons: kontextuelles aria-label bevorzugen
Inline-SVG in HTML: minify-html ersetzt validate-svg nicht
SVG-Hub für validate, optimize, jsx verketten
Ehrliche Grenzen des Browser-Validators

FastMinify validate-svg ist ein strukturelles Sicherheitsnetz, kein Ersatz für ein vollständiges Seiten-Audit. Kontrast, Tastaturfokus, Tab-Reihenfolge und lange Alternativen bleiben Ihre Verantwortung oder die dedizierter Tools.

Warnings ≠ automatisches WCAG-Versagen
Dekorativ ohne title: akzeptable Warning bei aria-hidden
Keine aria-hidden-Erkennung in Tool v1
Mit Nutzertests oder axe/WAVE ergänzen
Entscheidung dekorativ/informativ im PR dokumentieren

Wann das Browser-Tool reicht

Häufige Szenarien

Kein svgo-cli oder schwerer a11y-Linter nötig, um einen Figma-Export vor dem Merge zu prüfen.

Design-System-PR: Icons einzeln einfügen
Debug Inline-SVG, das XML-Parser bricht
viewBox-Check vor responsive Layout oder resize-svg
title/desc-Check vor svg-to-jsx
Designer zu title vs. aria-hidden schulen

Mit CI und AT-Audits ergänzen

Was der Browser nicht ersetzt

Automatisierte Seitentests (Pa11y, axe-core in CI, Lighthouse Accessibility) decken gerendertes DOM ab — nicht nur die SVG-Quelldatei. validate-svg upstream auf Assets; E2E mit Screenreadern für kritische Flows.

CI: svgo + visueller Snapshot im icons/-Ordner
Storybook-a11y-Addon auf Icon-Komponenten
eslint-plugin-jsx-a11y für aria-hidden / aria-label
Vierteljährliches WCAG-AA-Audit auf Templates
Kein validate-svg-Batch in FastMinify v1 — ein Icon nach dem anderen
Optimize und Validierung angleichen

Gleiches SVGO-Preset in Browser-Vorschau und CI. Nach Pipeline-optimize Stichprobe manuell in validate-svg — siehe <a href="/de/blog/svgo-presets-svg-web-optimieren" class="text-primary hover:underline">SVGO-Presets</a> und den <a href="/de/blog/svg-optimization-leitfaden-web" class="text-primary hover:underline">SVG-Optimierungsleitfaden</a>.

safe/default-Preset für Assets mit title/desc
Re-validate nach aggressive bei informativen Icons
a11y-Richtlinie des Design Systems dokumentieren
Link zum SVG-zu-React-Artikel für Komponenten
SVG-Hub als Team-Tool-Referenz

Ergänzende Tools

Strukturvalidator vs. vollständiges Audit

FastMinify validate-svg zielt auf SVG-Quell-Markup. Andere Tools decken gerenderte Seiten oder breitere Standards ab.

FastMinify validate-svg

XML-Syntax, viewBox, title/desc — Browser, ohne Konto.

Pros:
Sofortiges Feedback beim Bearbeiten
Integrierte SVG-Stats
Privacy-local
Cons:
Kein vollständiges WCAG-Seiten-Audit
Keine Screenreader-Simulation

axe DevTools / WAVE

Browser-Erweiterungen für DOM-Barrierefreiheits-Audit.

Pros:
Kontrast, ARIA, Landmarks
Seitenorientierter WCAG-Bericht
Cons:
Weniger direkt bei isolierten .svg-Dateien
Falsch-Positive bei komplexem Inline-SVG

SVGO + manuelle Validierung

Klassische CLI-Pipeline ohne validate-svg.

Pros:
Batch über hunderte Icons
Versionierte svgo.config.js
Cons:
Kein title/desc-Warning out of the box
Node-Installation nötig

Dekorativ vs. informativ: Grundlagen

Wenn das SVG dekorativ ist

Ein Icon neben sichtbarem Text („Speichern“, „Schließen“) liefert keine Zusatzinformation — rein visuell. WCAG empfiehlt <code>aria-hidden="true"</code> auf <code>&lt;svg&gt;</code> oder gleichwertiges <code>role="presentation"</code>. Dann sind <code>&lt;title&gt;</code> und <code>&lt;desc&gt;</code> unnötig — sogar kontraproduktiv, wenn sie angrenzenden Text duplizieren.

Icon + sichtbarer Text → aria-hidden auf SVG
Kein title/desc nötig, wenn Bedeutung bereits im DOM
validate-svg kann fehlendes title melden — normal bei dekorativ
„Kein title“ nicht mit „kaputtes SVG“ verwechseln
Mit VoiceOver / NVDA testen: Icon darf nicht vorgelesen werden
Wenn das SVG informativ ist

Ein alleinstehendes Piktogramm (Fehlerstatus ohne Text, Inline-Diagramm, Logo-Link ohne Text-Alt) muss Bedeutung vermitteln. Optionen: <code>&lt;title&gt;</code> und optional <code>&lt;desc&gt;</code> als erste Kinder von <code>&lt;svg&gt;</code>, oder <code>role="img"</code> + <code>aria-label</code> / <code>aria-labelledby</code> auf SVG oder React-Wrapper.

Kurzer title (Icon-Name); desc bei Bedarf für Details
Direkte Kinder von svg — spec-empfohlene Reihenfolge
aria-labelledby zeigt auf title-id
Datendiagramme: title + desc oder längere Textalternative
validate-svg warnt, wenn title und desc fehlen oder leer sind
Was validate-svg prüft (und was nicht)

Das Tool parst XML-Markup, verlangt <code>&lt;svg&gt;</code>-Root, meldet fehlende <code>viewBox</code> (Warning) und fehlenden Text in <code>&lt;title&gt;</code> oder <code>&lt;desc&gt;</code> (Warning). Das sind grundlegende Strukturchecks — keine Screenreader-Simulation, kein Farbkontrast, keine komplexe ARIA-Validierung. Für ein vollständiges Audit ergänzen Sie axe DevTools oder WAVE.

Fehler: fehlerhaftes XML, kein svg-Root, Eingabe zu groß
Warnings: viewBox fehlt, title/desc fehlen oder leer
valid_with_warnings: Syntax OK, a11y-Punkte selbst entscheiden
Stats-Panel: Abmessungen, viewBox, title/desc-Präsenz
Kein Urteil „dekorativ oder informativ“ — Sie entscheiden die Behandlung

FastMinify-Workflow: validieren, korrigieren, optimieren

Schritt 1 — Einfügen und Diagnose lesen

Öffnen Sie das validate-SVG-Tool, Markup einfügen oder .svg-Datei laden. Fehler blockieren Auslieferung (ungültiges XML); Warnings laden ein, viewBox oder beschreibenden Text je nach Anwendungsfall hinzuzufügen.

Einfügen, Datei-Upload oder integriertes Beispiel
Ergebnispanel: Fehler vs. Warnings
Stats: viewBox, title, desc, Größe
Manuell korrigiertes SVG kopieren oder herunterladen
Monaco-Editor für title/desc direkt bearbeiten
Schritt 2 — title, desc und viewBox korrigieren

Für ein informatives Icon z. B. &lt;title&gt;Fehler&lt;/title&gt; direkt nach &lt;svg&gt;-Öffnung. Fehlt viewBox trotz width/height, ableiten (viewBox="0 0 24 24") oder resize-svg im Hub. Der SVG-Beautifier hilft, Struktur nach Edits zu lesen.

title: kurzes Label für Screenreader
desc: Zusatzkontext bei mehrdeutigem Icon
viewBox: nötig für responsives Skalieren (sonst Warning)
Dekorativ: aria-hidden statt Fake-title
Nach jeder Änderung neu validieren
Schritt 3 — Optimieren ohne Barrierefreiheit zu entfernen

Nach validierter Struktur den SVGO-Optimierer (Safe- oder Default-Preset für UI-Icons). FastMinify erhält &lt;title&gt; und &lt;desc&gt; bei allen drei Presets — validate-svg danach erneut. Der schnelle SVG-Minifier berührt nur Whitespace und Kommentare.

optimize safe/default: Icons mit title/desc
aggressive: vermeiden bei kritischen title/desc oder referenzierten IDs
Kette validate → optimize → validate
SVGO-Presets-Artikel für die richtige Stufe
svg-to-jsx: prüfen, dass title/desc React-Konvertierung überstehen

Fazit

SVG-Barrierefreiheit beginnt mit einer klaren Entscheidung: dekorativ (aria-hidden, kein title) oder informativ (title/desc oder aria-label). validate-svg sichert Syntax und Struktur vor SVGO-Optimize — ohne ein vollständiges Audit zu ersetzen. Validierung, Optimierung und Re-Validierung im SVG-Hub verketten, um leichte Icons für alle auszuliefern.

Dekorativ vs. informativ klassifizieren, bevor title/desc-Warnings interpretiert werden
validate → optimize (safe/default) → validate bei informativen Icons
aria-hidden bei Icons mit redundantem sichtbarem Text
Mit Screenreader-Tests auf kritischen Flows ergänzen
SVG-Hub + SVGO-Presets-Artikel für die vollständige Kette
Teilen Sie diesen Artikel
Teilen Sie diesen Artikel: