Free tool CHANGELOG.md JSON HTML docs

API Changelog Generator — Turn Two OpenAPI Specs Into Release Notes

Paste your previous and new spec, get a formatted CHANGELOG.md in seconds — no install, no signup

Every added, removed, deprecated and breaking change, grouped Keep a Changelog style and ready to ship as Markdown, JSON, or a live documentation page.

Previous version (released)

1

New version (releasing)

1

Release details

Optional — detected from info.title and info.version

Write your release notes automatically

Add both spec versions above, then click Generate Changelog. You'll get grouped, human-readable release notes — and can download them as Markdown, JSON, or publish them as HTML docs.

Formats
MD / JSON / HTML
Versions
2.0 / 3.x
Cost
Free
Automate it

Want this generated automatically on every release?

Publish your API docs on ApiNotes and every spec upload is diffed against the previous version — the changelog writes itself, versioned, hosted, and linked from your docs. No copy-paste, no forgetting.

Every spec upload is diffed against the previous version automatically.
Release notes are versioned and hosted next to your API reference.
Breaking changes are flagged before your consumers find them.
Your GitHub Action can push the new spec on merge — the changelog follows.

Need the raw diff instead? Try the OpenAPI Diff tool →· Validating a single spec? OpenAPI Validator →

Frequently asked questions

What formats can I export?

HTML documentation (live ApiNotes docs with the changelog already populated, which you can claim and keep permanently), Markdown (a Keep a Changelog style CHANGELOG.md), and JSON (a structured release entry with grouped sections).

Which spec versions are supported?

OpenAPI 3.0, 3.1, 3.2 and Swagger 2.0, in both JSON and YAML. The two versions you compare don't have to use the same format.

Are my specs stored?

Generating release notes stores nothing — the diff runs and the result is returned. Only when you choose to publish HTML documentation is a temporary project created, and it is deleted automatically after 48 hours.

How are breaking changes decided?

The same engine that powers our OpenAPI diff: removed endpoints, removed or newly required parameters and properties, narrowed types, changed security requirements and removed responses all count as breaking.