Key takeaways
- SRT is the simplest and most compatible text subtitle format: timings and plain text, with almost no styling.
- ASS/SSA supports positioning, fonts, colours and effects, which is why it is used for typesetting-heavy releases and why support varies.
- WebVTT is the W3C format used on the web, with cue settings and styling defined by a published specification.
- Image-based subtitles store pictures of text rather than text, so they cannot be restyled, resized or searched.
- Most 'strange character' problems are text encoding mismatches, not corrupt files.
Subtitles come in two fundamentally different kinds: text and images. Everything else — which format, which features, why it does or does not display — follows from that split.
Text-based formats
The text is stored as text, so it can be restyled, resized, searched and translated.
SRT (SubRip)
The simplest and most widely supported. A numbered sequence of entries, each with a start time, an end time and a line of text. Almost no styling.
Use it when compatibility matters more than presentation. If you are unsure what will play a file, SRT is the safest choice.
Its limitation is the same as its strength: you cannot position a caption, change a colour or use a specific font, because the format has no way to express any of that.
ASS / SSA (Advanced SubStation Alpha)
Supports positioning, fonts, colours, borders, shadows, and animation effects. This is the format used where typesetting matters — signs translated in place, styled dialogue, karaoke.
Its cost is support variability. A player that renders ASS partially will show the text with the styling ignored or, occasionally, wrong. The Matroska subtitle documentation covers how these tracks are carried inside a container.
WebVTT
The web's format, defined by the W3C WebVTT specification. Cue timings, positioning settings, and styling via CSS. It is what HTML video elements consume, so it is the format you meet when captioning web video.
Image-based formats
Some subtitle tracks — particularly those from optical discs — store rendered pictures of text rather than text.
The consequences are significant:
- Cannot be restyled or resized. The image is fixed.
- Cannot be searched. There is no text.
- Cannot be easily edited or translated without optical character recognition.
- Scale poorly to displays different from the one they were authored for.
They exist because they guarantee the intended appearance — the subtitle looks exactly as the author rendered it, with no dependency on available fonts.
Soft, hard and forced
Three terms that get confused:
| Term | What it means | Can you turn it off? |
|---|---|---|
| Soft | A separate selectable track | Yes |
| Hard (burned-in) | Part of the video image | No |
| Forced | A track shown automatically for foreign dialogue or signs | Usually selectable |
Hard subtitles cannot be removed. They were composited into the picture during encoding, so the only way to get a version without them is a different source file.
Forced subtitles are the ones that appear for a few lines of foreign-language dialogue in an otherwise same-language film. They are normally a separate track flagged as forced.
Embedded versus external
Embedded subtitles are inside the video container, as an additional track alongside video and audio. This is what MKV in particular is good at — carrying multiple subtitle tracks in different languages and formats.
External subtitles are a separate file, usually with a matching filename, that a player loads alongside the video.
Both work. External files are easier to edit and easier to lose; embedded tracks travel with the video and require a remux to change. Remuxing versus transcoding covers adding or removing tracks without re-encoding — a fast, lossless operation for subtitles.
Why subtitles fail to display
In rough order of frequency:
1. Encoding mismatch. The most common by far. A subtitle file saved in one text encoding and interpreted as another produces garbled accented or non-Latin characters. Saving as UTF-8 fixes most cases.
2. Filename mismatch. External subtitles are matched by filename. A difference in the name means the player does not find the file.
3. Format not supported by the player. Particularly ASS with heavy styling, or image-based tracks that a player cannot render.
4. Track not selected. An embedded track exists and is not enabled.
5. Timing offset. The subtitles display and are out of sync — usually because they were made for a different release of the video.
Player support varies more than you expect
Subtitle handling is one of the areas where video players differ most, and it is a legitimate factor in choosing one. Android's supported media formats documentation covers what the platform provides; individual players build on that to varying degrees.
If subtitle handling is your main requirement, it is worth testing with your actual files rather than relying on a feature list — the difference between "supports ASS" and "renders ASS the way it was authored" is not visible in a bullet point.
Where our app fits
Regal Video Player is a local-file player built for H.264, H.265, VP8, VP9 and AV1 video with AAC, MP3, FLAC and Ogg audio, inside MP4, MKV, MOV, M4V, WebM, 3GP, FLV, TS and M2TS containers.
On subtitles specifically, we are going to be direct: if extensive subtitle handling — multiple embedded tracks, complex ASS typesetting, image-based tracks from discs — is the thing you need most, check whether a player's actual behaviour with your files matches your requirement before committing to it. That is true of ours and of every other player, and a feature list is not a substitute for the test.
The free version covers local playback and is supported by ads; an optional Premium purchase removes ads and unlocks extra themes.
Video file formats explained covers the containers these tracks live in, and the Android video player guide covers diagnosing playback problems generally. Everything we make here is under video and utility apps.
Good to know
Frequently asked questions
What is the difference between SRT and ASS?
What is WebVTT?
Why do my subtitles show strange characters?
What are image-based subtitles?
What is the difference between soft and hard subtitles?
Sources
- WebVTT: The Web Video Text Tracks Format (opens in a new tab)World Wide Web Consortium (W3C) — accessed
- Subtitles — Matroska technical specification (opens in a new tab)Matroska — accessed
- Supported media formats (opens in a new tab)Android Developers, Google — accessed