Hard subtitles vs soft subtitles: what's the difference?
Hard subtitles are burned into the picture and always show; soft subtitles are a separate track viewers can turn off. When to use each, and how.

Hard subtitles are burned into the video's pixels: they show on every player, can't be turned off, and can't be edited without rendering the video again. Soft subtitles are a separate text track, such as an SRT or WebVTT file, that the player draws over the picture, so viewers can switch them on or off and you can fix a line without touching the video.
Sume's captions API makes hard subtitles: each job returns a new captioned video. The Sume details below come from the Video captions and Video inspect docs and the Sume API reference, read on 2026-09-27; the definitions are general.
What is the difference between hard and soft subtitles?
Hard subtitles are also called burned-in, hardcoded, or open subtitles. Soft subtitles are also called subtitle tracks or switchable subtitles.
| Hard subtitles | Soft subtitles | |
|---|---|---|
| Where the text lives | In the pixels of every frame | In a separate file or track |
| Can viewers turn them off? | No | Yes, where the player supports subtitle tracks |
| Fixing a typo | Render the video again | Edit the text file |
| Several languages | One video per language or language pair | One video, one track per language |
| Look | Fixed when the text is burned | Mostly drawn by the player |
| With Sume | POST /v1/video-captions returns a captioned video_url | Speech-to-text returns timed sentences as JSON; you write the file |
Are closed captions the same as soft subtitles?
In the way they are delivered, yes: closed captions can be closed, that is, turned off, because they travel as a separate track. Open captions are burned in, like hard subtitles. The two words also differ in purpose: subtitles carry the dialogue, often translated, while captions are written for viewers who can't hear the audio and can include sounds as well as speech.
Which one should I use?
- Hard subtitles when the text must show wherever the file plays, when the caption style is part of the look, or when the place you post to takes no subtitle file.
- Soft subtitles when viewers should choose a language or turn the text off, when you expect to correct lines later, or when one video ships in several languages.
- Often both: keep the clean video and a subtitle file, and burn a copy only for the channel that needs it.
Can hard subtitles be removed?
Not as a track: there is nothing to delete, because the words replaced the pixels under them. The practical fix is to keep the clean original and burn again.
A Sume caption job returns a new captioned video_url, separate from the source video you sent, so keep that source. To change only the look, send source_caption_id with a new style: Sume reuses that caption's source video and the word timings it already has, so no second speech-to-text runs. A restyle is still billed as a render.
How do I make soft subtitles with Sume?
Write the file from Sume's speech-to-text timings. A clip that is already a media.sume.com file in your workspace, such as an earlier Sume output, can be transcribed with POST /v1/video-inspect and transcribe: true; audio at a public HTTPS URL goes to STT 1.0, POST /v1/stt-1.0/transcribe. Add segmentation: { "mode": "sentence" } to either, and write each returned segment's text, start, and end as one SRT or WebVTT block. How to generate an SRT file from a video shows the loop.
A clip with no audio track fails inspect with inspect_source_has_no_audio. If you already have a subtitle file and want a burned copy too, send its lines as cues, as in burn an SRT file into a video: Sume's captions API does not take the .srt file itself.
Sources
Related posts
More in Media tools
- How to check a video's bitrate from its size and length
Check a video's average bitrate: size in bytes × 8 ÷ length in seconds. Sume's free probe returns both numbers, size_bytes and duration_seconds.
- How to increase video length by looping a short clip
Loop a short clip until it matches a song or voiceover: put it in one Timeline 1.0 slot as long as the audio and set render.pad_mode to loop.
- Instagram story ad size: 9:16 specs, plus Facebook Stories
Meta recommends 9:16 at 1440×2560 for Instagram and Facebook Stories ads. Lengths that play in full, safe zones, and how to make one with Sume.
- Instagram Reels video requirements for API uploads
Instagram's API cURLs a Reel from a public video_url: MP4 or MOV, H.264 or HEVC, 23–60 fps, 3 s to 15 min, 300 MB. How a Sume MP4 maps to each rule.
Written by Sume