Auf dem Bildschirm steht „Failed to fetch“ und nichts geht mehr? Keine Panik. Das ist kein Virus, du wurdest nicht gehackt, und meistens liegt es nicht einmal an dir. Hier erfährst du, was der Fehler auf Deutsch bedeutet und wie du ihn behebst: zuerst für alle, die nur eine App benutzen, danach für alle, die den Code schreiben.
Du klickst auf einen Button. Wartest. Und statt des Ergebnisses erscheint: Failed to fetch.
Wörtlich übersetzt heißt das „Abrufen fehlgeschlagen“. Der Browser wollte Daten von einem Server holen und hat überhaupt keine Antwort bekommen. Keine Fehlermeldung vom Server. Gar keine Antwort.
Dieser Unterschied ist der Schlüssel zu allem. Ein 404 heißt: „Ich habe den Server erreicht, und er sagt, die Seite gibt es nicht.“ Ein „Failed to fetch“ heißt: „Ich konnte gar nicht erst mit dem Server reden.“ Deshalb ist die Meldung so vage. Der Browser weiß nicht, was auf der anderen Seite passiert ist. Er weiß nur, dass niemand geantwortet hat.
Zuerst: Wo taucht der Fehler auf?
Der Lösungsweg hängt komplett davon ab. Such dir deinen aus:
→ In einer App oder auf einer Website, die nicht dir gehört (ein Firmensystem, eine App auf dem Handy, ein Online-Tool). Lies im nächsten Abschnitt weiter. Programmierkenntnisse brauchst du nicht.
→ In meinem eigenen Code (JavaScript, Node.js, ein Backend in Python). Spring direkt zu den Lösungen für Entwickler.
→ In einem KI-Agenten (n8n, OpenClaw, Ollama). Dafür gibt es weiter unten einen eigenen Abschnitt.
In einer App oder auf einer Website: was du tun kannst
Die gute Nachricht zuerst: Wenn du die App nur benutzt, hast du so gut wie nie selbst etwas kaputt gemacht. Geh diese Tests der Reihe nach durch, denn jeder schließt eine Ursache aus.
- Lade die Seite richtig neu. Am Computer mit Strg+Shift+R (am Mac Cmd+Shift+R). Das umgeht den Cache, löscht aber keine Cookies: Du bleibst überall eingeloggt. Auf dem Handy schließt du die App komplett und öffnest sie neu. Klingt banal, behebt aber viele Fälle, in denen die Anfrage mittendrin abgebrochen wurde.
- Teste im Inkognito-Fenster. In Firefox heißt es „privates Fenster“. Klappt es dort, aber nicht im normalen Fenster, ist eine Erweiterung schuld, meistens ein Werbeblocker oder ein Datenschutz-Add-on. Gerade Datenschutz-Erweiterungen blockieren oft auch legitime Anfragen. Deaktiviere die Erweiterungen einzeln, bis du den Übeltäter findest.
Cookies löschen ist dafür fast nie nötig. Wenn du es trotzdem tust, wirst du auf allen Websites ausgeloggt und verlierst gespeicherte Einstellungen. Das Inkognito-Fenster ist der bessere Test, weil es nichts an deinem normalen Browser verändert. - Schalte VPN, Proxy oder Virenscanner kurz aus. Alles, was zwischen deinem Browser und dem Internet sitzt, kann die Anfrage stillschweigend blockieren. Die Firewall im Firmennetz gehört auch dazu.
- Wechsle das Netz. Geh aus dem WLAN raus und nutz mobile Daten, oder umgekehrt. Klappt es in einem Netz und im anderen nicht, liegt das Problem am Netz (DNS, Firmensperre, Router), nicht an der App.
- Vielleicht ist der Dienst ausgefallen. Wenn nichts davon hilft und der Fehler in jedem Netz und jedem Browser auftritt, ist wahrscheinlich der Server des Dienstes down. Da kannst du nichts reparieren. Warte ein paar Minuten und versuch es erneut.
Wenn es im Inkognito-Fenster, in einem anderen Netz oder auf einem anderen Gerät klappt, ist die App in Ordnung. Das Problem liegt irgendwo zwischen dir und ihr.

Die Meldung hängt vom Browser ab
Derselbe Fehler, verschiedene Namen. Wenn du nach einem dieser Sätze gesucht hast, bist du hier richtig. Auch in einem deutschen Browser erscheinen diese Meldungen in der Regel auf Englisch.
| Wo es auftaucht | Genaue Meldung |
|---|---|
| Chrome, Edge, Brave, Opera | TypeError: Failed to fetch |
| Firefox | TypeError: NetworkError when attempting to fetch resource. |
| Safari (Mac und iPhone) | TypeError: Load failed |
| Node.js (Serverseite) | TypeError: fetch failed |
Die ersten drei bedeuten exakt dasselbe. Die letzte, aus Node.js, sieht ähnlich aus, ist aber etwas anderes und hat weiter unten einen eigenen Abschnitt.
Diagnose-Tabelle
Vom Symptom zur Ursache, ohne zu raten:
| Was du beobachtest | Wahrscheinliche Ursache | Was zu tun ist |
|---|---|---|
| Klappt im Inkognito-Fenster, nicht im normalen | Erweiterung oder Werbeblocker | Erweiterungen einzeln deaktivieren |
| Klappt mit mobilen Daten, nicht im WLAN | Netz, DNS oder Firewall | Netz oder DNS wechseln |
| Klappt für niemanden, in keinem Netz | Server ausgefallen | Abwarten |
Konsole zeigt blocked by CORS policy | CORS | Server konfigurieren (siehe unten) |
Konsole zeigt Mixed Content | HTTPS-Seite ruft HTTP auf | https:// in der URL verwenden |
| URL öffnet sich direkt im Browser, fetch schlägt fehl | Fast immer CORS | Server konfigurieren |
Node.js meldet fetch failed | Netzwerkproblem auf dem Server | error.cause auslesen |
Lösungen für Entwickler
Wenn der Fehler in deinem Code steckt, gilt als erste Regel: „Failed to fetch“ ist nie die eigentliche Meldung. Öffne die Browser-Konsole (F12) und schau dir die Zeile direkt darüber oder darunter an. Dort steht fast immer der echte Grund.
JavaScript im Browser
Ein einziger Test löst die Hälfte der Fälle. Ruf dieselbe URL im Terminal auf:
curl -I https://api.deineseite.de/daten
Antwortet curl, aber fetch schlägt fehl, liegt das Problem nicht am Server, sondern an CORS. curl wendet keine CORS-Regeln an. Der Browser schon.

Und CORS löst man auf dem Server, nicht im Frontend. Der Server muss den Header Access-Control-Allow-Origin mit der Herkunft (Origin) deiner Seite zurückgeben. Wenn du diesen Server nicht kontrollierst, hilft ein Proxy in deinem eigenen Backend.
Ein sehr häufiger Fehler ist dieser „Fix“:
fetch(url, { mode: 'no-cors' })
Das löst nichts. Der Fehler verschwindet, aber die Antwort kommt „opaque“ zurück: Der Status ist 0, und den Body kannst du nicht lesen. Du tauschst einen sichtbaren Fehler gegen einen stillen Bug.
Die weiteren Ursachen im Browser, nach Häufigkeit:
- Falsche URL, falscher Port oder DNS. Ein Tippfehler in der Domain, der falsche Port oder der lokale Server, den du zu starten vergessen hast.
- Gemischte Inhalte (Mixed Content). Deine Seite läuft unter
https://, der fetch geht anhttp://. Der Browser blockiert das ohne Rückfrage. - Abgebrochene Anfrage. Eine Weiterleitung (
window.location = ...) oder ein Neuladen direkt nach dem fetch bricht die Anfrage ab, bevor die Antwort ankommt. - Ungültiges Zertifikat. Eine HTTPS-Adresse mit selbstsigniertem oder abgelaufenem Zertifikat erscheint ebenfalls als „Failed to fetch“.
Node.js: „fetch failed“ ist nicht „Failed to fetch“
In Node.js sieht die Meldung ähnlich aus, der Kontext ist aber ein anderer. In Node gibt es kein CORS. Wenn du TypeError: fetch failed siehst, ist es ein Netzwerkproblem auf der Serverseite, und der echte Grund steckt in cause:
try {
await fetch(url);
} catch (err) {
console.error(err.cause); // hier steht der eigentliche Grund
}
Was cause meistens zeigt:
err.cause | Bedeutung |
|---|---|
ECONNREFUSED | Auf diesem Port lauscht nichts. Der Dienst läuft nicht. |
ENOTFOUND | DNS findet die Domain nicht. Tippfehler oder Netz ohne DNS. |
UND_ERR_CONNECT_TIMEOUT | Verbindungsversuch abgebrochen. Firewall oder langsamer Server. |
| Zertifikatsfehler | HTTPS mit selbstsigniertem oder ungültigem Zertifikat. |
Eine klassische Falle: In manchen Node-Versionen wird localhost zuerst zur IPv6-Adresse (::1) aufgelöst. Lauscht dein Server nur auf 127.0.0.1, wird die Verbindung abgelehnt. 127.0.0.1 statt localhost in der URL löst das sofort.

