curl in Code umwandeln — Python, JavaScript, Go, PHP & mehr

Füge einen curl-Befehl ein, auch aus „Als cURL kopieren“ in Chrome, und erhalte dieselbe Anfrage in Python, JavaScript, Node, Go, PHP, Ruby, Java, C#, wget oder HTTPie.

Beispiele:
Umwandeln in
POST https://api.example.com/v1/orders · 2 Header · JSON-Body
import requests

headers = {
    'Authorization': 'Bearer YOUR_API_TOKEN',
    'Content-Type': 'application/json',
}

json_data = {
    'customer_id': 'cus_123',
    'items': [
        {
            'sku': 'TSHIRT-M',
            'qty': 2,
        },
    ],
    'note': 'Leave at the door',
}

response = requests.post('https://api.example.com/v1/orders', headers=headers, json=json_data)
print(response.status_code)
print(response.text)

Läuft komplett in deinem Browser. Der Befehl wird nur analysiert, nie ausgeführt oder irgendwohin gesendet – Tokens und Cookies darin bleiben also auf deinem Rechner. Alle kostenlosen Tools ansehen.

Ein Problem gefunden oder etwas, das besser sein könnte? Wir lesen jede Nachricht und beheben Fehler schnell.

Dieser kostenlose curl-Konverter nimmt einen curl-Befehl und schreibt dieselbe HTTP-Anfrage in Python (requests), JavaScript (fetch oder Axios), Node.js, Go, PHP, Ruby, Java, C#, wget oder HTTPie. Der übliche Ablauf: Suche eine Anfrage in den DevTools deines Browsers, wähle „Als cURL kopieren“, füge sie hier ein und erhalte funktionierenden Code, ohne Header abzutippen oder einen JSON-Body von Hand zu escapen.

Der Parser folgt den Regeln von curl selbst: Kurzoptionen lassen sich kombinieren (-sSL) oder anhängen (-XPOST), die URL darf überall stehen, -d impliziert POST mit Formular-Content-Type, -G verschiebt die Daten in den Query-String, und --data-urlencode kodiert so wie curl. Er versteht bash-Quoting einschließlich der $'…'-Strings, die Chrome erzeugt, und Windows-cmd-Quoting mit ^-Escapes. Alles, was eine Zielsprache nicht abbilden kann, etwa das Überspringen der TLS-Prüfung im Browser, wird in einem Kommentar angemerkt, statt stillschweigend wegzufallen.

So funktioniert’s

  1. Öffne in den DevTools von Chrome oder Edge den Tab „Netzwerk“, klicke mit der rechten Maustaste auf eine Anfrage und wähle Kopieren → Als cURL kopieren (bash oder cmd). In Firefox wähle Wert kopieren → Als cURL kopieren. Oder schreib deinen eigenen curl-Befehl.
  2. Füge ihn in das Feld ein. Methode, URL, Anzahl der Header und Body-Typ erscheinen über der Ausgabe, damit du prüfen kannst, ob er richtig gelesen wurde.
  3. Wähle die Zielsprache. Der Code aktualisiert sich sofort.
  4. Lies die Hinweise im gelben Kasten: Sie listen Optionen auf, die ignoriert wurden oder Aufmerksamkeit brauchen.
  5. Kopiere den Code oder lade ihn herunter. Ersetze Tokens und Cookies, bevor du ihn irgendwo committest.

Häufige Fragen

Wie kopiere ich eine Anfrage in Chrome als cURL?

Öffne die DevTools (F12 oder Cmd+Option+I), wechsle zum Tab „Netzwerk“ und lade die Seite neu, falls die Liste leer ist. Klicke mit der rechten Maustaste auf die gewünschte Anfrage, wähle „Kopieren“ und dann „Als cURL kopieren (bash)“ unter macOS und Linux oder „Als cURL kopieren (cmd)“ unter Windows. Beide Formate funktionieren hier. Der kopierte Befehl enthält deine Cookies und Authorization-Header – behandle ihn also wie ein Passwort.

Warum fehlen im Browser-fetch-Code einige Header?

Browser lassen JavaScript bestimmte Request-Header nicht setzen: Cookie, Host, Origin, Referer, in der Praxis User-Agent, Content-Length, Accept-Encoding, Connection und alles, was mit Sec- oder Proxy- beginnt. Im Fetch-Standard heißen sie Forbidden Request Headers, und der Browser füllt sie selbst aus. Die Ausgabe für Browser-fetch lässt sie weg und sagt das in einem Kommentar; die Ausgabe für Node.js fetch behält sie, weil Node keine solche Einschränkung hat.

Was ist der Unterschied zwischen -d, --data-raw und --data-binary?

-d (--data) sendet den Text als Body, ein Wert, der mit @ beginnt, wird aber aus einer Datei gelesen, wobei Wagenrückläufe und Zeilenumbrüche entfernt werden. --data-raw ist dasselbe ohne das @-Dateiverhalten, deshalb nutzen Browser es. --data-binary liest ebenfalls @-Dateien, behält die Bytes aber exakt bei. Alle drei setzen Content-Type: application/x-www-form-urlencoded, sofern du keinen eigenen Header angibst, und mehrere -d-Optionen werden mit & verbunden.

