# AsyncAPI Check and Event API Diff

Paste AsyncAPI YAML or JSON to list its servers, channels, operations and messages, with issues such as unresolved $ref and unused components by line number. Paste an old and a new version to see candidates such as removed channels or operations, and removed or newly required payload properties. Nothing leaves your browser.

- URL: https://tools.itlibra.com/en/asyncapi-studio
- On-device・No upload
- Last updated: 2026-10-31

## How to use

1. Paste the old AsyncAPI in “Before (old definition)” and the new one in “After (new definition)”, or open a file with “Open file”. “Try a sample” also works.
2. To check one document, press “Check document” (it reads the left pane). To compare two, press “Compare” (or Ctrl / ⌘ + Enter).
3. The check lists servers, channels, operations and messages, with issues by line number. The comparison shows breaking change candidates and safe changes.
4. Use “Copy Markdown” to paste a table into a pull request description, or “Save JSON” to keep the verdict, counts and changes.

## Use cases

- Check a pull request that edits an event definition for changes that may break existing subscribers
- Find unresolved $ref values and components that nothing uses, by line number
- Check whether the 2.x and 3.0 writing styles are mixed
- Compare internal event definitions without sending them outside

## What it does

### Channels, operations and messages

Reads publish and subscribe from 2.x, and channels and operations (send and receive) from 3.0, and lists them.

### $ref resolution and cycle check

Resolves #/... references inside the document, and shows unresolved and circular ones by line number. External files and URLs are never fetched.

### Writing issues

Flags the version field, info title and version, mixed 2.x and 3.0 styles, operations without a channel and unused components.

### Breaking change candidates

Removed channels, operations and messages, removed payload properties, changed types and newly required properties are shown as candidates, apart from safe additions.

### Runs only in your browser

The document is not sent anywhere and is read inside your browser. The tool does not connect to a broker.


## Supported formats

### Input

- AsyncAPI 2.x (such as 2.6.0)
- AsyncAPI 3.0.0
- .yaml / .yml / .json
- UTF-8 (with or without BOM)

### Output

- On-screen lists (definitions, issues, changes)
- Markdown (table for a pull request)
- JSON (verdict, counts and changes)


## Capability matrix

| Feature | Support | Notes |
| --- | --- | --- |
| Reading AsyncAPI 2.x and 3.0 in YAML or JSON | Supported | — |
| Lists of info, servers (protocol), channels, operations, messages and components | Supported | — |
| $ref (#/...) inside the document: resolution and cycle check | Supported | — |
| $ref to external files or URLs | Not supported | Not fetched. Shown as not resolved |
| Issues: version field, info, unresolved $ref, unused components, operation without a channel, mixed styles | Supported | A check for common mistakes. It is not a full schema validation |
| Comparing channels, operations and messages (added and removed), and payload properties, types, required and enum | Supported | Only payload parts that resolve inside the document are compared |
| Full JSON Schema validation (checking payload values) | Not supported | — |
| Connecting to a broker, sending or receiving messages | Not supported | No network access |
| AsyncAPI 1.x | Not supported | Not supported. The version field shows it |
| Code or HTML documentation generation | Not supported | — |
| Offline use | Supported | Works without a connection once the page has loaded |

## Limits & notes

- Up to 300,000 characters per document. Files up to 1 MB.
- References are expanded to depth 5. Deeper parts are not compared.
- The verdict follows general rules for writing and compatibility. Each API may have its own policy.

## Privacy & safety

The document is read only inside your browser. Nothing is sent or stored, and closing the page discards it. Analytics only record that a run happened, with no content or counts.

## FAQ

### What is AsyncAPI?

A specification for writing event-driven APIs (message channels and send and receive operations) in YAML or JSON. HTTP APIs are written with OpenAPI.

### How is this different from the OpenAPI tool?

OpenAPI describes HTTP APIs (paths and methods). AsyncAPI describes message channels and send or receive operations. Choose the tool that matches your definition.

### What is the difference between AsyncAPI 2.x and 3.0 writing?

In 2.x, publish and subscribe sit under each channel. In 3.0, channels and operations (send and receive) are written separately. This tool reads both and flags a mix of the two.

### Are $ref values in external files resolved?

No. Files are not fetched, so they are shown as not resolved. Put the related definitions in components to check them here.

### Can it fully validate a document against the specification?

No. It is a light check for common mistakes. Use the official AsyncAPI tools for full validation.
