Skip to content

cURL-Befehlsgenerator & Builder

curl-Befehle im Browser erstellen — Methode, Header, Auth und Body einstellen, fertig copierbaren Befehl sofort erhalten. Vorlagen für Bearer, POST JSON, Datei-Upload. Kostenlos, privat.

Kein Tracking Läuft im Browser Kostenlos
Dein Befehl wird vollständig im Browser erstellt. Token, URLs und Nutzlasten verlassen dein Gerät nicht.
Vorlagen
Query-Parameter
Header
Authentifizierung
Request-Body
Optionen
Generierter Befehl
Überprüft auf korrekte curl-Befehlsgenerierung über Methoden, Auth und Body-Typen, korrekte Header-Anhängung je Body-Typ sowie shell-sicheres Quoting und Escaping — Go Tools Engineering Team · 3. Juni 2026

Unser Team überprüft den curl-Befehlsgenerator gegen echtes curl-Verhalten über HTTP-Methoden (GET/POST/PUT/PATCH/DELETE), Authentifizierungsschemas (Bearer, Basic, API-Key-Header), Body-Typen (rohes JSON, URL-kodiertes Formular, Multipart-Datei-Upload) und Optionen-Flags (-L, -k, -v, -i, --compressed, -o, Timeouts, Proxy) — mit shell-sicherer Single-Quote-Escaping und korrekter Query-String-Kodierung.

Was ist ein curl-Befehl?

curl ist ein Kommandozeilenwerkzeug zur Datenübertragung über HTTP und Dutzende anderer Protokolle. Ein curl-Befehl besteht aus dem Binärnamen, einer Reihe von Flags und einer URL — zum Beispiel curl -X POST https://api.example.com/users -H 'Content-Type: application/json' -d '{"name":"Ada"}'. Da curl auf praktisch jedem Linux-, macOS- und modernen Windows-System vorinstalliert ist, ist es der universelle Weg, eine API zu testen, eine Anfrage aus der Dokumentation zu reproduzieren oder einen Service innerhalb eines CI-Skripts auf Verfügbarkeit zu prüfen. Die Kürze, die es mächtig macht, macht es auch schwer zu merken — genau deshalb hilft ein visueller Builder.

Jeder curl-Befehl hat denselben Aufbau. Die Methode (-X GET, -X POST, …) legt das HTTP-Verb fest und ist standardmäßig GET. Die URL ist der Endpunkt, Query-Parameter werden nach einem ? angehängt. Header (-H 'Key: Value', wiederholbar) übertragen Metadaten wie Accept und Content-Type. Authentifizierung ist lediglich ein spezieller Header — -H 'Authorization: Bearer …' für ein Token, -u user:pass für Basic-Auth oder ein benutzerdefiniertes -H 'X-API-Key: …'. Der Body (-d für rohe oder Formulardaten, -F für Multipart und Datei-Uploads) trägt die Nutzlast. Schließlich steuern Optionen wie -L (Weiterleitungen folgen), -i (Response-Header einschließen) und -v (ausführlich) das Verhalten. Dieses Tool stellt jeden dieser Teile als Formularfeld dar und baut den Befehl live neu auf.

Nutze einen curl-Befehlsgenerator, wenn du sonst mit Quotierung kämpfen, den Content-Type-Header bei einem JSON-POST vergessen oder einen Multipart-Upload manuell zusammenstellen würdest. Der Builder erledigt shell-sicheres Single-Quote-Escaping, kodiert deinen Query-String und hängt die richtigen Header für jeden Body-Typ an — dann kopierst du einen vertrauenswürdigen Befehl. Für eine vollständige Flag-für-Flag-Referenz mit 40+ ausführbaren Beispielen, lies das begleitende curl-Cheatsheet; zum Kodieren kniffliger Query-String-Werte kannst du unseren URL-Kodierer verwenden.

Alles passiert in deinem Browser. Deine Token, Anmeldedaten, URLs und Request-Bodies werden mit clientseitigem JavaScript zusammengestellt und nie irgendwohin gesendet — so kannst du Befehle gegen echte Produktions-Endpunkte mit echten API-Schlüsseln erstellen, ohne dass dein Gerät verlassen wird.

# Plain GET — curl defaults to GET
curl https://api.example.com/users

# GET with a Bearer token (auth is just a header)
curl https://api.example.com/me \
  -H 'Authorization: Bearer YOUR_TOKEN'

# POST a JSON body — note the Content-Type header
curl -X POST https://api.example.com/users \
  -H 'Content-Type: application/json' \
  -d '{"name":"Ada","role":"admin"}'

