Skip to main content
SubtitleMatrix

Convert Subtitles to Sentence Case

Text and stylingChange case
Or paste subtitle text

Options

Five named rules live behind this one box, and each has a page of its own: UPPERCASE and lowercase rewrite every letter, title case capitalises each word and leaves the small ones (a, the, of) alone, sentence case lowers the line first and then rebuilds the sentence starts, and Capitalise each line changes only the first letter of each line. This page fills the box in with the rule its title names and lists no other, so the file this page produces is the one the page is about.

Which frame rate the timings are counted in. On the format pages this is what MicroDVD needs, because it stores timing as frame numbers. On the frame rate pages it is the rate the file was timed against — the version the subtitles were made for — and the page's second box takes the rate of the video you are going to use them with. 23.976, 24, 25, 29.97, 30, 50, 59.94 and 60 are the common ones. Getting it wrong shifts the whole timeline, and on the frame rate pages it shifts it by a ratio rather than by a fixed amount.

This page is the one to run on a subtitle file that arrived shouting. It lowers every line first and then puts the capital letters back where the sentences actually start: one at the opening of the line, and one after each full stop, question mark or exclamation mark. A file written entirely in capitals comes out as ordinary mixed-case text, which is what most people are looking for when they land here.

What counts as the end of a sentence is judged carefully rather than by looking for a full stop. A period followed by a digit is part of a number, so `3.5` does not start a new sentence. A period after a known abbreviation — `etc.`, `Dr.`, `a.m.` and about thirty more — does not either. A full stop inside quotation marks does, which is why `He said "go." She left.` gets a capital on `She`. The same judgement is used by the page that splits subtitles at sentences, so the two pages in this site cannot disagree about where a sentence ends.

One consequence is worth knowing before you run it over a series, and it is the only thing on this page that surprises people. Proper nouns are lowered along with everything else, because nothing in a subtitle file records that a word was a name. `DR. SMITH LEFT` comes out as `Dr. smith left`. That is what sentence case means — a line rebuilt by sentence, not a name restorer — and files full of names are better served by capitalising the first letter of each line or by title case, both of which leave the rest of each line as they found it.

Nothing is uploaded, and the file is read as what it actually contains rather than by its extension across the twelve supported formats. A file that is already in sentence case comes back byte for byte, which makes this a cheap first run on any file you have inherited: anything it changes is something that needed changing.

Examples

A file delivered in capitals

Input

1
00:00:01,000 --> 00:00:02,000
THE ROOM IS DARK. THE LIGHT IS ON.

2
00:00:03,000 --> 00:00:04,000
WHO TURNED IT OFF?

Output

1
00:00:01,000 --> 00:00:02,000
The room is dark. The light is on.

2
00:00:03,000 --> 00:00:04,000
Who turned it off?

Two sentences in the first cue, so two capitals: one at the start of the line and one after the full stop, while everything else is lowered. The rule runs per line rather than per cue, so a subtitle holding two sentences gets two capitals and not one.

Periods that are not sentence ends

Input

1
00:00:01,000 --> 00:00:02,000
IT IS 3.5 METRES, ETC. AND MORE.

2
00:00:03,000 --> 00:00:04,000
DR. SMITH LEFT AT 9 A.M.

Output

1
00:00:01,000 --> 00:00:02,000
It is 3.5 metres, etc. and more.

2
00:00:03,000 --> 00:00:04,000
Dr. smith left at 9 a.m.

Three periods that start nothing: the one in `3.5` has a digit after it, and the ones in `etc.` and `Dr.` follow words on the abbreviation list. So `and` and `smith` stay lowercase. The second cue is the one output on this page that surprises people — see the questions below, because a file full of names wants a different page.

A full stop inside quotation marks

Input

1
00:00:01,000 --> 00:00:02,000
HE SAID "GO." SHE LEFT.

2
00:00:03,000 --> 00:00:04,000
"WAIT!" HE CALLED.

Output

1
00:00:01,000 --> 00:00:02,000
He said "go." She left.

2
00:00:03,000 --> 00:00:04,000
"Wait!" He called.

The full stop sits inside the quotation marks and still ends the sentence, so `She` takes a capital after the closing quote. In the second cue the line opens with the quote itself, and the capital lands on the first letter inside it — punctuation has no case, so no capital is ever placed on a quote mark, a bracket or a dash at the start of a line.

A file that is already correct

Input

1
00:00:01,000 --> 00:00:02,000
The room is dark. The light is on.

2
00:00:03,000 --> 00:00:04,000
Who turned it off?

Output

1
00:00:01,000 --> 00:00:02,000
The room is dark. The light is on.

2
00:00:03,000 --> 00:00:04,000
Who turned it off?

Byte for byte identical, because there was nothing to rebuild. On a file you have inherited this is a useful first run: the output is a diff of what the page considers wrong, and an empty diff means the case was not the problem.

Frequently asked questions

Why did my proper nouns come out in lower case?

Because sentence case lowers each line before rebuilding it as sentences, and nothing in a subtitle file records which words were names. `DR. SMITH LEFT` becomes `Dr. smith left` — the abbreviation guard stops `smith` from counting as a sentence start, so it keeps the lower case it was given. This is the operation's definition rather than a bug, and it is the single strongest reason to use a different page when a file is full of names: capitalise the first letter of each line changes far less, and title case protects words that already carry a capital.

What counts as an abbreviation, and can I add one of my own?

About thirty are built in: the honorifics and titles such as Mr, Mrs, Dr, Prof and St, the Latin shortenings etc, e.g, i.e and vs, the units and trade forms such as approx, inc, ltd and dept, and the time forms a.m and p.m with their dotted variants. There is no way to add to the list from the page, because the list has to produce the same answer on every file. If your text has a shortening that is not on it, a full stop there will be read as a sentence end and the following word will take a capital — find and replace afterwards will put it back.

Is this the page for a file that is in mixed case but has the wrong capital letters?

Only if the whole line needs rebuilding. This page discards the case a line arrived in and decides from the text and the punctuation, so a line that is already correct is returned unchanged but a line with one wrong capital is rewritten entirely. Where you want small, targeted corrections, capitalise the first letter of each line or title case will move fewer characters and leave your judgement about the rest of the line intact.

How does it handle a line that holds several sentences?

Each sentence start gets a capital, no matter how many there are on the line. `THE ROOM IS DARK. THE LIGHT IS ON.` comes out as `The room is dark. The light is on.` — two capitals from one line. Since subtitles often hold two short sentences in a single cue, this is the normal case rather than an edge one, and it is why the page cannot simply capitalise the first letter of everything.

Does the change disturb the timing, the cue order or the styling?

No. The page touches only the text of each line, so every cue keeps its own start and end to the millisecond and the order of cues is the file's own. Styling is preserved as well, with one exception: where lower-casing changes how many characters a string takes — the Turkish dotted capital i is the usual case — the tags on that line are dropped rather than left covering the wrong letters, and the number dropped is reported.

Does it work for languages other than English?

The capitalisation works for any script with upper and lower case, and it is applied per line, so a bilingual file with two scripts in it is handled on both. What does not transfer is the punctuation list, which is tuned for full stops, question marks and exclamation marks as used in English and other Latin-script languages; those marks mostly still apply, since most languages use them. A file in a script without capitals comes back unchanged, which is correct rather than broken.

Related tools