XML-Sitemap validieren
Die Funktion liest die in einer eingefügten XML-Sitemap aufgeführten URLs, markiert jede, die keine gültige absolute Adresse ist, und zeigt, ob die Datei lastmod-Datumsangaben enthält. Für alle, die eine Sitemap vor der Einreichung bei Google auf Syntaxfehler durchsehen wollen.
Im Browser ausführen – kostenlos
Warum eine ungültige Sitemap unbemerkt bleibt
Google meldet Fehler in einer eingereichten Sitemap oft erst mit Verzögerung in der Search Console, manchmal erst Tage später und ohne genaue Zeilenangabe. Die Funktion prüft die Datei sofort und zeigt jede fehlerhafte Adresse, bevor die Sitemap überhaupt eingereicht wird, statt erst nach Tagen von einem Fehler zu erfahren, der sich längst hätte beheben lassen, wäre er früher aufgefallen.
Diese Punkte werden kontrolliert
Die Funktion liest die Sitemap, sammelt jede in einem loc-Feld aufgeführte URL und prüft, ob es sich um eine gültige absolute Adresse handelt statt um einen relativen Pfad — der häufigste strukturelle Fehler, den ein Generator einbaut. Ausgegeben werden die Zahl der aufgeführten URLs, welche davon ungültig sind und ob die Datei überhaupt lastmod-Datumsangaben enthält. Geprüft wird die Syntax des Deklarierten; die URLs werden nicht abgerufen, ihr Live-Status ist eine getrennte, seitenweise Frage.
Große Sitemaps und Sitemap-Indexe
Der Sitemap-Standard begrenzt eine einzelne Datei auf 50.000 URLs und 50 MB unkomprimiert; überschreitet eine Website diese Grenzen, verteilt man die URLs auf mehrere einzelne Sitemaps und bündelt sie über eine übergeordnete Sitemap-Index-Datei. Die Funktion liest die in einer Datei aufgeführten URLs — bei einem Index also die Syntax der Kind-Sitemap-Adressen — und zählt sie; sie ruft die Kind-Dateien nicht ab und erzwingt die Größengrenze nicht. Große Redaktionen mit mehreren zehntausend Artikeln stoßen auf dieses Thema regelmäßig.
Kostenlos und ohne Serverübertragung
Sie fügen den Inhalt der XML-Datei hier ein; die Prüfung läuft vollständig in Ihrem Browser, ohne Übertragung an einen Server. Die manuelle Nutzung ist kostenlos und ohne Limit, auch bei mehreren Sitemaps nacheinander am selben Tag oder im Rahmen einer größeren Migration. Für die automatisierte Prüfung einer Sitemap direkt über ihre URL, ohne den Inhalt selbst einzufügen, steht die API-Anfrage für $0.002 bereit.
Anwendungsfälle
Neue Sitemap vor der Einreichung
Bäckerei Hoffmann e. K. prüft eine neu erzeugte Sitemap, bevor sie in der Google Search Console eingereicht wird, und findet zwei relative statt absolute URLs.
Fehlerursache nach Search-Console-Warnung
Nach einer Fehlermeldung in der Search Console fügt Lukas Fischer die betroffene Sitemap ein, um zu sehen, welche Adresse nicht als gültige absolute URL geparst wird.
Große Website mit mehreren Sitemaps
Eine Redaktion mit über 60.000 Artikeln liest die Zahl der aufgeführten URLs je Datei ab, um zu sehen, ob die aufgeteilten Sitemaps jeweils unter der Grenze von 50.000 URLs bleiben.
Häufige Fragen
Welche Fehler erkennt die Prüfung?
Sie liest die aufgeführten URLs, markiert relative oder anderweitig ungültige absolute Adressen und zeigt, ob lastmod-Datumsangaben vorhanden sind. Das Datumsformat prüft sie nicht und die Größengrenze erzwingt sie nicht.
Was ist eine Sitemap-Index-Datei?
Eine übergeordnete Datei, die auf mehrere einzelne Sitemaps verweist, wenn eine Website mehr URLs hat, als eine einzelne Sitemap zulässt.
Wird meine Sitemap an einen Server übertragen?
Nein, bei der kostenlosen Nutzung nicht. Die Prüfung läuft vollständig auf Ihrem Gerät.
Kann ich stattdessen nur die URL der Sitemap angeben?
Ja, über die API für $0.002 pro Anfrage. Die Sitemap wird dann automatisch abgerufen.
Ändert die Prüfung die Datei?
Nein. Sie liest die Sitemap nur aus, verändert wird nichts.
Ist ein Konto erforderlich?
Nein. Die kostenlose Prüfung im Browser läuft ganz ohne Registrierung.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/seo/sitemap-validate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com/sitemap.xml"}'const res = await fetch("https://api.kit.forhosting.com/seo/sitemap-validate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"url": "https://example.com/sitemap.xml"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/seo/sitemap-validate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"url": "https://example.com/sitemap.xml"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/seo/sitemap-validate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"url":"https://example.com/sitemap.xml"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"url":"https://example.com/sitemap.xml"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/seo/sitemap-validate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"url": "https://example.com/sitemap.xml"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "seo.sitemap_validate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |