Paste request data or select a local file, then choose an output format. Review the extracted methods, URLs and headers before copying or downloading the conversion.
Runs locally in your browserThe converter reads copied text or a selected local file. It never calls an API endpoint or imports a collection remotely.
| Name | Method | URL | Headers |
|---|---|---|---|
| Paste a collection or request to see its local conversion preview. | |||
Review the generated output before committing it. Authentication values are preserved only in this browser tab and should be replaced with safe variables before sharing.
Five inputs — Postman collections, Insomnia exports, Bruno requests, OpenAPI or Swagger documents and cURL commands — and four outputs: OpenAPI 3.0.3, Postman v2.1, cURL and Fetch JavaScript. All twenty input and output pairs were run against real request data while this page was written.
The conversion is browser JavaScript. With the network panel open, converting a 2.2 MB collection produced no request at all: no collection, URL or credential is uploaded, and no endpoint named in the input is ever called.
Postman folders flatten into "Folder / Request" names, and values from the collection's own variable list are substituted into URLs, headers and bodies, so a {{baseUrl}} that the file defines arrives as a real address. A placeholder the file never defines is left exactly as written rather than guessed at.
Swagger 2.0 documents are read through host, basePath and schemes: in: body parameters become a request body using the declared consumes media type, and in: formData fields become multipart form data. Bruno files are read for the method block, the URL and the headers block; other blocks in the file are ignored.
The parser accepts -X/--request, -H/--header, -d/--data/--data-raw/--data-binary/--data-urlencode, -F/--form/--form-string, -u/--user, -A/--user-agent, -b/--cookie, -e/--referer and --url, and joins lines that end in a backslash before parsing starts. -u user:pass becomes an Authorization: Basic header; -A, -b and -e become User-Agent, Cookie and Referer.
Uploads survive the trip: -F "file=@photo.png" switches the method to POST the way curl does, then comes back as a file field in Postman, a -F argument in cURL or a FormData entry in Fetch. A body read from disk stays a file reference — -d @payload.json is re-emitted as --data @payload.json, while --data-raw @payload.json keeps its literal meaning.
A path template survives a round trip: /items/{id} converted from one OpenAPI document to another stays /items/{id} instead of arriving as /items/%7Bid%7D. A query string becomes query parameters holding the values that were in the URL, and one path with two methods becomes one path item with two operations.
An OpenAPI document cannot hold two operations for the same path and method, so repeated pairs are merged and the status line reports the number. Requests aimed at different hosts keep their own server entry, with the first host as the server of the document.
The generated OpenAPI carries example values rather than schemas: a body becomes an example object and every operation gets a placeholder 200 Successful response. It is an editable starting document, not a validated specification, and it will not invent the response models that were never in the source.
Header and authentication values are copied verbatim, which is why the page asks for them to be replaced with variables before the result is shared. A conversion that fails clears the previous result instead of leaving it on screen, so an old document is never mistaken for the current one. Large inputs stay quick: 5,000 requests in 2.2 MB converted in about 65 ms, and 100 requests in 43 KB in about 10 ms.