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

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”. 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 <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?
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 <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 →