# Multipart file upload — '@' reads the file from disk
curl -X POST https://api.example.com/upload \
  -F 'file=@report.pdf' \
  -F 'title=Q3 report'

Hauptfunktionen

Visueller Anfrage-Builder

Die gesamte Anfrage als Formularfelder gestalten — Methode, URL, Query-Parameter, Header, Auth, Body und Optionen — statt sich Flag-Reihenfolge und Quotierung zu merken. Kein Raten mehr, ob die URL vor oder nach dem -d kommt.

Live-Befehl mit Kopieren & Export

Der curl-Befehl wird bei jedem Tastendruck am unteren Seitenende neu aufgebaut. Mit einem Klick in die Zwischenablage kopieren oder als .sh exportieren — ein ausführbares Shell-Skript, das direkt in ein Repo oder einen CI-Job eingefügt werden kann.

Vollständige Authentifizierungsunterstützung

Bearer-Token, Basic-Auth (-u user:pass) und benutzerdefinierte API-Key-Header, jeweils im genauen Format, das Server erwarten. Schema auswählen, Credential einfügen — der richtige Authorization- oder benutzerdefinierte Header wird generiert.

Jeder Body-Typ

Rohes JSON (mit automatisch hinzugefügtem passenden Content-Type-Header), application/x-www-form-urlencoded-Formularfelder und multipart/form-data-Uploads, bei denen jedes Feld mit dem @-Präfix auf eine Datei umgestellt werden kann.

Sechs Ein-Klick-Vorlagen

GET mit Bearer, POST JSON, Formular-Upload, Basic-Auth, Download -o und Verbose-Debug füllen das gesamte Formular mit einem Tippen aus. Starte von einer funktionierenden Anfrage für die häufigsten API-Aufgaben und passe sie an.

Mehrzeilige & einzeilige Ausgabe

Wechsle zwischen einem kompakten einzeiligen Befehl zum schnellen Einfügen und einer backslash-fortgesetzten mehrzeiligen Version, die sich in einem Skript oder Pull-Request besser lesen lässt. Derselbe Befehl, zwei Darstellungen.

100 % Browser-basierter Datenschutz

Token, URLs, Header und Request-Bodies werden vollständig clientseitig zusammengestellt und verlassen dein Gerät nie — prüfbar im Netzwerk-Tab. Sicher für Produktions-Endpunkte und Live-Credentials ohne Daten-Exposition.

Entwickelt für den DevTools-Workflow

Konzipiert für den täglichen Loop aus API-Tests und Reproduzieren von Anfragen aus Browser-DevTools „Als cURL kopieren”. Der Konvertieren-Tab parst einen eingefügten curl-Befehl in fetch-, requests-, Go-, PHP-, Ruby- und Node.js-Code oder lädt ihn zum Bearbeiten in den Builder.

curl-Alternativen & HTTP-Clients

HTTPie

CLI, menschenfreundliche Syntax

Ein modernes CLI mit farbiger Ausgabe und kompakterer Syntax (http POST api.example.com/users name=Ada). Setzt JSON Content-Type standardmäßig. Benutzerfreundlicher für interaktive Nutzung; curl gewinnt bei Ubiquität und Skript-Portabilität.

wget

CLI, download-orientiert

Am besten für rekursive Downloads und Site-Mirroring; folgt Weiterleitungen und wiederholt standardmäßig. Schwächer als curl für beliebige Methoden, benutzerdefinierte Header und API-Tests. Oft zusammen mit curl auf Linux vorinstalliert.

Postman

GUI-Anwendung

Eine vollständige GUI zum Aufbauen, Speichern und Teilen von Anfragen mit Collections, Environments und Team-Sync. Gut für explorative API-Arbeit; kann curl importieren/exportieren. Für schnelle Prüfungen oder CI schwerer als ein einzeiliger Befehl.

Insomnia

GUI-Anwendung

Eine schlankere Open-Source-Alternative zu Postman mit übersichtlichem Anfrage-Builder und curl-Import/Export. Gut für die Organisation von API-Anfragen; wie Postman mehr als nötig für einen einzelnen skriptgesteuerten Aufruf.

fetch() / requests

In-Code-HTTP-Clients

JavaScript fetch() und Python requests sind die Art, wie Aufrufe aus Anwendungscode heraus gemacht werden. Die Anfrage zuerst als curl aufbauen und verifizieren, dann übersetzen — der Konvertieren-Tab generiert äquivalenten fetch-, requests- und anderen Client-Code.

curl-Befehle — Beispiele

Einfache GET-Anfrage

curl https://api.example.com/users

