Skip to main content
SubtitleMatrix

Convert Subtitles to PDF

Or paste subtitle text

Options

Three settings, not a point size: the page is a fixed A4 column, so a 20 pt body would wrap to two or three words a line. Small is the size the reports use for footnotes, Default matches a report's body text, Large matches a section heading. Timecodes are always one step smaller than the body, so the two stay distinguishable at every setting.

On, one empty line separates each cue, which reads better on paper when cues are long. Off packs the cues together — the denser default, and the one that keeps a long film inside fewer pages.

Each cue gets its own 00:00:01,000 --> 00:00:02,000 line in the smallest size. Keep it on when the page will be used to find or cite a line in the video; turn it off for a clean reading script. The timecodes shown are the ones in the file — nothing is recomputed.

A heading carrying the name of the subtitle file you dropped in. Worth leaving on for a batch: ten PDFs from one run are otherwise indistinguishable at a glance. The name comes from the file itself, not from anything inside it — a TTML <title> is content, this is the file's name.

A 1 / N footer at the bottom of every page. On by default because a printed script is usually referenced by page, and a page with no number cannot be cited. Turning it off removes the footer entirely; nothing else on the page moves.

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 turns a subtitle file into a PDF: a document you can print, file, mark up and search. Each cue becomes a short block with its own timecode line above the text, so a passage can still be located in a player after the file has left the browser. The whole page runs inside the tab, so nothing is uploaded — the same rule as every other tool here, and the reason it can be used with material that is not allowed to leave the machine.

The difference from a transcript is the timecode. The plain text export deliberately strips timecodes and joins neighbouring cues into paragraphs, because prose is what it is for. This page does the opposite: every cue keeps the time range it was given, and cues are not merged, because the job here is to reproduce what the file says, on paper, with the times still attached. If the question you are answering is "what was said", take the transcript; if it is "what was said, at what minute", take the PDF.

The difference from a compliance report is the verdict. A report states findings against clauses: overlaps, reading speed, line length, and a conclusion at the top. This page states nothing — it lays the file out and adds no judgement. A file that would fail every rule in the compliance section still comes out of this page as a clean, well-set document, because the two pages answer different questions and neither pretends to be the other.

All twelve subtitle formats are accepted, including plain text and LRC, but two of them have no end time in the file. LRC carries a start per line and no end; plain text carries nothing at all. The parser fills those in so the page has a range to print, and the filled-in values are reported as losses on the result card rather than silently presented as measured. For MicroDVD, whose timecodes are frame numbers, the frame rate box decides how those numbers become milliseconds — with the wrong rate, every timecode on the page is wrong by the same factor.

What the page does not do is draw the file's styling. Bold, italics, colour and the ASS override tags are all read, but the document is set in one typeface at one weight, because a printed subtitle sheet is read for its words and the fonts needed to render styled CJK text are not the ones this site ships. Nothing in your file is changed by that: the PDF is a new document, and the file you dropped in keeps everything it had. Text that the shipped fonts cannot draw — a script outside the Latin, Japanese, Simplified Chinese and Korean set — is shown as an open box and counted on the result card, so a gap in the output is always something you can see rather than something you have to guess at.

Examples

Three cues at the default settings

Input

1
00:00:01,000 --> 00:00:03,000
Good evening.

2
00:00:03,500 --> 00:00:06,000
The room is dark
and the heating is off.

3
00:00:07,000 --> 00:00:09,000
Nobody has been here.

Output

film.srt

00:00:01,000 --> 00:00:03,000
Good evening.

00:00:03,500 --> 00:00:06,000
The room is dark
and the heating is off.

00:00:07,000 --> 00:00:09,000
Nobody has been here.

1 / 1

The file name on top, then one timecode line and the cue text for each cue, then the page number. The middle cue was two lines in the source and stays two lines here: a hard line break inside a cue is the author's, not the layout's. A cue and its own timecode are kept on the same page — a three-word fragment at the top of a page with its timecode at the bottom of the previous one is the one thing this layout will not do.

The largest text size, with cue spacing on

Input

1
00:00:04,000 --> 00:00:08,000
We can talk about it in the morning.

