Postman to OpenAPI Converter
Convert Postman Collection v2.1 and v2.0 JSON files to OpenAPI v3.0 specification online. Supports auth, bodies, responses, and YAML/JSON output.
Drop Postman Collection JSON here
or click to browse · Supports v2.0 & v2.1
About
Postman Collections use a proprietary schema (v2.0 and v2.1) that encodes API requests, folder structures, authentication, and example responses into a nested JSON document. OpenAPI v3.0 is the industry-standard specification for describing RESTful APIs, consumed by code generators, documentation engines, and gateway platforms. Manual conversion between these formats is error-prone. Mismatched path parameters, lost authentication schemes, or dropped request bodies break downstream tooling and can delay integration by days. This tool parses the full Postman Collection structure - including nested folders, auth inheritance, formdata and raw body types, query parameters, headers, and saved responses - and emits a compliant OpenAPI 3.0 document. It infers JSON Schema types from example payloads and maps Postman variables ({{baseUrl}}) to OpenAPI server templates. Output is available in both JSON and YAML. The conversion runs entirely in your browser with no server round-trip. Limitation: deeply nested polymorphic response bodies are approximated as flat object schemas.
Formulas
The conversion follows a deterministic mapping algorithm. Each Postman item node is traversed recursively. Leaf nodes (requests) produce path operations. Branch nodes (folders) produce tags.
URL normalization strips the host and protocol, converts Postman path variables from colon-prefix to brace notation:
Schema inference from a JSON example body follows type detection rules:
Where value = the parsed JSON value from the request or response body example. Each object type recursively generates properties with nested inferType calls. Each array type infers items schema from the first element.
Reference Data
| Postman Feature | OpenAPI 3.0 Mapping | Notes |
|---|---|---|
| Collection info.name | info.title | Direct mapping |
| Collection info.description | info.description | Markdown preserved |
| Folders (nested item) | tags | Folder name becomes tag |
| Request method | HTTP verb (get, post, etc.) | Lowercased |
| Request url.raw | paths key | Variables resolved to {param} |
| URL :pathParam | parameters with in: path | Colon syntax converted |
| Query parameters | parameters with in: query | Disabled params skipped by default |
| Headers | parameters with in: header | Content-Type excluded (implicit) |
| body.mode: raw (JSON) | requestBody with application/json | Schema inferred from example |
| body.mode: formdata | requestBody with multipart/form-data | File types detected |
| body.mode: urlencoded | requestBody with application/x-www-form-urlencoded | Key-value pairs mapped |
| body.mode: raw (XML) | requestBody with application/xml | Schema as string type |
| body.mode: raw (text) | requestBody with text/plain | No schema inference |
| Saved responses | responses with status codes | Body parsed for schema & examples |
| auth.type: bearer | securitySchemes.bearerAuth | HTTP bearer scheme |
| auth.type: basic | securitySchemes.basicAuth | HTTP basic scheme |
| auth.type: apikey | securitySchemes.ApiKeyAuth | Header or query location |
| auth.type: oauth2 | securitySchemes.oauth2 | Flows mapped where possible |
| Collection variables | Server variables | {{var}} → {var} |
| url.host + url.protocol | servers[0].url | Combined into server URL |
| Request name | summary | Used as operation summary |
| Request description | description | Markdown preserved |
| Postman v2.0 schema | OpenAPI 3.0.3 | Auto-detected, normalized first |
| Postman v2.1 schema | OpenAPI 3.0.3 | Primary target format |