Ohne Method-Flag verwendet curl standardmäßig GET. Dies ist die einfachstmögliche Anfrage — eine Ressource abrufen und den Response-Body im Terminal ausgeben. Füge Query-Parameter im Builder hinzu und sie werden automatisch URL-kodiert angehängt (?page=2&limit=50).

GET mit Bearer-Token

curl https://api.example.com/me \
  -H 'Authorization: Bearer YOUR_TOKEN'

Der häufigste authentifizierte Aufruf gegen eine REST-API. Die Bearer-Auth-Vorlage fügt den Authorization: Bearer …-Header für dich hinzu. Um den Inhalt eines JWT vor dem Senden zu prüfen, füge das Token in unseren JWT-Dekodierer ein.

POST mit JSON-Body

curl -X POST https://api.example.com/users \
  -H 'Content-Type: application/json' \
  -d '{"name":"Ada","role":"admin"}'

Ein Standardfall für einen curl-POST-Anfrage-Generator: Der JSON-Body-Typ setzt -X POST, hängt den Content-Type: application/json-Header an und übergibt die Nutzlast mit -d. Unübersichtliche API-Antworten lassen sich danach mit unserem JSON-Formatierer aufbereiten.

POST-Formular (URL-kodiert)

curl -X POST https://api.example.com/login \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -d 'username=ada&password=s3cret'

Klassische HTML-Formularübertragung. Jedes -d field=value-Paar wird mit & verbunden und als application/x-www-form-urlencoded gesendet. curl kodiert reservierte Zeichen URL-sicher; die Felder werden im Formular-Body-Bereich aufgebaut und das Tool stellt den String zusammen.

Multipart-Datei-Upload

curl -X POST https://api.example.com/upload \
  -F 'file=@report.pdf' \
  -F 'title=Q3 report'

Der curl-Datei-Upload-Befehl verwendet -F für multipart/form-data. Stelle einem Wert @ voran, um eine Datei vom Datenträger anzuhängen; Datei- und Textfelder können beliebig gemischt werden. curl setzt Multipart-Boundary und Content-Type automatisch — niemals manuell setzen.

In eine Datei herunterladen

curl -L -o archive.zip \
  https://example.com/files/archive.zip

Speichere den Response-Body mit -o in eine benannte Datei; -L folgt Weiterleitungen zur eigentlichen Download-URL (häufig bei CDN- und Release-Asset-Links). Verwende -O statt -o, um den Dateinamen vom Server zu übernehmen.

Basic-Authentifizierung

curl -u ada:s3cret \
  https://api.example.com/private

curl-Basic-Auth verwendet -u user:pass; curl Base64-kodiert die Anmeldedaten in einen Authorization: Basic …-Header. Basic-Auth sollte immer über HTTPS gesendet werden — Base64 ist Kodierung, keine Verschlüsselung, und ist trivial umkehrbar.

Verbose-Debug

curl -v -i https://api.example.com/health

Wenn eine Anfrage sich falsch verhält, gibt -v die vollständige Anfrage-Zeile, alle gesendeten und empfangenen Header sowie den TLS-Handshake aus; -i fügt die Response-Header in die Body-Ausgabe ein. Die erste Anlaufstelle, wenn eine API den falschen Statuscode zurückgibt.