2
00:00:09,000 --> 00:00:12,000
Every night this week?

Output

film.srt

00:00:04,000 --> 00:00:08,000
We can talk about it in the morning.

00:00:09,000 --> 00:00:12,000
Every night this week?

1 / 1

The size box has three positions, not a point size: the page width is fixed, so a free number would let you ask for a body size that folds into two or three lines per page. Large is the size used for headings elsewhere in the site, which is audibly bigger on paper and still fits a normal line of dialogue. With cue spacing on, a blank line separates one cue from the next, which is the setting to pick when the sheet is going to be marked up by hand.

Timecodes switched off, for a reading copy

Input

1
00:00:12,000 --> 00:00:15,000
We picked up the car
at noon.

2
00:00:15,200 --> 00:00:17,000
It had a full tank.

Output

film.srt

We picked up the car
at noon.

It had a full tank.

1 / 1

With timecodes off the blocks become plain text, each cue still separate and each cue's own line breaks still respected. This is the closest this page gets to a transcript, and it is deliberately not the transcript: cues are not merged across short pauses, and nothing is re-flowed, so the result stays one cue per block. Turn timecodes off when the sheet is going to an actor or a reader who does not need the timings.

Frequently asked questions

What does the PDF look like when I open it?

A single column of cues on A4, each one a small timecode line followed by the cue's text. The file name is printed once at the top when the header box is on, and a page number in the form 1 / 3 sits at the bottom of every page when page numbers are on. There is no cover page, no table of contents and no styling carried over from the file: subtitle styling describes what happens on a screen at a moment, and a printed sheet has no moment to reproduce it in.

Can I search the text inside the finished PDF?

Yes. The document is written with an embedded text layer, so Ctrl-F or Cmd-F finds a line of dialogue the same way it would in any other document, and copy-paste gives you the words rather than an image of them. That is the reason this page produces a real PDF instead of a screenshot or an image sequence: a sheet you cannot search is a sheet you have to read from the start every time you want to check one line.

Which subtitle formats can go in, and what comes out of the two odd ones?

All twelve formats this site reads: SRT, WebVTT, ASS, SSA, SBV, SAMI, LRC, MicroDVD, TTML, JSON, plain text and CSV. Two of them do not store an end time. LRC has a start per line and nothing else, so the end is filled in from a default duration; plain text has no timing at all, and the whole timeline is laid out while parsing. Both fill-ins are listed as losses on the result card, so a timecode in the PDF that the file never contained is never presented as if it had been read.

Why is there a frame rate box on a page that only prints?

Because MicroDVD stores timecodes as frame numbers, not as hours and minutes. Turning a frame number into a position in the document needs a frame rate, and the file usually does not state one. With the wrong rate every timecode in the PDF is off by the same proportion — at 25 against a true 23.976, a cue forty minutes in lands nearly two minutes late. For every other format the box does nothing and can be left alone.

Are bold, italics and colours kept in the PDF?

No. The page sets the words, not the styling. Bold, italics, colour changes and the ASS override tags are read correctly and are not lost from your file — the PDF is a new document, and the file you dropped in is untouched — but the document itself uses one typeface at one weight. Rendering styled CJK text would need a separate font for each weight in each script, and shipping four of those to draw a subtitle sheet is not a trade this site makes.

What happens to characters the bundled fonts cannot draw?

They appear as an open box on the page, and the result card tells you how many were involved and which script they belong to. The four fonts cover Latin, Japanese, Simplified Chinese and Korean; Arabic, Hebrew, Devanagari, Thai and Cyrillic text have no glyphs and cannot be drawn. The count is reported rather than hidden, because a page of boxes that nobody mentions looks like a rendering accident, while a line that says how many characters could not be drawn is something you can act on.

Does the file name at the top come from the file itself?

It comes from the name of the file you dropped in, not from a title field inside it. Most subtitle formats have no place to store a title, and the ones that do rarely have anything useful in it, so the name on your disk is the one piece of identifying information that is reliably there and is what you would write on the sheet yourself. Switch the header off when the sheet is going to be bound with others and a file name on every page would just be noise.

Related tools