Folgt curl Weiterleitungen?

Standardmäßig nicht; es gibt die 3xx-Antwort zurück, wenn du nicht -L (--location) hinzufügst. Die meisten HTTP-Bibliotheken machen es umgekehrt: fetch, Python requests, Go net/http, Axios in Node und .NET HttpClient folgen Weiterleitungen automatisch. Java HttpClient, PHP cURL und Ruby Net::HTTP tun das nicht; enthält dein Befehl -L, schaltet der erzeugte Code das Folgen für sie ein (Ruby bekommt einen Hinweis, weil Net::HTTP dafür keinen Schalter hat).

Was macht --compressed, und brauche ich es im Code?

Es lässt curl einen Accept-Encoding-Header senden (gzip, deflate, br und zstd, je nachdem, wie curl gebaut wurde) und die Antwort dekomprimieren. Browser, Python requests, Go und Node fetch fordern komprimierte Antworten bereits von selbst an und dekodieren sie. Der erzeugte Code ergänzt es nur dort, wo die Bibliothek es eingeschaltet braucht: CURLOPT_ENCODING in PHP, AutomaticDecompression in C#, --compression=auto in wget.

Wird mein curl-Befehl irgendwohin gesendet?

Nein. Der Befehl wird von JavaScript auf dieser Seite geparst und umgewandelt. Er wird nie ausgeführt und nie an einen Server gesendet, sodass die Tokens und Session-Cookies in einer aus den DevTools kopierten Anfrage auf deinem Rechner bleiben.

curl-Optionen und was daraus wird

• -X / --request setzt die Methode. Ohne sie ist die Methode GET, POST bei -d, --json oder -F, HEAD bei -I und PUT bei -T.

• -H / --header fügt einen Header hinzu. "Name:" ohne etwas danach entfernt einen Header, und "Name;" sendet einen leeren.

• --json body sendet JSON und setzt sowohl Content-Type als auch Accept auf application/json (curl ab 7.82).

• -F name=value und -F file=@photo.jpg;type=image/jpeg erzeugen einen multipart/form-data-Body; der Code verwendet je nach Sprache FormData, files=, CURLFile oder MultipartFormDataContent.

• -u user:password wird zu Basic-Authentifizierung; -b "a=1; b=2" wird zu einem Cookie-Header (oder einem cookies-Dict in Python).

• -A und -e setzen User-Agent und Referer. -k / --insecure deaktiviert die Zertifikatsprüfung; das wird nach Möglichkeit mit einer Warnung angezeigt, weil es nie in Produktion landen sollte.

• -G / --get hängt alle Werte von -d und --data-urlencode als Query-String an die URL an und sendet ein GET.

• -s, -S, -v, -i, -o und Fortschrittsoptionen beeinflussen nur, wie curl die Ausgabe anzeigt; sie haben im Code keine Entsprechung und werden ignoriert.

Quoting in bash und Windows, kurz erklärt

In bash ist Text in 'einfachen Anführungszeichen' wörtlich; "doppelte Anführungszeichen" erlauben die Escapes \" und \$; $'…'-Strings verstehen die Escapes \n, \t, \' und \xHH. Ein Backslash am Zeilenende setzt den Befehl in der nächsten Zeile fort. Chrome verwendet $'…', sobald ein Header oder Body ein einfaches Anführungszeichen oder ein Nicht-ASCII-Zeichen enthält.

In Windows cmd ist ^ das Escape-Zeichen und setzt außerdem eine Zeile fort. „Als cURL kopieren (cmd)“ in Chrome schließt jeden Wert in ^"…^" ein und escapet Zeichen wie &, %, { und } mit ^. PowerShell ist wieder anders: In Windows PowerShell 5 ist curl ein Alias für Invoke-WebRequest, führe dort also ausdrücklich curl.exe aus. Dieser Konverter liest sowohl die bash- als auch die cmd-Form; PowerShell-spezifische Syntax wie Zeilenfortsetzungen mit Backtick wird nicht unterstützt.

Ähnliche kostenlose Tools

  • JSON in TypeScript — Füge ein JSON-Beispiel ein und erhalte TypeScript-Interfaces, ein Zod-Schema, ein JSON Schema oder Typen für Go, Python, Java, C#, Kotlin, Swift und Rust.
  • JSON Formatter — JSON formatieren, minifizieren und validieren, Parse-Fehler mit Zeile und Spalte. Im Browser, ohne Upload.
  • JWT-Decoder — Dekodiere Header und Payload eines JWT, lies das Ablaufdatum in Klartext, prüfe HS-, RS-, PS- und ES-Signaturen oder signiere ein neues Token. Nichts verlässt deinen Browser.
  • Base64-Encoder / -Decoder — Kodiere Text oder Dateien in Base64, mach aus Bildern Data-URIs mit CSS- und <img>-Snippets und dekodiere Base64 zurück in eine Datei mit Vorschau. Nichts verlässt deinen Browser.
  • SSL-Zertifikat-Decoder — Füge ein PEM-Zertifikat, eine Kette oder eine CSR ein oder lade eine .crt-Datei hoch, um SANs, Ablaufdatum, Aussteller, Schlüsseltyp und Fingerabdrücke zu sehen. Im Browser dekodiert.