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 · Jun 3, 2026

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”. Ein Konvertieren-Tab, der curl-Befehle in fetch, requests, Go, PHP, Ruby und Node.js parst, erscheint im nächsten Release.

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 kommende 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.
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 kommende Konvertieren-Tab wird einen eingefügten curl-Befehl in fetch, requests, Go, PHP, Ruby und Node.js umwandeln — 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` entfernt Zeilenumbrüche und Wagenrückläufe aus dem Body — gut für `key=value`-Paare, verlustbehaftet für mehrzeilige Inhalte. `--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 ` wörtlich (RFC 6750). Basic-Auth aus `-u user:pass` wird Base64-kodiert in `Authorization: Basic ` ü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: `.
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 -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 -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 -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 `.
Kann ich einen aus Browser-DevTools kopierten Befehl ("Als cURL kopieren") importieren?
Noch nicht — das ist der Konvertieren-Tab, der im nächsten Release erscheint. Er wird einen eingefügten curl-Befehl (einschließlich des von DevTools generierten) parsen und in JavaScript fetch, Python requests, Go, PHP, Ruby und Node.js übersetzen. Derzeit ist das Tool ein Builder: Erstelle die Anfrage neu, indem du URL, Header, Auth und Body-Felder manuell ausfüllst. Die DevTools-Ausgabe ist ausführlich, aber lesbar — kopiere jeden `-H`-Header in den Headers-Bereich und die URL in das URL-Feld.
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 einen Body und entfernt Zeilenumbrüche und Wagenrückläufe aus den Daten — gut für `key=value`-Formularpaare, riskant für mehrzeiliges JSON. `--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 ` 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 ` 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 →