CaptionPass
AlphaYou're using an early release of CaptionPass. Features and limits may change; report bugs or ideas using the contact email in the footer or on Pricing.

CaptionPass JSON IR and the developer-json preset

Sometimes you are not shipping to a social platform — you are building tooling, tests, or a pipeline that needs a structured timeline you can diff, merge, and re-emit. CaptionPass defines a small JSON interchange (IR) for that workflow. The developer-json preset keeps rules loose so automation is not fighting readability limits meant for YouTube or TikTok.

Format tag and version

Parsed JSON IR carries format: "captionpass-json" and a version integer (today 1). If the version does not match what the parser expects, you may see a diagnostic warning while cues still load — treat that as a signal to migrate before a future engine update tightens validation.

When JSON IR is the right choice

  • You control both producer and consumer and want stable fields (cues[] with start/end in milliseconds).
  • You round-trip through multiple transforms and want fewer ambiguous text encodings than SRT blocks.
  • You feed QA or analytics that read JSON more easily than subtitle text.

For human delivery to hosts, you still usually ship SRT or WebVTT. JSON IR is a developer surface — not a universal upload format.

HTTP API pairing

The versioned API documented at /docs/api accepts the same caption formats as the web converter. Set preset=developer-json to receive JSON IR in the output string alongside the structured report (diagnostics, fixes, QA score).

Try JSON IR on the home page by uploading a supported file and choosing the developer preset where the UI exposes it.