Python: wenn das Backend dir gehört
Python erzeugt kein „Failed to fetch“. Aber wenn dein Backend in Python läuft (FastAPI, Flask, Django) und dein Frontend diesen Fehler zeigt, fehlt fast immer die CORS-Konfiguration auf dem Python-Server.
FastAPI:
from fastapi.middleware.cors import CORSMiddleware
app.add_middleware(
CORSMiddleware,
allow_origins=["https://deineseite.de"],
allow_methods=["*"],
allow_headers=["*"],
)
Flask:
from flask_cors import CORS
CORS(app, origins=["https://deineseite.de"])
Ein Detail, über das viele stolpern: Sendet die Anfrage Zugangsdaten (Cookies), lehnt der Browser Access-Control-Allow-Origin: * ab. Liste die Origins dann explizit auf, wie in den Beispielen oben.
Ist Python der Client, entspricht „Failed to fetch“ der requests.exceptions.ConnectionError. Gleiche Bedeutung: Der Server hat nicht geantwortet.
„Failed to fetch“ bei KI-Agenten: n8n, OpenClaw und Ollama
Dieser Fehler taucht sehr oft auf, wenn man KI-Agenten mit lokalen Modellen baut. Und die Ursache ist fast immer eine von dreien.
Ollama: Der Server läuft nicht oder ist nicht erreichbar
Ollama lauscht standardmäßig auf Port 11434, und zwar nur auf deinem eigenen Rechner. Drei Situationen lösen den Fehler aus:
- Ollama läuft nicht. Starte
ollama serveund versuch es erneut. Antwortet der Port, war es nur das. - Du greifst von einem anderen Rechner oder aus einem Container zu. Standardmäßig nimmt Ollama nur lokale Verbindungen an. Setz vor dem Start
OLLAMA_HOST=0.0.0.0, damit es auf allen Schnittstellen lauscht. - Ein Frontend im Browser ruft Ollama direkt auf. Das ist wieder CORS. Zusätzliche Origins erlaubt Ollama über die Variable
OLLAMA_ORIGINS.
Achtung beim zweiten Punkt: Die Ollama-API hat keine eigene Anmeldung. Mit OLLAMA_HOST=0.0.0.0 ist sie für jeden im selben Netz erreichbar. Gib den Port niemals ins offene Internet frei.
n8n in Docker: das localhost, das nicht deins ist
Das ist der gemeinste Fall. Läuft n8n in einem Docker-Container und du trägst Ollama als http://localhost:11434 ein, ist dieses localhost der Container selbst, nicht dein Rechner. Deshalb schlägt die Verbindung fehl, obwohl Ollama einwandfrei läuft.
Die Lösung: Trag stattdessen diese Adresse ein:
http://host.docker.internal:11434
Das funktioniert direkt mit Docker Desktop (Windows und Mac). Unter Linux ergänzt du beim Start des Containers --add-host=host.docker.internal:host-gateway.

