Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
165 commits
Select commit Hold shift + click to select a range
ef8df96
Video: Sync subtitle to audio (ffsubsync-style offset and frame rate …
niksedk Oct 17, 2026
855bb4b
nOCR: tell period from dash (and comma from apostrophe) by the baseline
niksedk Oct 17, 2026
7e384d8
Merge pull request #16145 from SubtitleEdit/claude/se-feature-gaps-79…
niksedk Oct 17, 2026
2cb8e76
One field look for text boxes, combo boxes and lists
niksedk Oct 17, 2026
883625c
Merge pull request #16146 from SubtitleEdit/claude/nocr-dot-dash-base…
niksedk Oct 17, 2026
eafe691
Cyrillic.nocr: read heavy rounded "Б" as "Б", not "В"
niksedk Oct 17, 2026
08b0dbb
Cyrillic.nocr: read heavy italic "0" as "0", not "В"/"а"
niksedk Oct 17, 2026
13c4b4c
Merge pull request #16147 from SubtitleEdit/claude/field-look-everywhere
niksedk Oct 17, 2026
6335c51
Merge pull request #16148 from SubtitleEdit/claude/nocr-cyrillic-be-ve
niksedk Oct 17, 2026
9b48965
Merge pull request #16149 from SubtitleEdit/claude/nocr-cyrillic-ital…
niksedk Oct 17, 2026
0d49cb4
nOCR: heavy italic ы/ь, ",.." and touching pairs in the Russian PGS s…
niksedk Oct 17, 2026
fbae8f8
Merge pull request #16151 from SubtitleEdit/claude/nocr-pgs-yery-elli…
niksedk Oct 17, 2026
1ad8575
Image color picker in color dialog: review fixes
niksedk Oct 17, 2026
bd7278f
Merge pull request #16150 from pdjdev/feat/image-color-pick
niksedk Oct 17, 2026
7045ff0
seconv: don't split a file name with commas into patterns
niksedk Oct 17, 2026
f7699f5
nOCR (Latin): p/P by baseline, accent parts above the letter, i-famil…
niksedk Oct 17, 2026
8739ef3
Merge pull request #16152 from SubtitleEdit/claude/seconv-comma-file-…
niksedk Oct 17, 2026
fb4440e
seconv/Batch convert: no VobSub colour isolation for nOCR and BinaryOCR
niksedk Oct 17, 2026
ebde210
Merge pull request #16153 from SubtitleEdit/claude/nocr-latin-geometry
niksedk Oct 17, 2026
9b274d6
Merge pull request #16155 from SubtitleEdit/claude/vobsub-isolation-nocr
niksedk Oct 17, 2026
f0a2d83
OCR: settle 0/O from the neighbours ("5O" -> "50", "g0t" -> "got")
niksedk Oct 17, 2026
f11fc26
Merge pull request #16156 from SubtitleEdit/claude/nocr-digit-letter
niksedk Oct 17, 2026
70223d1
nOCR: read a glyph that matches nothing as two touching letters
niksedk Oct 17, 2026
dd7626e
Merge pull request #16157 from SubtitleEdit/claude/nocr-split-touching
niksedk Oct 17, 2026
60b4b63
nOCR train: keep only small-glyph lines that also fit bigger renderings
niksedk Oct 17, 2026
4056119
nOCR: case of accented letters from the height above the baseline
niksedk Oct 17, 2026
e093802
Merge pull request #16158 from SubtitleEdit/claude/nocr-small-glyph-c…
niksedk Oct 17, 2026
b9f85f4
Merge pull request #16159 from SubtitleEdit/claude/nocr-accent-case
niksedk Oct 17, 2026
9f0094f
nOCR: try a small unmatched mark as comma/apostrophe regardless of po…
niksedk Oct 17, 2026
3ae8a38
nOCR: drop a nullable warning in the private GetMatch
niksedk Oct 17, 2026
cc50a2c
nOCR: one bitmap local in the private GetMatch (no nullable warnings)
niksedk Oct 17, 2026
92f2375
Latin.nocr: "fi"/"fl" ligatures
niksedk Oct 17, 2026
f61e742
Merge pull request #16160 from SubtitleEdit/claude/nocr-unmatched-marks
niksedk Oct 17, 2026
eabef65
Merge pull request #16161 from SubtitleEdit/claude/latin-nocr-ligatures
niksedk Oct 17, 2026
bbdb10c
seconv: --burn-in-video burns the ass output into a video with ffmpeg
zbcoding Oct 18, 2026
beaf15b
seconv: --burn-in-effects (fade, font-kerning, font-size-change)
zbcoding Oct 18, 2026
35dda19
seconv: all burn-in effects (scroll, rotate, tilt/size bounce, fix RTL)
zbcoding Oct 18, 2026
feb1d2c
nOCR: word spaces - count part of the room between overhanging letters
niksedk Oct 18, 2026
13cc747
Merge pull request #16165 from SubtitleEdit/claude/nocr-space-body-gap
niksedk Oct 18, 2026
3a90d2c
seconv burn-in: review fixes
niksedk Oct 18, 2026
679a94b
Merge pull request #16162 from zbcoding/seconv-burn-in-video
niksedk Oct 18, 2026
787dd1b
OCR: show progress text below the progress bar, left aligned
niksedk Oct 18, 2026
30bb195
Merge pull request #16166 from SubtitleEdit/claude/ocr-progress-text-…
niksedk Oct 18, 2026
e1a744c
Remux video: CEA-608/708 as SEI captions in .mp4 (#16164)
niksedk Oct 18, 2026
0761fa5
Latin.nocr: italic "i" read as "í", and a rounded bold DVD font
niksedk Oct 18, 2026
7d3582a
Fix TimedTextMxfWriterTest on Windows CRLF checkouts
niksedk Oct 18, 2026
ca9f814
Merge pull request #16168 from SubtitleEdit/claude/latin-nocr-learned…
niksedk Oct 18, 2026
93eea60
Merge pull request #16169 from SubtitleEdit/claude/mxf-test-crlf
niksedk Oct 18, 2026
7e355b4
Merge pull request #16167 from SubtitleEdit/claude/mp4-sei-cea608-16164
niksedk Oct 18, 2026
d96b8be
nOCR: no crumb lines, "%" from "o/o", "D00" -> "Doo", English "gasPs"…
niksedk Oct 18, 2026
36a95f1
Merge pull request #16170 from SubtitleEdit/claude/nocr-baseline-mode…
niksedk Oct 18, 2026
6265583
Latin nOCR: learn italic l, dotless-i lookalikes, k and italic Tw
niksedk Oct 18, 2026
420e84e
Merge pull request #16171 from SubtitleEdit/claude/nocr-latin-learned…
niksedk Oct 18, 2026
43d941f
Select line at play-head while paused without requiring "center" (#16…
niksedk Oct 18, 2026
05b26e2
Merge pull request #16172 from SubtitleEdit/claude/paused-select-with…
niksedk Oct 18, 2026
148e58c
Minor UI fixes in eight dialogs
niksedk Oct 18, 2026
8018997
Merge pull request #16173 from SubtitleEdit/claude/minor-ui-fixes
niksedk Oct 18, 2026
6a9237a
Minor UI fixes in five more dialogs
niksedk Oct 18, 2026
2a2503f
Merge pull request #16174 from SubtitleEdit/claude/minor-ui-fixes-2
niksedk Oct 18, 2026
f007532
Minor UI fixes in six more dialogs
niksedk Oct 18, 2026
56f0197
Merge pull request #16175 from SubtitleEdit/claude/minor-ui-fixes-3
niksedk Oct 18, 2026
83f3d2c
Minor UI fixes: combo ellipsis, dictionary path, EBU and batch labels
niksedk Oct 18, 2026
9ad7f00
Merge pull request #16176 from SubtitleEdit/claude/minor-ui-fixes-4
niksedk Oct 18, 2026
283e642
Prepare v5.4.0-beta1 release
niksedk Oct 18, 2026
94f1635
Merge pull request #16177 from SubtitleEdit/claude/v5-4-0-beta-1-rele…
niksedk Oct 18, 2026
2a8566c
nOCR: baseline ignores floating marks; learn Avatar period, w?, [w, t,
niksedk Oct 18, 2026
ea48300
Make the baseline test independent of the default font
niksedk Oct 18, 2026
f58a690
Merge pull request #16178 from SubtitleEdit/claude/nocr-baseline-lett…
niksedk Oct 18, 2026
555ecac
Minor UI fixes in three more dialogs
niksedk Oct 18, 2026
8e47ce3
Merge pull request #16179 from SubtitleEdit/claude/minor-ui-fixes-5
niksedk Oct 18, 2026
5ada719
Minor UI fixes in five more dialogs
niksedk Oct 18, 2026
7190e49
Merge pull request #16180 from SubtitleEdit/claude/minor-ui-fixes-6
niksedk Oct 18, 2026
13d542d
Message box and transcription progress in the editor look
niksedk Oct 18, 2026
063a5f8
Merge pull request #16181 from SubtitleEdit/claude/minor-ui-fixes-7
niksedk Oct 18, 2026
49c593b
Export plain text: label merge option "Merge all lines" like SE4
niksedk Oct 18, 2026
8cf7dd0
Merge pull request #16182 from SubtitleEdit/claude/plain-text-merge-a…
niksedk Oct 18, 2026
81c11da
Waveform: ignore sub-slop pointer movement when clicking a cue (#15989)
ChristosBouronikos Oct 18, 2026
4a0fbc9
nOCR: quotes count as marks for the baseline; learn more named glyphs
niksedk Oct 18, 2026
892bc4a
Merge pull request #16185 from SubtitleEdit/claude/nocr-dash-quote-lines
niksedk Oct 18, 2026
98aa73f
Prevent sleep during the remaining long video jobs
niksedk Oct 18, 2026
82fbf71
Waveform: one click-or-drag decision on release, keep seek for a no-o…
niksedk Oct 18, 2026
734eb54
Merge pull request #16184 from ChristosBouronikos/fix/15989-waveform-…
niksedk Oct 18, 2026
e63d1ec
OCR: learn short-tailed Q; fix italic l read as / in the fix engine
niksedk Oct 18, 2026
d46ee30
Merge pull request #16186 from SubtitleEdit/claude/subtitleedit-issue…
niksedk Oct 18, 2026
a474657
Batch convert: resizable splitter between file list and functions
ivandrofly Oct 18, 2026
01b324d
Merge pull request #16188 from SubtitleEdit/claude/nocr-q-and-slash-l
niksedk Oct 18, 2026
2835cf4
nOCR: show the selected 'pixels is space' value in the closed combo
niksedk Oct 18, 2026
2207638
Merge pull request #16189 from ivandrofly/batch-convert-splitter
niksedk Oct 18, 2026
adc4f72
Merge pull request #16190 from SubtitleEdit/claude/nocr-pixels-space-…
niksedk Oct 18, 2026
e4a732f
Batch convert: search the functions, shorter function rows, presets b…
niksedk Oct 18, 2026
4066caa
Tests: batch convert has two search boxes now
niksedk Oct 18, 2026
c98b821
Drop unrelated English.json regeneration
niksedk Oct 18, 2026
f30c1af
Ignore custom tags in character counts via a user regex (#16163)
niksedk Oct 18, 2026
cecbbb9
Merge pull request #16192 from SubtitleEdit/claude/custom-calculator-…
niksedk Oct 18, 2026
5298d98
Merge pull request #16191 from SubtitleEdit/claude/batch-convert-func…
niksedk Oct 18, 2026
6890600
Text box: record speech to text box button (off by default)
niksedk Oct 18, 2026
55d36b6
Fix DashScope OSS multipart uploads for Qwen3-ASR
Gh-Shinku Oct 18, 2026
c0e5ab1
Merge pull request #16193 from SubtitleEdit/claude/speech-to-text-but…
niksedk Oct 18, 2026
cdf1c2f
Merge pull request #16194 from Gh-Shinku/fix/dashscope-oss-multipart-…
niksedk Oct 18, 2026
c3862b6
OCR fix engine: do not read the slash of a closing tag as an italic l
niksedk Oct 18, 2026
ffd4517
OCR fix engine: join the three spaced dots of a wide-set ellipsis
niksedk Oct 18, 2026
21d957a
OCR fix engine: sans-serif capital I read as l ("lk", "ls", "ln")
niksedk Oct 18, 2026
8dfc42a
nOCR: drop false word spaces inside numbers, shared by GUI, batch and…
niksedk Oct 18, 2026
722efa4
nOCR: count the body gap of an overhanging pair as half a space
niksedk Oct 18, 2026
88bbb12
nOCR: cap the italic space retry's threshold by the glyph height
niksedk Oct 18, 2026
530966a
nOCR: a scaled expanded match must touch every piece it claims
niksedk Oct 18, 2026
0ecadc7
Merge pull request #16196 from SubtitleEdit/claude/ocr-fix-closing-ta…
niksedk Oct 18, 2026
e1a0ead
Merge pull request #16197 from SubtitleEdit/claude/ocr-fix-spaced-ell…
niksedk Oct 18, 2026
d6c445d
Merge pull request #16198 from SubtitleEdit/claude/ocr-fix-dutch-capi…
niksedk Oct 18, 2026
030bfbc
Merge pull request #16199 from SubtitleEdit/claude/nocr-number-spaces
niksedk Oct 18, 2026
81455a2
Merge pull request #16200 from SubtitleEdit/claude/nocr-overhang-spaces
niksedk Oct 18, 2026
25f6232
Merge pull request #16201 from SubtitleEdit/claude/nocr-italic-space-…
niksedk Oct 18, 2026
501d3b6
Merge pull request #16202 from SubtitleEdit/claude/nocr-expanded-piec…
niksedk Oct 18, 2026
c382fdf
nOCR: drop the crumb the letter splitter cuts off a glyph's foot
niksedk Oct 18, 2026
77a2b57
Merge pull request #16203 from SubtitleEdit/claude/nocr-crumb-parts
niksedk Oct 18, 2026
3fae7aa
nOCR: split touching italic letters on the straightened glyph
niksedk Oct 18, 2026
2c86aa5
Merge pull request #16204 from SubtitleEdit/claude/nocr-italic-touchi…
niksedk Oct 18, 2026
f60a6e6
nOCR: match baseline marks by baseline, not by trained top margin
niksedk Oct 18, 2026
ab95b3f
OCR fix engine: a slash is a slanted "i" or "I" too, not only "l"
niksedk Oct 18, 2026
03782ed
nOCR: challenge a loose upright match with the straightened glyph
niksedk Oct 18, 2026
ab7d8bc
Check for updates: settings gear for startup check and release channel
ivandrofly Oct 18, 2026
53c419d
Japanese for Subtitle Edit 5.4.0 Beta1
hisui3393 Oct 18, 2026
ba7324b
Update Korean.json
12si27 Oct 19, 2026
55e2f9c
Merge branch 'main' into resolve-japanese-beta2-conflicts
hisui3393 Oct 19, 2026
19d0698
Merge pull request #16206 from SubtitleEdit/claude/nocr-italic-challe…
niksedk Oct 19, 2026
46f36dd
Merge pull request #16207 from SubtitleEdit/claude/nocr-slash-capital-i
niksedk Oct 19, 2026
f4709af
OCR fix engine: a "#" between two letters is an apostrophe
niksedk Oct 18, 2026
cf9b808
Merge pull request #16208 from SubtitleEdit/claude/ocr-hash-apostrophe
niksedk Oct 19, 2026
1d7f153
Merge pull request #16218 from 12si27/patch-5
niksedk Oct 19, 2026
cd46450
Merge pull request #16217 from hisui3393/resolve-japanese-beta2-confl…
niksedk Oct 19, 2026
92ae3b9
Merge pull request #16205 from SubtitleEdit/claude/nocr-period-top-gate
niksedk Oct 19, 2026
d59236d
Live spell check: leave the original text column alone in translation…
niksedk Oct 19, 2026
aca468b
Keep "select current subtitle while playing" after a settings import
niksedk Oct 19, 2026
790e63f
Merge pull request #16222 from SubtitleEdit/claude/live-spell-check-b…
niksedk Oct 19, 2026
6c52629
Check for updates: re-check only on channel change, last check wins
niksedk Oct 19, 2026
8d16033
Keep imported layout sizes and waveform zoom after a settings import
niksedk Oct 19, 2026
9726a87
Merge pull request #16223 from SubtitleEdit/claude/import-correct-set…
niksedk Oct 19, 2026
93f1f99
Ask before saving over a subtitle file changed outside Subtitle Edit
niksedk Oct 19, 2026
0cef626
Batch convert: skip "Fix right-to-left" on subtitles without RTL text
niksedk Oct 19, 2026
6deb6b8
Multiple replace: "Add rules" window for entering a list of rules
niksedk Oct 19, 2026
30af75d
Setting for what to do when the subtitle file is changed by another p…
niksedk Oct 19, 2026
1ef2439
MCC/SMPTE 291M: parse CDP packets with an optional time code section
niksedk Oct 19, 2026
451fe68
Merge pull request #16227 from SubtitleEdit/claude/multiple-replace-s…
niksedk Oct 19, 2026
85e0e3f
Auto-wrap while typing: leave pre-existing long lines alone (#16219)
niksedk Oct 19, 2026
7795b75
Check for updates: focus OK on first activation only
niksedk Oct 19, 2026
a1dc501
Remux video: caption time offset for broadcast .scc/.mcc files
niksedk Oct 19, 2026
4bf3cea
Merge pull request #16225 from SubtitleEdit/claude/save-guard-file-ch…
niksedk Oct 19, 2026
4b12d34
Merge pull request #16228 from SubtitleEdit/claude/file-changed-outsi…
niksedk Oct 19, 2026
1aad780
Merge pull request #16229 from SubtitleEdit/claude/keen-mclean-0d01d3
niksedk Oct 19, 2026
6cfd441
Merge pull request #16224 from SubtitleEdit/claude/import-layout-zoom…
niksedk Oct 19, 2026
7c87ebb
Merge pull request #16209 from ivandrofly/feature/check-for-updates-s…
niksedk Oct 19, 2026
1e8e8a5
Merge pull request #16226 from SubtitleEdit/claude/rtl-punctuation-er…
niksedk Oct 19, 2026
8be63f7
Merge pull request #16230 from SubtitleEdit/claude/auto-break-newline…
niksedk Oct 19, 2026
48e5130
Merge pull request #16231 from SubtitleEdit/claude/remux-caption-offset
niksedk Oct 19, 2026
24b6f79
Editor chrome palette follows theme settings and system accent (#16233)
niksedk Oct 19, 2026
8e79756
Merge pull request #16234 from SubtitleEdit/claude/subtitleedit-theme…
niksedk Oct 19, 2026
88fc8a9
Speech to text: custom GGUF models for Qwen3 ASR CPP (#16232)
niksedk Oct 19, 2026
2860927
Merge pull request #16235 from SubtitleEdit/claude/subtitleedit-issue…
niksedk Oct 19, 2026
5af33a1
Bump audio.cpp runtime to v0.9.2-drama3-base-small (2026-10-19)
niksedk Oct 19, 2026
157d691
Waveform toolbar: compact rule-profile picker (#16236)
niksedk Oct 19, 2026
6d69d72
Merge pull request #16237 from SubtitleEdit/claude/audio-cpp-update-a…
niksedk Oct 19, 2026
efd2f49
Merge pull request #16238 from SubtitleEdit/claude/waveform-toolbar-p…
niksedk Oct 19, 2026
6e27e05
Prepare v5.4.0-beta2 release
niksedk Oct 19, 2026
13ee827
Merge pull request #16239 from SubtitleEdit/claude/new-beta-release-4…
niksedk Oct 19, 2026
fd02ff1
Fix compact numeric field borders in EditorChrome
pdjdev Oct 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions Dictionaries/eng_OCRFixReplaceList.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<OCRFixReplaceList>
<WholeWords>
<Word from="gasPs" to="gasps" />
<Word from="gasPing" to="gasping" />
<Word from="yelPs" to="yelps" />
<Word from="yelPing" to="yelping" />
<Word from="tñere" to="there" />
<Word from="ri9ht" to="right" />
<Word from="$COff$" to="scoffs" />
Expand Down Expand Up @@ -3394,6 +3398,8 @@
<RegEx find="(2 )(nd\b)" replaceWith="2$2" />
<RegEx find="(3 )(rd\b)" replaceWith="3$2" />
<RegEx find="([456789])( th\b)" replaceWith="$1th" />
<!-- nOCR: "p" and "P" are the same shape; a capital P between lowercase letters before an ending is a "p" ("gasPs", "sleePing") -->
<RegEx find="(?&lt;=\p{Ll})P(?=(?:s|ing|ed)\b)" replaceWith="p" />
</RegularExpressions>
<RegularExpressionsIfSpelledCorrectly>
<RegEx find="\[([A-Zl]+)\]" replaceAllFrom="l" replaceAllTo="I" spellCheck="$1" replaceWith="[$1]" />
Expand Down
9 changes: 6 additions & 3 deletions Dictionaries/nld_OCRFixReplaceList.xml
Original file line number Diff line number Diff line change
Expand Up @@ -165,9 +165,9 @@
<!-- SlNG to SING -->
</RegularExpressionsIfSpelledCorrectly>
<RegularExpressions>
<RegEx find="\blk(?=\p{Ll}{2})" replaceWith="Ik" />
<RegEx find="\bln(?=\p{Ll}{2})" replaceWith="In" />
<RegEx find="\bls(?=\p{Ll}{2})" replaceWith="Is" />
<RegEx find="\blk\b(?!['’])" replaceWith="Ik" />
<RegEx find="\bln\b(?!['’])" replaceWith="In" />
<RegEx find="\bls\b(?!['’])" replaceWith="Is" />
<RegEx find="\beIk" replaceWith="elk" />
<RegEx find="\bler(land|se|s|)\b" replaceWith="Ier$1" />
<RegEx find="\biij" replaceWith="lij" />
Expand Down Expand Up @@ -225,6 +225,9 @@
<!-- trailing I→l in capitalised word (e.g. AmsterdamI → Amsterdaml) -->
<RegEx find="\b([A-Z][a-zéèëïóöüij]+)I\b" spellCheck="$1l" replaceWith="$1l" />

<!-- aI → al, oI → ol : a two-letter word is lowercase + I only when the I is an italic l -->
<RegEx find="\b([a-zéèëïóöü])I\b" spellCheck="$1l" replaceWith="$1l" />

<!-- I→l mid capitalised word (e.g. AmstIerdam → Amstlerdam) -->
<RegEx find="\b([A-Z][a-zéèëïóöüij]+)I([a-zéèëïóöüij]+)\b" spellCheck="$1l$2" replaceWith="$1l$2" />

Expand Down
Binary file modified Ocr/Cyrillic.nocr
Binary file not shown.
Binary file modified Ocr/Latin.nocr
Binary file not shown.
92 changes: 92 additions & 0 deletions change-log.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,98 @@ Subtitle Edit Changelog

-----------------------------------------------------------------------------------------------------

v5.4.0-beta2 (19th of October 2026)

* Add Multiple replace: "Add rules" window for typing a list of find/replace pairs, toolbar "New rule" button, F2 and Cmd shortcuts - thx kadrimarzouki
* Add setting for what to do when the subtitle file is changed by another program: reload if nothing is unsaved, always ask, or do nothing - thx kadrimarzouki
* Add ask before saving over a subtitle file changed outside Subtitle Edit - thx kadrimarzouki
* Add waveform toolbar item "Rule profile" (hidden by default, enable in Configure toolbar items) - thx torvchen
* Add "Ignore custom tags (regex)" rule setting for character counts and CPS - thx chip00-dot
* Add Speech to text: custom GGUF models for Qwen3 ASR CPP with header validation - thx ScienceZone
* Add Text box: record speech to text box button via microphone (off by default, Options > Appearance)
* Add Remux video: caption time offset for broadcast .scc/.mcc files (suggested from the first time code) - thx MaxBunny1786
* Add Check for updates: settings gear for startup check and release channel - thx ivandrofly
* Add Batch convert: search box for the functions, shorter rows, presets below the list
* Add Batch convert: resizable splitter between file list and functions - thx ivandrofly
* Add nOCR: more Latin.nocr glyphs (Avatar periods/commas, em dash, short-tailed Q, touching pairs)
* Editor look palette now follows the theme, dark background color and system accent - thx pdjdev
* Editor look for the message box and the transcription progress window; more minor UI fixes (download title, burn-in effect switches, disabled text boxes, OCR database, move captions)
* Prevent sleep during the remaining long video jobs (generate/re-encode/cut/remux video, embedded subtitles, transparent subtitles, shot changes, video OCR, sync audio, background music) - thx ArcherLegend
* Batch convert/seconv: skip "Fix right-to-left" on subtitles without right-to-left text
* MCC/SMPTE 291M: parse CDP packets with an optional time code section - thx MaxBunny1786
* nOCR: challenge a loose upright match with the straightened glyph, split touching italic letters, match baseline marks by baseline, italic word spacing, dashes beside quotes, false spaces inside numbers, lost spaces after overhanging f/r/t - thx fraternl, Codling
* OCR fix engine: slash as italic i/I/l, "#" between letters as apostrophe, closing tag slash, sans-serif capital I ("lk" -> "Ik"), wide-set ellipsis ". . ." - thx fraternl
* Auto-wrap while typing: leave pre-existing long lines alone - thx kadrimarzouki
* Export plain text: label merge option "Merge all lines" like SE4 - thx vivadavid
* Update audio.cpp runtime to v0.9.2-drama3 (2026-10-19)
* Fix waveform click inside a subtitle shifting its timing - thx 114562175, ChristosBouronikos
* Fix "Select current subtitle while playing" lost after a settings import - thx kadrimarzouki
* Fix imported layout sizes and waveform zoom lost after a settings import - thx kadrimarzouki
* Fix live spell check underlining the original text column in translation mode - thx kadrimarzouki
* Fix nOCR 2x2 "character" prompted for the foot cut off "a", "R", "x" - thx Codling
* Fix nOCR "Number of pixels is space" combo not showing the selected value - thx Codling
* Fix DashScope OSS multipart uploads for Qwen3-ASR - thx Gh-Shinku
* Update Japanese translation - thx hisui3393
* Update Korean translation - thx 12si27

-----------------------------------------------------------------------------------------------------

v5.4.0-beta1 (18th of October 2026)

* Add "Sync subtitle to audio" (Video > More): ffsubsync-style offset and frame rate detection
* Add "Sync audio track" (Video > More): shift one audio track with live preview
* Add export of D-Cinema SMPTE 2014 as MXF track file (SMPTE ST 429-5), text and image subtitles, also in seconv
* Add "Export Excel dialogue list" (.xlsx) with chosen columns
* Add Remux video: CEA-608/708 as SEI captions in .mp4 - thx MaxBunny1786
* Add "Check for updates": install and restart (Windows installer, Linux tarball, macOS)
* Add Voxtral TTS (audio.cpp) engine, audio.cpp runtime 2026-10-16 (v0.9.2)
* Add "Custom error rules": regex rules that color lines as errors - thx JohnLawes
* Add "Auto-wrap while typing" setting (Options > General) - thx kadrimarzouki
* Add "Apply advanced effect": CapCut-style gallery and six new caption effects
* Add Batch convert: plain text options - thx vivadavid
* Add Batch convert: run batch-capable plugins
* Add "Open from URL": cookies from browser and bot-check hint - thx aresstokrat
* Add video player: optional previous/next subtitle and toggle subtitles buttons - thx benshgit
* Add llama.cpp OCR models QARI-OCR 0.2.2.1 (Arabic), LightOnOCR-3 4B and 0.8B; thin border instead of square for HunyuanOCR and QARI - thx fraternl
* Add shortcuts "split line at video position / text box cursor / both, go to second part and play" - thx LeonCheung
* Add shortcuts to move selected/following/all lines one frame back/forward - thx Kimsihong
* Add shortcut "move text before cursor position to previous subtitle" - thx LeonCheung
* Add shortcuts to copy plain text (text and original)
* Add "Has errors" rule to Modify selection - thx fointypinger
* Add case conversion escapes (\u \l \U \L \E) in Multiple replace regex replacements
* Add image color picker in the color dialog - thx pdjdev
* Add Uninstall button to Spell check > Get dictionaries - thx ivandrofly
* Add type-ahead and right-click Remove in Options > Word lists - thx FunkyKnilch, ivandrofly
* Add Re-copy button in Copy-paste translate
* Add OCR: Ctrl+mouse wheel and Ctrl+0 for image thumbnail zoom, progress text below the progress bar
* Add Image viewer: step prev/next in place instead of reopening the window
* Add seconv: --burn-in-video, --burn-in-ffmpeg-args and --burn-in-effects - thx zbcoding
* ASSA draw: text and shapes, groups, rubber-band selection, Ctrl+click, in/out and loop animations, many new clip arts (also animated and colored), delete point, arrow nudge
* ASSA windows in the ASSA draw look: styles, properties, attachments (drop files to attach), Set position (anchor grid, rotation), Set background (style gallery, 12 new borders), progress bar (16 new bar styles), apply override tags, resampler, font collector, style picker, tag history - also SSA and WebVTT styles, following the app theme
* Editor look for the remaining windows (burn-in, video, sync, edit, spell check, OCR, tools, settings) with live theme switching
* One field look for text boxes, combo boxes and lists; time controls with arrows on hover
* Waveform: ASSA lines with the same times move and resize together
* Select line at play-head while paused without requiring "center" - thx jojorne
* Choose layout: arrow Up/Down and Enter
* Change casing: dim normal casing options unless "Normal casing" is selected - thx ivandrofly
* Advanced llama.cpp translate: turn thinking off after a reasoning-only reply; refresh auto-translate model lists
* nOCR: many recognition improvements for Latin and Cyrillic (ligatures, period/dash and comma/apostrophe by baseline, touching letters, accent case, word spaces, italic, 0/O from neighbours)
* Minor UI fixes in many dialogs
* Fix auto-sized windows clamped to a short screen (scroll) - thx vivadavid
* Fix SCC save: monotonic timeline, load after previous display - thx tmwiscon
* Fix fullscreen video keyboard focus, UI hang on PageUp in the menu bar and fullscreen previous/next line shortcuts - thx vitonique
* Fix 500 ms / custom ms steps moving only a few frames after play/pause - thx chip00-dot
* Fix crash on close with libmpv (destroy the core after the render context)
* Fix Spell check window not remembering its position - thx Numbergod
* Fix Word lists Language combo changes not announced to screen readers - thx Shaima-Almarzooqi
* Fix seconv splitting a file name with commas into patterns
* Fix seconv/Batch convert VobSub colour isolation for nOCR and BinaryOCR
* Update Bulgarian and Russian translation - thx jekovcar
* Update Korean translation - thx 12si27
* Update Polish translation - thx potplayer-fanpack

-----------------------------------------------------------------------------------------------------

v5.3.0 (14th of October 2026)

Subtitle Edit 5.3 collects the work of 26 betas and 4 release candidates.
Expand Down
21 changes: 19 additions & 2 deletions docs/features/edit.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ The window is split into two resizable panels:

| Panel | Description |
|---|---|
| **Left — Rules** | Tree of categories and their rules. Each rule shows its type icon, find pattern, replacement, and an optional description. |
| **Left — Rules** | Tree of categories and their rules. Each rule shows its type icon, find pattern, replacement, and an optional description. The buttons above the tree add a category, add a rule, open **Add rules** (a whole list in one go), import rules, and collapse or expand all categories. |
| **Right — Fixes** | Preview of all lines that will be changed. The **Before** column highlights removed characters in red and the **After** column highlights added characters in green. Selecting a row reveals an **Applied rules** detail panel at the bottom listing every rule that matched that line. |

### Choosing which fixes to apply
Expand Down Expand Up @@ -124,6 +124,7 @@ Right-click a category node to open its context menu:
- **Edit** — rename the category
- **New category** — add a sibling category
- **New rule** — add a rule to this category
- **Add rules...** — add a list of rules to this category in one go (see [Adding many rules at once](#adding-many-rules-at-once))
- **Move up / Move down** — reorder categories
- **Move to top / Move to bottom** — move the category to the first or last position
- **Delete** — remove the category and all its rules
Expand All @@ -137,18 +138,32 @@ Right-click a rule node to open its context menu:
- **Edit rule** — change find/replace text, type, and description
- **Duplicate** — insert a copy of the rule above the current one
- **Insert before / Insert after** — add a new rule relative to this one
- **Add rules...** — add a list of rules right after this one (see [Adding many rules at once](#adding-many-rules-at-once))
- **Move up / Move down** — reorder within the category
- **Move to top / Move to bottom** — move the rule to the first or last position in the category
- **Move to category** — move the rule to the end of another category
- **Delete** — remove the rule

Double-clicking a rule also opens the **Edit rule** dialog.
Double-clicking a rule also opens the **Edit rule** dialog. A new rule is selected and scrolled into view, also at the end of a long category.

### Adding many rules at once

**Add rules** (the toolbar button, the context menu, or `Ctrl+Shift+N`) opens one window for a whole list of find/replace pairs - a word list does not need a **New rule** dialog per word. The rules go to the end of the selected category, or right after the selected rule.

- Type the text in **Find what** and **Replace with** and press `Enter`: the pair is added to the list below and the cursor goes back to **Find what** for the next one. `Tab` moves between the two boxes.
- The type (case insensitive, case sensitive, regular expression) and **Whole word** stay as set for every rule you enter. They start as the neighbouring rule's, so a list of words usually needs them set once.
- Double-click a row in the list (or press `Enter` on it) to take it back into the boxes and correct it; `Delete` or the trash button removes it.
- **OK** (or `Ctrl+Enter`) adds the list to the category; a pair still in the boxes is added too. **Cancel** asks before throwing away a list that was entered.

The rules are added in the order they were entered, which is the order they run in.

### Keyboard shortcuts

| Shortcut | Action |
|---|---|
| `Ctrl+N` | Add a new rule to the selected category, or insert after the selected rule |
| `Ctrl+Shift+N` | Open **Add rules** for the selected category or rule |
| `F2` | Edit the selected rule, or rename the selected category |
| `Ctrl+D` | Duplicate the selected rule |
| `Ctrl+F` | Find a rule by name / text |
| `Ctrl+Up` / `Ctrl+Down` | Move the selected category or rule up / down (`Cmd` on macOS) |
Expand All @@ -160,6 +175,8 @@ Double-clicking a rule also opens the **Edit rule** dialog.
| `Escape` | Close the window |
| `F1` | Open help |

On macOS `Cmd` works for every `Ctrl` shortcut above. The context menus show the shortcut next to each action.

The expand/collapse buttons (`+` / `−`) above the tree expand or collapse all categories at once (`Ctrl+Shift++` / `Ctrl+Shift+-`).

> **Note:** `Ctrl+D` duplicates the selected rule, except while the fixes preview has focus — there it unticks every row, as in the other preview lists (see [Choosing which fixes to apply](#choosing-which-fixes-to-apply)).
Expand Down
2 changes: 1 addition & 1 deletion docs/features/remux-video.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ With **Output format** `.mpg`, the subtitles are embedded as CEA-608 (and CEA-70
- The video must be MPEG-2. Any other video (H.264, HEVC, ...) is re-encoded to MPEG-2 after asking, which takes longer and lowers the quality a little
- The audio is copied when it is MP2, MP3 or AC-3, and converted to AC-3 (192 kb/s) otherwise
- Caption data the video already has is replaced
- Caption times are taken from the video's first frame, so SCC/MCC timecodes should start at 00:00:00:00 (not at a 01:00:00:00 tape start)
- Caption times are taken from the video's first frame. Broadcast SCC/MCC files often start at a 01:00:00:00 tape time instead; **Caption offset** is taken off every caption time, and is filled in with that whole hour when the file's first caption lies past the end of the video (captions that would come before the video are dropped)

ffmpeg first writes the MPEG program stream, then Subtitle Edit adds the captions to the video; the progress bar shows both steps. To check the result: MediaInfo lists *Text* tracks "EIA-608" (and "EIA-708") muxed in the video, and `ffmpeg -f lavfi -i "movie=out.mpg[out0+subcc]" -map 0:1 out.srt` extracts it.

Expand Down
3 changes: 3 additions & 0 deletions docs/reference/command-line.md
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,9 @@ seconv lint *.srt --json # CI-friendly: exit 1 on any issue
|---|---|---|
| `--resolution:<WxH>` | ASSA, image-based | Sets `PlayResX`/`PlayResY` for ASSA; sets canvas for image outputs (default `1920x1080`) |
| `--assa-style-file:<file>` | ASSA | Apply `[V4+ Styles]` block from another ASSA file |
| `--burn-in-video:<file>` | ASSA | After writing the `.ass`, burn it into this video with ffmpeg's `ass` filter (needs ffmpeg on PATH). Output: `<subtitle name>_burn-in.<video ext>` next to the `.ass`; every converted subtitle (each input file, each container track) gets its own burned video. Without `--resolution` the video's size is used. An existing output is kept unless `--overwrite` is given; Ctrl+C stops ffmpeg and removes the partial video. Example: `seconv movie.srt ass --assa-style-file:style.ass --burn-in-video:movie.mp4` |
| `--burn-in-ffmpeg-args:<args>` | ASSA + `--burn-in-video` | ffmpeg encoder arguments (default: `-c:v libx264 -preset medium -crf 23 -pix_fmt yuv420p -c:a copy`); for a `.webm` video, which cannot hold H.264, the default is `-c:v libvpx-vp9 -crf 32 -b:v 0 -pix_fmt yuv420p -c:a libopus`, e.g. `"-c:v h264_nvenc -cq 23 -c:a copy"` |
| `--burn-in-effects:<list>` | ASSA | Comma-separated line effects, the same ones as the UI's Burn in > Effects: `fade` (fade in/out, 250 ms; `fade:<ms>` for another length), `font-kerning` (letter spacing slowly increases), `font-size-change` (text slowly grows to 120%), `scroll-up` / `scroll-down` (text drifts 20 px up or down, centered near the bottom), `rotate-in` (tilts in from 30° over the first half of the line), `tilt-bounce` (rocks left and right, settling over 1.25 s), `font-size-bounce-in` (grows from 50% with a bounce), `fix-rtl` (Unicode direction marks for right-to-left text). Written as override tags in the `.ass`, so they also work without `--burn-in-video`; sizes and positions use the style's font size and `PlayResX`/`PlayResY`. Example: `--burn-in-effects:fade,font-kerning` |
| `--pac-codepage:<page>` | PAC | Code page name (`Latin`, `Greek`, `Hebrew`, …) or numeric (0–12). See `seconv list-pac-codepages` |
| `--pac-secondary-codepage:<page>` | PAC | Code page for lines in another script (e.g. `Cyrillic` for the Russian lines of a Hebrew file); those lines are flagged "secondary code page". Reading detects it automatically |
| `--ebu-header-file:<file>` | EBU STL | Reuse the GSI header block from an existing `.stl` file |
Expand Down
5 changes: 5 additions & 0 deletions installer/macBundle/SubtitleEdit.app/Contents/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,11 @@
<string>Alternate</string>
</dict>
</array>
<!-- The "record speech to text box" button captures the microphone through ffmpeg; a
child process inherits the bundle's privacy attribution, and without this key macOS
kills it the moment it opens the microphone. -->
<key>NSMicrophoneUsageDescription</key>
<string>Subtitle Edit records your voice when you press the microphone button, to turn speech into subtitle text.</string>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
Expand Down
Loading
Loading