OpenAPI Formatter Online — Beautify JSON & YAML Specs

Pretty-print OpenAPI 3.0–3.2 documents (JSON or YAML) in your browser — 2 or 4 space indent, nothing uploaded.

Loading…
Format OpenAPI documentation
Pretty-print OpenAPI JSON or YAML in the browser.

Developer notes

Generic pretty-print (JSON.stringify / yaml.dump) — optional recursive key sort for stable diffs. Input kind is preserved: JSON in → JSON out; YAML in → YAML out. Auto-format on paste/upload/sample; manual edits use the Format button (⌘↵). YAML comments are lost on format. Numeric openapi versions in YAML (e.g. 3.0) are normalized to strings (3.0.0). Max input 512 KiB.

Options

Indent
Spaces per level for JSON.stringify / yaml.dump (2 or 4).
Sort keys
Off by default (preserves key order). On recursively sorts object keys for stable PR diffs; array element order is unchanged.

Use cases

Clean up minified or hand-edited OpenAPI JSON/YAML before review. Normalize indentation (2 or 4 spaces) for PR diffs. Pair with Validate OpenAPI after formatting.

Examples

Compact JSON → indented

Before

{"openapi":"3.1.0","info":{"title":"Pets API","version":"1.0.0","description":"Simple pet store API"},"paths":{"/pets":{"get":{"operationId":"listPets","tags":["pets"],"summary":"List pets","parameters":[{"name":"limit","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Pet"}}}}}}}}},"components":{"schemas":{"Pet":{"type":"object","required":["id","name"],"properties":{"id":{"type":"integer"},"name":{"type":"string"}}}}}}

After

{ "openapi": "3.1.0", "info": { "title": "Pets API", "version": "1.0.0", "description": "Simple pet store API" }, "paths": { "/pets": { "get": { "operationId": "listPets", "tags": [ "pets" ], "summary": "List pets", "parameters": [ { "name": "limit", "in": "query", "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Pet" } } } } } } } } }, "components": { "schemas": { "Pet": { "type": "object", "required": [ "id", "name" ], "properties": { "id": { "type": "integer" }, "name": { "type": "string" } } } } } }

YAML preserved as YAML

Before

openapi: "3.0.3" info: title: Pets version: 1.0.0 paths: {}

After

openapi: "3.0.3" info: title: Pets version: 1.0.0 paths: {}

Format OpenAPI FAQ

Common questions

Does format preserve JSON vs YAML?

Yes. JSON input produces indented JSON; YAML input produces YAML via yaml.dump. Comments in YAML are not preserved.

Is this an OpenAPI-aware pretty printer?

Pretty-print is still generic (JSON.stringify / yaml.dump). Turn on Sort keys for recursive alphabetical key order (stable diffs). It is not an OpenAPI-aware reorder (paths before components, etc.).

What about openapi: 3.0 as a YAML number?

Numeric versions are normalized to strings (3 → 3.0.0, 3.0 → 3.0.0) before output.

Which OpenAPI versions?

OpenAPI 3.0, 3.1, and 3.2. Swagger 2.0 is not supported — use our OpenAPI tools only for 3.x.

OpenAPI tools to format, validate, and lint your specs.