Author subtitles in IMSC 1.1 (a W3C-defined profile of TTML), which is the profile required by major OTT platforms including Netflix and Amazon — declare the profile with 'ttp:profile' in the TTML root element
Structure the XML with a 'tt' root element using the TTML namespace 'http://www.w3.org/ns/ttml', include 'head' with 'styling' and 'layout' sections, and place timed 'p' elements inside a 'div' in the 'body'
Use absolute SMPTE or media time expressions for 'begin' and 'end' attributes on each 'p' element (e.g., begin='00:01:12.500' end='00:01:15.000') — wall-clock expressions are not reliable in VOD delivery
Embed or reference styling: font-family, font-size (as a percentage of the safe area), color, and background-color should be defined in the 'styling' section and referenced via 'style' attributes on 'span' or 'p' elements
For DASH delivery, reference the TTML file as an 'AdaptationSet' with mimeType 'application/ttml+xml' and the appropriate 'lang' attribute in the MPD manifest; for HLS, WebVTT is preferred and TTML is less commonly used in HLS
Validate the output file against the IMSC validator (available as an open-source npm package 'imsc') and check rendering with a reference IMSC renderer before delivery to platforms
Known gotchas
Generic TTML is not the same as IMSC 1.1 — platforms may reject files that use TTML features outside the IMSC profile, such as animation or 3D transforms
Font size units differ between IMSC profiles — use percentage-based sizes relative to the root container to avoid hard-coded pixel values that break on different screen sizes
Some OTT platforms require IMSC subtitles packaged inside fragmented MP4 (fMP4) segments as CMAF subtitle tracks rather than as sidecar XML files — check the platform's delivery specification before authoring
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp