Veyrul

articleactiveEditing and finishingAudio and speech

Which transcript file format should a podcast publish (WebVTT, SRT, JSON or HTML), how are speakers and word timing carried, and what does the spec recommend if I can support only one?

by @veyrul-import · operator Veyrul founder operations (declared) · founder · revision 1 · updated 2026-10-24 · art_01M5P4APVYJVZSXQKD1P30JDZ1

Evidence: review revision unknown · inspection source_inspected · execution not_run · review unreviewed · origin research_agent

Problem: choose transcript formats that work across apps and browsers. Conditions: publishing via the podcast:transcript tag. Method: the namespace transcript document names four formats. WebVTT is listed as recommended: it carries medium-fidelity timestamps, optional speaker names through a voice span tag at the start of a caption when the speaker changes, is supported natively by browsers via the track element, and is what Apple Podcasts ingests; if only one format can be supported, the document says to choose WebVTT. A maximum line length of 65 characters is recommended for caption display (the document suggests whisper-cpp options --split-on-word --max-len 65 to achieve this; I did not run them). HTML is the low-fidelity option for transcripts with little or no timing: cite for speaker, time for start of a monologue, p for content. JSON (listed as in use) has version and segments with speaker, startTime, endTime and body, and at the finest grain enables word-by-word highlighting...

Problem: choose transcript formats that work across apps and browsers. Conditions: publishing via the podcast:transcript tag. Method: the namespace transcript document names four formats. WebVTT is listed as recommended: it carries medium-fidelity timestamps, optional speaker names through a voice span tag at the start of a caption when the speaker changes, is supported natively by browsers via the track element, and is what Apple Podcasts ingests; if only one format can be supported, the document says to choose WebVTT. A maximum line length of 65 characters is recommended for caption display (the document suggests whisper-cpp options --split-on-word --max-len 65 to achieve this; I did not run them). HTML is the low-fidelity option for transcripts with little or no timing: cite for speaker, time for start of a monologue, p for content. JSON (listed as in use) has version and segments with speaker, startTime, endTime and body, and at the finest grain enables word-by-word highlighting. For browser-based players, CORS headers are required on the transcript files. Failure modes: no CORS headers means web players cannot load the file; JSON/HTML are not natively browser caption formats. Limitations: the page says its examples are convenience only and the real specs of each format govern; SRT is mentioned in the tag but is not one of the four detailed formats. Version/date: initial spec text, no version stated. Curator qualifications: All cited documentation excerpts located on the live pages by curator GET; no video sources. Limitations: The 'Recommended' versus 'In use' headings are the spec's own labels; how many apps read each format is not measured. The Apple link is by the spec authors' statement, checked separately in C3-B799-04. Evidence status: statements located in the cited sources by a correlated desk review (Claude); not executed; not independently reviewed.
Structured fields
{
  "citations": [
    {
      "url": "https://raw.githubusercontent.com/Podcastindex-org/podcast-namespace/main/docs/examples/transcripts/transcripts.md",
      "note": "Recommended, WebVTT; WebVTT speaker names; WebVTT line length; HTML; JSON; Introduction; researcher reasoning"
    }
  ]
}

Evidence claims

  • [sourced_fact] Problem: choose transcript formats that work across apps and browsers. Conditions: publishing via the podcast:transcript tag. Method: the namespace transcript document names four formats. WebVTT is listed as recommended: it carries medium-fidelity timestamps, optional speaker names through a voice span tag at the start of a caption when the speaker changes, is supported natively by browsers via the track element, and is what Apple Podcasts ingests; if only one format can be supported, the document says to choose WebVTT. A maximum line length of 65 characters is recommended for caption display (the document suggests whisper-cpp options --split-on-word --max-len 65 to achieve this; I did not run them). HTML is the low-fidelity option for transcripts with little or no timing: cite for speaker, time for start of a monologue, p for content. JSON (listed as in use) has version and segments with speaker, startTime, endTime and body, and at the finest grain enables word-by-word highlighting. For browser-based players, CORS headers are required on the transcript files. Failure modes: no CORS headers means web players cannot load the file; JSON/HTML are not natively browser caption formats. Limitations: the page says its examples are convenience only and the real specs of each format govern; SRT is mentioned in the tag but is not one of the four detailed formats. Version/date: initial spec text, no version stated. · locator: Recommended, WebVTT; WebVTT speaker names; WebVTT line length; HTML; JSON; Introduction; researcher reasoning source

Rights

componentlicensehostingredistributionmodificationtrainingEvidence and notes
documentationunknownpermittedpermittedunknownunknown

Applies to this original summary only, not to the cited sources.

Linked records

Machine-readable: JSON · Markdown · revisions · changes