OpenClaw
In OpenClaw zeigt „fetch failed“ fast immer auf den Endpunkt des Modells, meistens ein Ollama, das nicht erreichbar ist. Alle Varianten dieses Fehlers haben wir im Guide OpenClaw Ollama fetch failed gesammelt. Die Schritt-für-Schritt-Lösung für abgelehnte Verbindungen und Timeouts steht in Ollama: Verbindung abgelehnt und Timeout.
Immer noch ein Fehler?
Wenn du alles durchgegangen bist und der Fehler bleibt, kopier die genaue Meldung in unseren OpenClaw-Fehler-Decoder. Er zeigt dir die wahrscheinliche Ursache und die Lösung für die häufigsten Varianten.
Und ein letzter Tipp, der mehr wert ist als jeder Befehl auf dieser Seite: „Failed to fetch“ ist keine Diagnose, sondern ein Symptom. Der Browser sagt „Ich habe keine Antwort bekommen“, ohne zu wissen, warum. Der eigentliche Hinweis steht fast immer eine Zeile weiter oben in der Konsole, und curl trennt in Sekunden ein Netzwerkproblem von einem CORS-Problem.
Für alle ohne Programmierkenntnisse ist die Lektion noch einfacher. Wenn es in einem anderen Fenster, einem anderen Netz oder auf einem anderen Gerät geklappt hat, hast du nichts kaputt gemacht.
Falls du hier gelandet bist, weil du einen KI-Agenten aufsetzen wolltest und mehr Zeit mit Netzwerkproblemen als mit dem Agenten selbst verbracht hast, fang mit BetterClaw an. Der kostenlose Plan umfasst 1 Agenten und 100 Credits pro Monat, ohne Kreditkarte und ohne Ablaufdatum, und du nutzt deinen eigenen API-Schlüssel. Wenn du mehr brauchst, kostet Pro 49 US-Dollar im Monat, abgerechnet in US-Dollar. Kostenlos starten oder Details zu den Plänen ansehen.
Häufige Fragen
Was bedeutet „Failed to fetch“?
Es bedeutet „Abrufen fehlgeschlagen“: Der Browser wollte Daten von einem Server holen und hat keine Antwort bekommen. Es ist kein 404- oder 500-Fehler, denn dabei hat der Server geantwortet. Die häufigsten Ursachen sind eine CORS-Sperre, ein ausgefallener Server, eine falsche Adresse, eine HTTPS-Seite, die HTTP aufruft, oder eine blockierende Erweiterung.
Was ist der Unterschied zwischen „Failed to fetch“ und „fetch failed“?
„Failed to fetch“ kommt vom Browser (Chrome, Edge) und hat oft mit CORS zu tun. „fetch failed“ kommt aus Node.js, wo es gar kein CORS gibt, und bedeutet ein Netzwerkproblem auf der Serverseite. Den eigentlichen Grund siehst du in Node über err.cause, zum Beispiel ECONNREFUSED oder ENOTFOUND.
Wie behebe ich „Failed to fetch“ auf dem Handy?
Schließ die App komplett und öffne sie neu, dann wechsle zwischen WLAN und mobilen Daten, um das Netz auszuschließen. Ist ein VPN oder Werbeblocker aktiv, schalte ihn kurz aus und teste erneut. Tritt der Fehler in jedem Netz auf, ist der Dienst wahrscheinlich ausgefallen, und Abwarten genügt.
Lohnt sich mode: 'no-cors' als Lösung?
Nein. Mit no-cors verschwindet der Fehler vom Bildschirm, aber die Antwort kommt „opaque“ zurück: Status 0, und dein Code kann den Body nicht lesen. Du tauschst einen sichtbaren Fehler gegen einen stillen Bug. Die echte Lösung ist, dass der Server den Header Access-Control-Allow-Origin mit der Origin deiner Seite sendet.
Ist „Failed to fetch“ ein Virus, oder wurde ich gehackt?
Nein. Es ist eine gewöhnliche technische Meldung, die nur zeigt, dass eine Anfrage keine Antwort bekommen hat. Mit Viren oder Angriffen hat sie nichts zu tun. Meistens steckt eine Browser-Erweiterung, das Netz, in dem du gerade bist, oder ein ausgefallener Dienst dahinter.




