
Embed Subtitles
- 62 installs
- 44 repo stars
- Updated July 8, 2026
- aviz85/claude-skills-library
Embed Subtitles is a Claude skill that burns SRT subtitles onto video files using FFmpeg, with automatic right-to-left language detection.
About
Embed Subtitles burns SRT subtitle files onto video using FFmpeg. A developer runs its TypeScript script to hardcode captions into an MP4 with control over font size, position, color, and credits. It automatically detects right-to-left languages like Hebrew and Arabic and applies Unicode directional marks so the text renders correctly.
- Burns SRT subtitles into video files using FFmpeg with configurable styling
- Auto-detects Hebrew/Arabic/Farsi RTL text and wraps lines with directional marks before rendering
- Options for font, position, color, outline, shadow, and end-credit overlays
Embed Subtitles by the numbers
- 62 all-time installs (skills.sh)
- Ranked #863 of 1,337 Generative Media skills by installs in the Skillselion catalog
- Data as of Jul 28, 2026 (Skillselion catalog sync)
embed-subtitles capabilities & compatibility
free (local FFmpeg)
- Capabilities
- video processing · subtitle burning · srt embedding
- Use cases
- video generation · transcription · translation
- Pricing
- Free
What embed-subtitles says it does
Burn SRT subtitles into video files using FFmpeg.
Before embedding ANY SRT file, Claude MUST check if the content is RTL.
FFmpeg (must be installed and in PATH)
npx skills add https://github.com/aviz85/claude-skills-library --skill embed-subtitlesAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 62 |
|---|---|
| repo stars | ★ 44 |
| Last updated | July 8, 2026 |
| Repository | aviz85/claude-skills-library ↗ |
What it does
Hardcoding SRT subtitles into a video with FFmpeg, including automatic RTL handling for Hebrew and Arabic captions.
Who is it for?
Burning SRT captions into a video, especially Hebrew or Arabic subtitles needing RTL correction.
Skip if: Generating the transcript itself (use the transcribe skill first) or soft/toggleable subtitle tracks.
When should I use this skill?
When the user wants to hardcode subtitles, embed captions, or burn an SRT into a video.
What you get
A video file with subtitles burned in, correctly styled and RTL-corrected.
- output video with burned-in subtitles
By the numbers
- exposes 14 command-line options
- handles 3 RTL script ranges (Hebrew, Arabic, Farsi)
Files
Embed Subtitles
Burn SRT subtitles into video files using FFmpeg.
Prerequisites
No SRT file? Use the transcribe skill first to generate subtitles from audio/video.
Need translation? After transcribing, read the SRT, translate each entry preserving timestamps, write new SRT file. No API needed.
Quick Start
cd ~/.claude/skills/embed-subtitles/scripts
# Burn SRT into video
npx ts-node embed-subtitles.ts -i video.mp4 -s subtitles.srt -o output.mp4
# Custom styling
npx ts-node embed-subtitles.ts -i video.mp4 -s subtitles.srt -o output.mp4 \
--font-size 24 --position bottom --margin 40
# Add credit text overlay at end
npx ts-node embed-subtitles.ts -i video.mp4 -s subtitles.srt -o output.mp4 \
--credit "Your Name" --credit-position topOptions
| Option | Short | Default | Description |
|---|---|---|---|
--input | -i | (required) | Input video file |
--subtitles | -s | (required) | SRT subtitle file |
--output | -o | (required) | Output video file |
--font-size | 20 | Font size in pixels | |
--font-name | Arial | Font family name | |
--position | bottom | Subtitle position: top, center, bottom | |
--margin | 25 | Margin from edge in pixels | |
--color | white | Text color | |
--outline | 2 | Outline thickness | |
--shadow | 1 | Shadow depth | |
--credit | Credit text to show at end | ||
--credit-position | top | Credit position: top, bottom | |
--credit-duration | 2.5 | Credit display duration in seconds | |
--extract-frame | Extract frame at specified second for verification |
Position Values
top- Near top of video (good for credits, avoids bottom burned-in text)center- Middle of videobottom- Near bottom of video (traditional subtitle position)
Dependencies
- FFmpeg (must be installed and in PATH)
RTL Auto-Detection & Fix (CRITICAL)
Before embedding ANY SRT file, Claude MUST check if the content is RTL.
Detection
Read the SRT file and check if the majority of text lines contain Hebrew/Arabic/Farsi characters:
- Hebrew range:
\u0590-\u05FF - Arabic range:
\u0600-\u06FF - Farsi additional:
\u0750-\u077F
If RTL content is detected, apply the fix BEFORE passing to FFmpeg.
RTL Fix
Wrap each text line (not index numbers, not timestamps) with Unicode directional marks:
python3 -c "
import re
with open('SRT_FILE_PATH', 'r', encoding='utf-8') as f:
content = f.read()
lines = content.split('\n')
result = []
for line in lines:
stripped = line.strip()
if stripped and not re.match(r'^\d+$', stripped) and not re.match(r'\d{2}:\d{2}:\d{2}', stripped):
line = '\u202B' + line + '\u202C'
result.append(line)
with open('SRT_FILE_PATH', 'w', encoding='utf-8') as f:
f.write('\n'.join(result))
"- U+202B (RLE - Right-to-Left Embedding): forces RTL paragraph direction
- U+202C (PDF - Pop Directional Formatting): closes the embedding
This fixes: English words at line start, periods/commas on wrong side, mixed bidi text.
When to apply
Claude should analyze the SRT content intelligently:
- If most text is Hebrew/Arabic/Farsi → apply RTL fix
- If mixed but predominantly RTL → apply RTL fix
- If LTR (English, Spanish, etc.) → skip
- No flag needed from the user - detect automatically
Notes
- For Arabic credits, use English text due to FFmpeg drawtext RTL limitations
- Use
--extract-frameto verify subtitle positioning before final render