Today I finally figured out a way to display subtitles to streamed movies in Netflix. You might wonder what the point of having subtitles in Netflix is. Well, I can think of at least 5 reasons:
- You’re watching a movie late at night and want to keep the volume down so as not to disturb your neighbors.
- The actors are speaking with a strong regional accent that is hard to understand.
- Someone in your family (perhaps your parents or your significant other’s parents) do not speak English very well, so you’d like to display subtitles in their native language.
- You may be trying to learn a foreign language and are practicing by watching the movie in English and reading the subtitles in the target language.
- You may be hard of hearing or deaf.
These are all relevant reasons for subtitles, but Netflix has not (yet) implemented a fully working solution for subtitles in its streaming engine. Only a limited selection of movies in the streaming library have closed captioning available within Netflix. And there is no multi-language availability. So if you want to display subtitles in Spanish for one of the Hollywood movies on Netflix, you are out of luck. Or at least so it seems on the surface.
As it turns out, Netflix has built the subtitle capability in its engine, but makes this available through a “hidden” menu. If you download subtitles in your target language from one of the many specialist web sites, you can convert the file into the format required by Netflix, and then “soft upload” the subtitles to the movie while you are watching.
Below I provide a step-by-step guide on how to do that:
Step 1: Search for an SRT file with subtitles for the movie of your choice from any of the many web sites specializing in subtitles. I personally like to use a web site called PodNapisi. Please note that downloading a file with subtitles is perfectly legal, because the subtitles have been generated by a user (i.e., they are not copyrigthted content). If the web site offers you several choices, download the one that is formatted for a single file and for 25 frames per second (fps).
Step 2: Play the movie in the Netflix player for a little bit and mark the timing (minutes and seconds) for the first few lines of dialogue. This is very important! You will find that many subtitles files that you download from the web are a little off in timing compared to the Netflix movies. This is because the subtitles were meant for a movie that comes from another source (e.g., DVD) and Netflix may have added or deleted a few seconds of video from the beginning of the movie. You will need the information about timing in the next few steps, so make a note of it somewhere.
Step 3: Download and install a free program called Jubler - this is an editor for subtitles. You will need it because Netflix accepts subtitles in the DFXP format but most subtitles on the internet are available in the SRT format. So you will need to convert from SRT to DFXP, using Jubler. If you are working on a Mac OS X, you can use another program called SRT to DFXP Converter. I personally prefer Jubler and this post is focusing on how to use Jubler. But SRT to DFXP Converter works similarly, so you can try it out on your own. Jubler has versions for both Windows and Mac OS X, which is one of the main reasons why I prefer it.
Step 4: Run Jubler and open the SRT file with the subtitles that you have downloaded. For illustrative purposes in this post, I will be using The Perfect Host movie and Spanish subtitles for that movie, which I found on the PodNapisi web site.
Step 5: A quick look at the first few lines of the subtitles reveals that they are lagging about 1.5 seconds behind the movie as it has been formatted for Netflix. (Remember the timings that I asked you to mark for the first few lines of dialogue in the movie, in Step 2?) You will need to shift the timing a bit. To do that, first select all the lines of the subtitles in Jubler.
Step 6: Now click on the Tools menu and select Shift Time.
Step 7: The subtitles in the SRT file seem to be lagging approximately 1.5 seconds behind the Netflix movie. Enter that information to adjust the timing.
Step 8: Once time shifting has completed, export the file into the desired DFXP format. Click on the File menu and select Save As to do that.
Step 9: Jubler does not have DFXP as an option. However, it allows you to export into XML, which is essentially the same as DFXP. From the Format dropdown list, select W3C Timed Text (XML) as your desired output format.
Step 10: Select UTF-8 as the target encoding. This is very important! If you fail to export your subtitles under the UTF-8 encoding, it is highly likely your output file will not be properly read by Netflix.
Step 11: Save the output file using a name of your choice.
Step 12: Go to the location on your hard disk where you saved the output file, and rename the file to change its extension from XML to DFXP.
Note for Mac OS X users: You will have to select Get Info for that file and rename the file from the Get Info window. Simply right-clicking on the file and choosing Rename may not work properly, because that affects only the name of the file, but not the real extension of the file.
Note for Windows users: Make sure you can see the extension of the file before doing the rename. By default, Windows hides the extensions of known files. XML is a popular extension and therefore there is a great chance Windows may be hiding the “.xml” part from your subtitles file’s name. If this is the case on your computer, click on Organize, choose Folder and Search Options, and then go to the View tab in the new window that pops up. Find the “Hide extensions for known file types” option and deselect it. Hit the Apply button. Now, you should be seeing your subtitles file with the XML extension. Right-click on the file, choose Rename, change from “.xml” to “.dfxp” and you’re done!
Step 13: Now go back to the browser tab where you are running Netflix. Start the movie and pause it when it loads and begins playing. As you are in the Netflix player and the movie is paused, press simultaneously the following combination of keys:
- If you are running Windows, press CTLR-ALT-SHIFT-M. Update — July 19 2012: If this key stroke combination does not work, try SHIFT-ALT-Click on Video. It seems that newer versions of Silverlight use this new way to invoke the hidden menu. Thanks to Greg and nickisashkir for calling this change out in the Comments section below.
- If you are running Mac OS X, press Control-Option-Shift-M.
If you have pressed the right combination of keys, you will see a “hidden” Diagnostics menu appear on your Netflix screen.
Step 14: Select the second option (Load Custom DFXP File) from the Diagnostics menu. A window will pop up, which will ask you to locate the DFXP file with the subtitles. Go to the location on your hard disk where you saved the DFXP file converted by Jubler (as discussed in Step 11). Select to open that file.
Step 15: Once the subtitles file has been “soft uploaded” to Netflix, you will see that a new button with the text Subtitles has appeared next to the buttons for Full Screen and Volume in the Control area below the movie screen. Press the Subtitles button to ensure that the newly uploaded subtitles file has been selected.
Congratulations! You are now ready to play your movie with Spanish subtitles. Just press the Play button and enjoy!
I hope this works equally well for you as it does for me. Try it out and let me know what your experiences are.
Update — March 18 2012
As one of the readers of this post has noted in the Comments section, the latest Silverlight update may disable the hidden Netflix menu described in this post. I have not yet updated. I tried displaying subtitles today and the procedure outlined in the post worked. That said, my advice to everyone who has not completed the latest Silverlight update would be to postpone doing that, as long as Netflix allows streaming movies without the update. That would ensure you can still display foreign language subtitles. Please let me know in the Comments section if you have more information on this issue.