So erstellst du einen curl-Befehl

  1. 1

    HTTP-Methode wählen

    Wähle GET, POST, PUT, PATCH, DELETE, HEAD oder OPTIONS. curl verwendet standardmäßig GET; die Auswahl von POST oder einem anderen Verb fügt -X METHOD zum generierten Befehl hinzu. Oder tippe einen Vorlagen-Chip, um Methode und passenden Body mit einem Klick zu setzen.

  2. 2

    URL und Query-Parameter eingeben

    Gib die Anfrage-URL ein (z. B. https://api.example.com/users). Füge Query-Parameter als Schlüssel/Wert-Paare hinzu — das Tool URL-kodiert sie und hängt ?key=value&… automatisch an die URL an. Keine manuelle Kodierung nötig.

  3. 3

    Header und Authentifizierung hinzufügen

    Füge Request-Header als Schlüssel/Wert-Paare hinzu, dann wähle ein Auth-Schema: Keins, Bearer-Token, Basic (Benutzername/Passwort) oder ein benutzerdefinierter API-Key-Header. Der richtige Authorization- oder benutzerdefinierte Header wird im genauen Format generiert, das der Server erwartet.

  4. 4

    Request-Body festlegen

    Für POST/PUT/PATCH wähle einen Body-Typ: Rohes JSON einfügen (der Content-Type-Header wird automatisch hinzugefügt), URL-kodierte Formularfelder aufbauen oder einen Multipart-Upload zusammenstellen und ein Feld mit dem @-Präfix auf eine Datei umstellen.

  5. 5

    Optionen aktivieren

    Aktiviere die benötigten Flags — Weiterleitungen folgen (-L), unsicheres TLS (-k), ausführlich (-v), Header einschließen (-i), komprimiert (--compressed), Ausgabe in Datei (-o), Verbindungs-Timeout oder Proxy (-x). Jede Umschaltung aktualisiert den Befehl live.

  6. 6

    Kopieren, exportieren oder zurücksetzen

    Kopiere den fertigen Befehl, exportiere ihn als .sh-Skript oder setze das Formular zurück. Verwende den Mehrzeilig-Schalter, um vor dem Kopieren zwischen einzeiliger und backslash-fortgesetzter Ausgabe zu wechseln.

Häufige curl-Fehler

Fehlendes -X bei einer Methode mit Body

Das Senden eines Bodys mit -d impliziert POST; wenn jedoch PUT oder PATCH benötigt wird, muss das explizit mit -X angegeben werden. Vergisst man es, wird der Body als POST gesendet und der Server gibt den falschen Status zurück oder lehnt die Anfrage ab.

✗ Falsch
# PATCH beabsichtigt, aber -d allein impliziert POST
curl -d '{"role":"admin"}' \
  https://api.example.com/users/7
✓ Richtig
# Verb explizit setzen
curl -X PATCH -d '{"role":"admin"}' \
  -H 'Content-Type: application/json' \
  https://api.example.com/users/7

Fehlender Content-Type bei einem JSON-POST

JSON mit -d zu senden setzt NICHT den Content-Type-Header — curl verwendet standardmäßig application/x-www-form-urlencoded. Die meisten APIs können den Body dann nicht parsen und geben 400 oder 415 zurück. Den JSON-Content-Type immer anhängen (oder die JSON-Body-Vorlage verwenden, die ihn automatisch hinzufügt).

✗ Falsch
# Server sieht urlencoded, nicht JSON — 400/415
curl -X POST https://api.example.com/users \
  -d '{"name":"Ada"}'
✓ Richtig
# JSON-Content-Type deklarieren
curl -X POST https://api.example.com/users \
  -H 'Content-Type: application/json' \
  -d '{"name":"Ada"}'

Einfache vs doppelte Anführungszeichen beim Escaping

Innerhalb doppelter Anführungszeichen expandiert die Shell $, Backticks und !, was JSON verfälscht oder bei einem $variable in der Nutzlast bricht. Einfache Anführungszeichen geben den Body wörtlich weiter. Einfache Anführungszeichen für JSON-Bodies verwenden; auf doppelte nur in cmd.exe wechseln, das keine einfachen Anführungszeichen unterstützt.

✗ Falsch
# $name wird von der Shell zu leerem String expandiert
curl -d "{\"user\":\"$name\"}" \
  https://api.example.com/users
✓ Richtig
# Einfache Anführungszeichen senden den Body wörtlich
curl -d '{"user":"$name"}' \
  https://api.example.com/users

-d bei einer GET-Anfrage verwenden

Das Hinzufügen von -d zu einer Anfrage macht sie stillschweigend zu einem POST. Für ein GET mit Query-Parametern diese in die URL einfügen (oder -G verwenden, um die -d-Daten an den Query-String anzuhängen). -d bei einem GET ist einer der häufigsten Gründe für „mein GET funktioniert nicht”.

✗ Falsch
# -d macht dies zu einem POST, nicht zu einem GET
curl -d 'page=2&limit=50' \
  https://api.example.com/users
✓ Richtig
# Query-String in der URL hält es als GET
curl 'https://api.example.com/users?page=2&limit=50'

Windows-Zeilenfortsetzung: ^ vs \

Der Backslash (\) setzt einen Befehl in bash, Git Bash und WSL auf die nächste Zeile fort. In cmd.exe ist das Fortsetzungszeichen das Caret (^), und PowerShell verwendet einen Backtick (`` ` ``). Ein backslash-fortgesetzter Befehl in cmd eingefügt — bricht ihn. Dieses Tool auf einzeilige Ausgabe für Windows cmd umstellen.

✗ Falsch
:: cmd.exe — Backslash ist kein Fortsetzungszeichen
curl -X POST https://api.example.com/users \
  -d '{"name":"Ada"}'
✓ Richtig
:: cmd.exe — eine Zeile oder ^ zur Fortsetzung verwenden
curl -X POST https://api.example.com/users -d "{\"name\":\"Ada\"}"

Leerzeichen in der URL nicht kodiert

Ein rohes Leerzeichen (oder &, #, ?) in einer URL oder einem Query-Wert bricht den Befehl — die Shell teilt das Argument und curl sieht eine abgeschnittene URL. Den Wert prozent-kodieren (Leerzeichen wird %20) oder curl mit --data-urlencode kodieren lassen. Die Query-Parameter-Felder in diesem Tool kodieren automatisch.

✗ Falsch
# Leerzeichen teilt das Argument — curl sieht zwei Args
curl https://api.example.com/search?q=hello world
✓ Richtig
# Leerzeichen kodieren (oder die ganze URL in Anführungszeichen)
curl 'https://api.example.com/search?q=hello%20world'

Häufige Anwendungsfälle

REST-API-Tests
Anfragen gegen einen REST-Endpunkt erstellen und abfeuern, ohne das Terminal zu verlassen: Methode setzen, Bearer-Token einfügen, JSON-Body senden und die Antwort lesen. Der schnellste Weg, das Verhalten einer API zu bestätigen, bevor Client-Code geschrieben wird. Ist der Endpunkt ein WebSocket (ws:// oder wss://) statt einer Request-Response-API, bauen Sie die Verbindung über den WebSocket-Tester auf und tauschen Nachrichten in beide Richtungen aus.
Anfrage aus Dokumentation reproduzieren
API-Dokumentation zeigt Endpunkte und Parameter, aber selten einen vollständigen, kopierbaren Befehl. Methode, URL, Header und Auth hier eintragen und einen curl-Befehl erhalten, der direkt ausführbar ist — kein Kämpfen mit Quotierung oder fehlenden Content-Type-Headern.
CI/CD-Smoke-Test-Skripte
Einen curl-Befehl für einen Health-Check oder Post-Deploy-Smoke-Test generieren, dann als .sh exportieren und in eine Pipeline einfügen. --connect-timeout und --max-time hinzufügen, damit ein hängender Endpunkt den Build nicht blockiert, und Statuscodes mit -w prüfen.
Datei-Upload & -Download
Einen multipart/form-data-Upload mit -F field=@file zusammenstellen oder einen -L -o dateiname-Download aufbauen, der Weiterleitungen zu einem CDN folgt. Schwierige Dateinamen oder Query-Werte vorher mit unserem URL-Kodierer kodieren.
Webhook-Debugging
Eine Webhook-Nutzlast wiederholen, indem derselbe JSON-Body, den der Anbieter sendet, mit den richtigen Signatur- und Content-Type-Headern gepostet wird. Die genaue Anfrage lokal reproduzieren, um zu debuggen, warum der Handler sie abgelehnt hat.
Reproduzierbare Bug-Reports
Einen einzelnen, in sich geschlossenen curl-Befehl in einen Bug-Report oder PR einfügen, damit jeder die genaue Anfrage reproduzieren kann — Methode, Header, Auth-Platzhalter und Body. Weit klarer als die Anfrage in Fließtext zu beschreiben.
curl-Flags erlernen
Sehen, wie jede Formularauswahl einem echten Flag entspricht — Basic-Auth wählen und beobachten, wie -u erscheint; einen JSON-Body hinzufügen und beobachten, wie der Content-Type-Header angehängt wird. Eine praktische Möglichkeit, die Syntax zu erlernen, gepaart mit unserem curl-Cheatsheet.
Anfrage für Code-Konvertierung vorbereiten
Die Anfrage zuerst als curl aufbauen und verifizieren, dann in den HTTP-Client der App übersetzen. Der Konvertieren-Tab wandelt einen eingefügten curl-Befehl in fetch, requests, Go, PHP, Ruby und Node.js um — starte von einem curl-Befehl, der funktioniert.

curl-Flags & Syntax-Referenz

Shell-Quotierung & Escaping
Das Tool schließt Werte in einfache Anführungszeichen ein — in POSIX-Shells die sicherste Form, da innerhalb eines single-quoted Strings nichts expandiert wird. Ein Literal-Single-Quote innerhalb eines Wertes wird als '\''-Sequenz ausgegeben (Anführungszeichen schließen, Backslash-Quote, Anführungszeichen erneut öffnen). In cmd.exe auf doppelte Anführungszeichen wechseln; Git Bash und WSL führen die generierten Single-Quote-Befehle unverändert aus.
-d vs --data-raw vs --data-binary
-d/--data sendet direkt angegebene Daten unverändert, entfernt aber Zeilenumbrüche und Wagenrückläufe, wenn es den Body aus einer Datei liest (-d @file) — gut für key=value-Paare, verlustbehaftet für mehrzeilige Dateien. --data-raw ist identisch, behandelt ein führendes @ jedoch nicht als Dateinamen. --data-binary sendet Bytes exakt wie angegeben (verwende @file, um rohe Dateiinhalte hochzuladen). Alle drei implizieren POST, sofern die Methode nicht überschrieben wird.
Multipart (-F) vs URL-kodiert (-d)
-F field=value erzeugt multipart/form-data mit einer generierten Boundary — erforderlich für Datei-Uploads (-F file=@pfad) und gemischte Datei/Text-Formulare. -d field=value erzeugt application/x-www-form-urlencoded, einen einzelnen &-verbundenen String. Setze Content-Type für Multipart nie manuell; curl berechnet die Boundary und setzt den Header selbst.
Auth-Header-Kodierung
Bearer-Auth sendet Authorization: Bearer <token> wörtlich (RFC 6750). Basic-Auth aus -u user:pass wird Base64-kodiert in Authorization: Basic <base64> übertragen — Kodierung, keine Verschlüsselung, also HTTPS verwenden. Ein API-Key ist welcher benutzerdefinierte Header auch immer der Dienst verlangt, z. B. X-API-Key: <value>.
Query-String-Kodierung
Im Builder hinzugefügte Query-Parameter werden prozent-kodiert und als ?key=value&key2=value2 angehängt. Reservierte Zeichen (Leerzeichen, &, =, #) werden maskiert, damit die URL gültig ist. Für Body-Felder, die kodiert werden müssen, übernimmt curls eigener --data-urlencode die Kodierung zur Anfrage-Zeit.
Weiterleitungsverhalten (-L)
Ohne -L gibt curl eine 301/302-Antwort aus und stoppt. Mit -L folgt es dem Location-Header bis zur endgültigen URL. Beachte: curl löscht den Authorization-Header, wenn eine Weiterleitung zu einem anderen Host führt (ein Sicherheitsstandard); verwende --location-trusted nur, wenn du die Implikationen verstehst.
Komprimierte Antworten
--compressed fügt einen Accept-Encoding-Header hinzu, der gzip/deflate/brotli-Unterstützung ankündigt, und dekomprimiert die Antwort transparent — spart Bandbreite. Der dekodierte Body ist identisch zu einer unkomprimierten Anfrage — reine Übertragungsoptimierung, bei den meisten API-Aufrufen sicher zu aktivieren.
Ausgabe: -o vs -O
-o dateiname schreibt den Response-Body in eine selbst benannte Datei; -O speichert ihn unter dem Remote-Dateinamen aus dem URL-Pfad. Beide unterdrücken die normale stdout-Ausgabe. Mit -L kombinieren, damit Weiterleitungen zur eigentlichen Ressource aufgelöst werden, bevor die Datei geschrieben wird.

Best Practices für curl-Anfragen

Niemals Secrets in geteilten Befehlen hartcodieren
Ein curl-Befehl, den du in einem PR, einem Ticket oder einem Chat einfügst, wird von anderen gelesen und von Tools indexiert. Ersetze Token und Passwörter durch Platzhalter (YOUR_TOKEN) oder referenziere eine Umgebungsvariable (-H "Authorization: Bearer $API_TOKEN"). Für lange Credentials kann curl einen Header aus einer Datei lesen mit -H @headerfile, sodass das Secret nie in der Shell-History erscheint.
--data-binary @file für binäre Nutzlasten bevorzugen
Wenn der Body eine Datei ist, deren Bytes wichtig sind — ein Bild, eine signierte Nutzlast, JSON mit bedeutsamen Leerzeichen — verwende --data-binary @file statt -d @file. Einfaches -d entfernt Zeilenumbrüche und Wagenrückläufe und korrumpiert binäre und mehrzeilige Inhalte lautlos. --data-binary sendet die Datei exakt so, wie sie auf dem Datenträger liegt.
Header-Werte in Anführungszeichen einschließen
Schließe -H-Werte immer in Anführungszeichen ein: -H 'Content-Type: application/json'. Ohne Anführungszeichen teilt das Leerzeichen nach dem Doppelpunkt das Argument und curl sieht einen fehlgebildeten Header. Einfache Anführungszeichen verhindern auch die Expansion von $, * und anderen Sonderzeichen innerhalb des Wertes — genau das, was dieses Tool standardmäßig ausgibt.
--compressed zur Bandbreiteneinsparung verwenden
Füge --compressed bei API-Aufrufen und Downloads hinzu, um gzip/brotli-Kodierung anzufordern, die curl transparent dekomprimiert. Bei JSON-lastigen APIs kann dies die Übertragungsgröße um 70–90 % reduzieren, ohne die Antwort zu verändern — ein kostenloser Gewinn in Skripten, die Endpunkte wiederholt abrufen.
Timeouts in Skripten festlegen
In jedem automatisierten Kontext --connect-timeout und --max-time hinzufügen, damit ein langsamer oder hängender Endpunkt eine Pipeline nicht ewig blockieren kann. Ein Health-Check mit --max-time 10 schlägt schnell fehl und ermöglicht der CI weiterzumachen. Mit --retry N kombinieren, um vorübergehende Netzwerkunterbrechungen aufzufangen, ohne sofort aufzugeben.
Mit -v verifizieren, bevor automatisiert wird
Bevor ein curl-Befehl in ein Skript oder einen Cron-Job gebacken wird, einmal mit -v ausführen, um die genaue Anfrage-Zeile, Header und TLS-Handshake zu sehen. Der schnellste Weg, eine falsche Methode, einen fehlenden Content-Type oder einen nicht angehängten Auth-Header zu erkennen — interaktiv debuggen, dann -v für die Produktion entfernen.

Häufig gestellte Fragen

Was macht dieses Tool?
Es baut einen sofort ausführbaren curl-Befehl aus einem einfachen Formular. Du wählst die HTTP-Methode, tippst eine URL, fügst Query-Parameter und Header hinzu, wählst ein Authentifizierungsschema (Keins, Bearer, Basic oder API-Key-Header), setzt einen Request-Body (JSON, Formular, Multipart oder Datei-Upload) und aktivierst Optionen wie Weiterleitungen folgen oder Verbose. Während du das Formular ausfüllst, wird der curl-Befehl unten auf der Seite live neu aufgebaut — kopiere ihn, exportiere ihn als .sh-Skript oder wechsle zwischen einzeiliger und mehrzeiliger Ausgabe. Es ist ein curl-Befehlsgenerator für den täglichen Workflow beim Testen einer REST-API, Reproduzieren einer Anfrage aus der Dokumentation oder Einfügen eines reproduzierbaren Befehls in einen Bug-Report. Für eine ausführlichere Referenz zu den Flags selbst, sieh dir unser curl-Cheatsheet an.
Werden meine Daten (Token, URLs) irgendwohin hochgeladen?
Nein. Der gesamte Befehl wird im Browser mit JavaScript zusammengestellt. Deine Token, Anmeldedaten, URLs, Header und Request-Bodies werden nie übertragen, gespeichert oder auf einem Server protokolliert — das lässt sich im Netzwerk-Tab des Browsers bestätigen, wo der Aufbau eines Befehls null Netzwerkanfragen auslöst. Deshalb ist das Tool sicher für echte Produktions-Endpunkte und Live-API-Schlüssel: Nichts, was du eingibst, verlässt dein Gerät. Der Befehl tut erst etwas, wenn du ihn kopierst und selbst in deinem Terminal ausführst.
Wie sende ich eine POST-Anfrage mit JSON in curl?
Stelle die Methode auf POST und wähle den JSON-Body-Typ; das Tool erzeugt curl -X POST <url> -H 'Content-Type: application/json' -d '{…}'. Zwei Dinge sind wichtig: Das Flag -d (oder --data) trägt den Body, und der Content-Type: application/json-Header teilt dem Server mit, wie er ihn parsen soll — fehlt der Header, ignorieren oder verlesen viele Frameworks die Nutzlast. Modernes curl (7.82+) bietet auch die Abkürzung --json, die Header und Body zusammen setzt. Nach dem Aufruf füge die Antwort in unseren JSON-Formatierer ein, um sie zu formatieren und zu validieren.
Wie füge ich einer curl-Anfrage ein Bearer-Token hinzu?
Füge einen Authorization-Header mit dem Wert Bearer YOUR_TOKEN hinzu oder wähle die Vorlage „GET mit Bearer” und füge dein Token ein. Der generierte Befehl lautet curl <url> -H 'Authorization: Bearer YOUR_TOKEN'. Das Wort Bearer, ein einzelnes Leerzeichen, dann das Token — dieses genaue Format wird durch die OAuth-2.0-Bearer-Spezifikation (RFC 6750) verlangt. Um die Claims und den Ablaufzeitpunkt eines Tokens vor dem Senden zu prüfen, dekodiere ihn mit unserem JWT-Dekodierer.
Wie lade ich eine Datei mit curl hoch?
Verwende den Multipart-Body-Typ und stelle ein Feld auf „Datei”: Das Tool gibt curl -X POST <url> -F 'file=@/path/to/file' aus. Das @-Präfix weist curl an, die Datei vom Datenträger zu lesen und als multipart/form-data zu senden; du kannst weitere -F-Felder für Dateien und Klartextwerte in derselben Anfrage hinzufügen. Setze den Content-Type-Header für Multipart nicht manuell — curl generiert die Boundary und setzt den Header automatisch; eine Überschreibung bricht den Upload. Für einen einzelnen PUT einer Datei verwendet curl -T file <url>.
Kann ich einen aus Browser-DevTools kopierten Befehl ("Als cURL kopieren") importieren?
Ja — genau dafür gibt es den Konvertieren-Tab. Füge den Befehl ein, auch den, den DevTools mit „Als cURL kopieren“ erzeugt, ob im bash- oder im Windows-cmd-Format: Er wird im Browser geparst und in JavaScript-fetch-, Node.js-, Python-requests-, Go-, PHP- und Ruby-Code übersetzt. „In Erstellen öffnen“ lädt dieselbe Anfrage in das Erstellen-Formular — URL, Query-Parameter, Header, Auth und Body —, damit du sie dort bearbeiten kannst. Optionen, die der Konverter nicht verarbeitet, werden als Warnungen aufgelistet statt stillschweigend verworfen.
Was ist der Unterschied zwischen curl unter Windows und Linux/macOS?
Das curl-Binary verhält sich gleich; die Shell-Quotierung unterscheidet sich. In cmd.exe verwendet man doppelte Anführungszeichen (") um Werte und das Caret (^) für Zeilenfortsetzung, einfache Anführungszeichen haben keine besondere Bedeutung. In PowerShell ist curl ein Alias für Invoke-WebRequest, es sei denn, du rufst curl.exe explizit auf, und Quotierungsregeln unterscheiden sich erneut. Die schmerzloseste Option ist Git Bash oder WSL, wo die Unix-Style-Single-Quote-Befehle dieses Tools unverändert funktionieren. Wenn du cmd verwenden musst, wechsle zur einzeiligen Ausgabe und ersetze die '…'-Quotierung durch "…".
Was ist der Unterschied zwischen -d, --data-raw und --data-binary?
-d (Alias --data) sendet direkt angegebene Daten unverändert; nur wenn es den Body aus einer Datei liest (-d @file), entfernt es Zeilenumbrüche und Wagenrückläufe — gut für key=value-Formularpaare, riskant für mehrzeilige JSON-Dateien. --data-raw ist identisch, behandelt jedoch ein führendes @ nicht als Dateinamen — die sichere Wahl, wenn die Daten buchstäblich mit @ beginnen könnten. --data-binary sendet die Bytes exakt wie angegeben, ohne Entfernung von Zeilenumbrüchen — das richtige Flag für rohe Dateiinhalte (--data-binary @file.json) oder jede Nutzlast, bei der Leerzeichen bedeutsam sind. Alle drei implizieren POST, es sei denn, die Methode wird überschrieben.
Wie sende ich Cookies mit curl?
Verwende -b zum Senden und -c zum Speichern von Cookies. -b 'name=value' sendet einen Literal-Cookie-String, während -b cookies.txt Cookies aus einer Netscape-Format-Datei liest. Um Cookies zu speichern, die ein Server setzt (z. B. nach einem Login), füge -c cookies.txt hinzu, um sie in ein Jar zu schreiben, und verwende das Jar dann mit -b cookies.txt bei der nächsten Anfrage. Dieser Builder konzentriert sich auf Header, Auth und Body; für einen Cookie-Header kannst du auch einfach einen Cookie: name=value-Header im Headers-Bereich hinzufügen.
Wie folge ich Weiterleitungen?
Aktiviere „Weiterleitungen folgen (-L)” oder füge das -L-Flag manuell hinzu. Standardmäßig gibt curl die 301/302-Antwort aus und stoppt; -L weist es an, dem Location-Header bis zum endgültigen Ziel zu folgen. Dies ist unverzichtbar für Download-Links hinter CDNs, gekürzte URLs und APIs, die von HTTP auf HTTPS umleiten. Kombiniere es mit -o dateiname, um eine heruntergeladene Datei zu speichern, nachdem die Weiterleitung aufgelöst wurde.
Wie setze ich einen Anfrage-Timeout?
Verwende die Option „Verbindungs-Timeout”, um --connect-timeout <Sekunden> hinzuzufügen, das begrenzt, wie lange curl auf den Verbindungsaufbau wartet. Für eine Obergrenze der gesamten Übertragung — Verbindung plus Download — füge --max-time <Sekunden> manuell zum generierten Befehl hinzu. Timeouts festzulegen ist eine Best Practice in jedem Skript oder CI-Smoke-Test: Ohne sie kann ein hängender Endpunkt die Pipeline unbegrenzt blockieren. Kombiniere mit --retry N, wenn curl bei vorübergehenden Fehlern automatisch wiederholen soll.

Verwandte Werkzeuge

Alle Werkzeuge anzeigen →