Extracting Subtitles from Netflix

Updated 3/18/2018

Having subtitle scripts from TV shows that you are watching is an excellent study aid. Not to mention that they can be used with Subs2SRS to easily import sentences into Anki! These days, many people tend to watch Netflix more than a lot of the traditional media. I’ve also seen numerous people talking about how the Netflix Original “Terrace House” is great for Japanese listening practice, because it is unscripted and captures natural dialog.

When I originally wrote this post, it was because I had discovered a way of ripping Japanese subtitles from Netflix, which to my knowledge, no one else had figured out how to do at the time. My method was long and clunky though. But thanks to the help of several users, we have eventually arrived at newer methods that are MUCH easier and better. So now, it is really quite simple to rip subtitles from Netflix, to the point that just about anyone can do it.

Download Subtitles I’ve Already Ripped

I have already downloaded subtitles from over 30 Japanese shows and movies that are available on US Netflix, andย you can grab them all here.


How to rip Japanese Subtitles from Netflix

Getting the subtitles from Netflix is quite simple now, due to a tool that does all the hard work for us!ย 

First, you will need to download an addon for your web browser which allows you to run userscripts. One such addon is called ViolentMonkey, and it works with either Firefox or Chrome (as well as some other browsers). There are several other similar addons as well, such as TamperMonkey and GreaseMonkey. These all mostly do the same thing, so just pick one. A simple Google search for any of those titles should easily lead you to a page that lets you install it in your web browser.

Next, you want to install the Netflix Subtitle Downloader. After installing it, you will notice some new options appear inside the subtitle selection menu on the Netflix website. Simply select the subtitle language that you want, and then click on one of the download buttons. It’s that simple! You might need to give it a moment after clicking the button while it begins downloading.

Note: On my system, I have run into some issues where the subtitle downloader will sometimes try to download the subtitle for the previous video that I was looking at. If you run into this issue, this can be resolved by hitting the “refresh” button in your browser after loading a video.

For many languages, especially ones with simple character sets like English and Spanish, the subtitles are downloaded as SRT files. However, for languages with more complex character sets like Japanese, Chinese, or Korean, the subtitles are stored as images. So in order to convert these into a text format, you need to perform OCR (optical character recognition).

To assist in performing this OCR, I have created a tool called PNG2SRT which makes it simple. You can see how to use PNG2SRT here.

New Method (download as text)

There is now a new method of downloading the subtitles directly as text rather than as images. However, the new method doesn’t work on every show. The method listed above will work on any show that has Japanese subtitles, so it is still useful in many cases. You can read about the new method of obtaining subtitles here.

121 thoughts to “Extracting Subtitles from Netflix”

    1. Newer root methods are invisible, so wont be detected by that. So not really a problem. (my phone is rooted with an older method though, so I really ought to get around to updating this myself)

  1. i don’t understand anything. im just here for the subtitles and i just want you to know that terrace house subs seems to be wrong? tried syncing it but most parts just doesnt fit in the video

    1. I’m not sure what video you are trying to sync it to, but if you are trying to use it together with some video file you have downloaded, it will be unlikely to sync up properly. These subtitles and sync were created by Netflix. I have merely published them for people to be able to use as a readable script, and no attempt has been made to see if they sync to any videos that may have been published elsewhere.

      1. actually it’s not just the synchronization because i can easily fix that. but the problem for me is that the subtitles itself says different words. i know because i understand few japanese words and they do not match

  2. Thanks for sharing. I successfully use Subtitle Edit to convert manifest_ttml2.xml and PNG to Blu-ray sup files. But I have too many subtitles, do you know how to batch convert them to Blu-ray sup files? Thanks very much.

    1. When you open the xml file in subtitle edit, it shows the import window which will list all of the subtitle lines. From here, you can right click on any line and choose export>”bluray Sup”. Then a new menu appears where you can choose to “export all lines”. I think this might be what you are looking for.

      1. Thanks for your response. That is the most convenient way, but it will be heavy workload when I have many episodes to do. Is there any other better way? Thanks. (T_T)

    2. You can do it using Subtitle Edit too! Tools -> Batch convert. Add input files, select output folder, format and hit “convert”. Keep in mind that output filename is the same as input. So change names from `manifest_ttml2.xml` to something else so they don’t overwrite each other. ๐Ÿ˜‰

  3. Great information and thoroughly instructions, I am finally able to get the subtitles I want and your method never failed.

    Thank you very much!

    But I still have one question, is there a way to get that “image subtitles” when the films ain’t allowed to be downloaded?

    1. Unfortunately, I have not found any way to get the subtitles for shows that aren’t available for download. It is possible to get text subtitles from any video for simple languages like English or Spanish though.

    1. Thanks for your feedback! I remember finding this thread back when I was originally trying to figure this out, but at the time, it seemed that the method mentioned for arabic subtitles didn’t seem to be working for Japanese. Once I get some time I will review what you have posted and see if I can’t get this working for Japanese as well. That certainly looks like it would be easier than my method.

    2. Looks like I got it working, thank you! The method is slightly different for Japanese than for arabic, but very similar. I’ll make a new post here soon to share this method with others!

  4. And what about text-based subtitles such as English, Spanish, or French? These will also show up in the network monitor, but there doesnโ€™t seem to be any obvious thing to filter out. You will just have to look at all of the items that come over when you load the subtitles and try to locate the correct one.

    Try this /?o= on your monitor filters, subtitles usually start with this.

    1. Downloaded them with my Userscript. Google “netflix subtitle downloader” and there should be a link from Greasyfork. I just updated it to support image based subs after reading this post. ๐Ÿ˜‰

      1. Awesome! Just checked this out and it works great! I’ll need to completely rewrite my guide again now :p

        By the way, I’m not sure if you can add any sort of feedback after clicking on the download link, but I was a bit confused if it was working or not, because it took about a minute for the download to pop up. It would be cool if it just let me know it was doing something.

      2. Ping! Wonder if you could take a look at the comments below in this thread about the kodi plugin that allows downloading subtitles. Apparently all of these image based subtitles have text versions on netflix as well! Would be amazing if you could figure out how to incorporate this into your userscript.

        1. I’ve been trying to make it work whole day. I got all I need to decrypt messages sent from and to server. Decryption throws error. So I’ve tried another method and got that data. It’s compressed with LZW. Decompression throws error. Minified JavaScript code from Netflix gave me headache so I give up for now. Don’t expect it to be incorporated into my script soon or even at all.

          BTW not all image based subs have text versions according to this issue: https://github.com/asciidisco/plugin.video.netflix/issues/95

    1. I just happened to OCR them today myself and posted them up just right before you. If you are manually correcting the errors, that is still very useful though. You might want to just download mine and then correct from there.

  5. Thank you for posting this! I just downloaded the images and would spend some time to learn the OCR process. For now, though, I just wonder where is the time information stored? How does the tool generate srt file with the corresponding timestamp?

      1. Can you explain a bit more about how to install pillow/requests/run python code? Dummy here ๐Ÿ™‚

        I managed to install the pillow from .exe file, but not the requests. Which file should I get, .whl or .gz? Do I need to move the downloaded file to under the python folder?

        When I typed “pip install requests” in python command line it gives the SyntaxError: invalid syntax, Same when I try to run the python script.

        Btw, this:
        python generate_srt_from_netflix.py โ€œTerrace House โ€“ Boys & Girls in the City 01โ€
        should look like something like this:
        python generate_srt_from_netflix.py โ€œC:\Users\Lindsay\Desktop\SUBSโ€

        Thanks in advance

        1. Hi, please don’t mind the questions above. I have got them figured out. Though now after running I got โ€œresponsesโ€ error..

          1. Okay. I tried it on korean subs. Instead of actual sub on the output files it writes [TEST HERE]. What went wrong?

          2. Btw, I do not know much about programming and was barely able to follow the guide, so could you put in simple terms?

          3. Lindsay: This problem is because the script is hardcoded to specifically request Japanese OCR. For korean, what you will need to do is open up the .py file in a text editor, and search for the following line (should be line 77): “imageContext”: { “languageHints”: [ “ja”, “en” ] }, # CHANGE FOR MORE LANGUAGES
            Just change the “ja” to “ko”

            Jordynx: I tried to explain it about as simply as I could. Unfortunately this involves command line tools so you will need a certain level of experience to use them. In the future perhaps some better tools can be created that will make the process easier. I’ll be glad to try to help you through any specific problems, though I am not familiar with a “responses” error. Is that the ENTIRE error message? I would need to see exactly what you have done to get this error.

          4. Dear Alan,

            Thank you!! I’ll try that.

            Dear Jordynx,

            For the response error I found that it was I didn’t properly enable google’s vision API.
            Google cloud – api and services – dashboard – enable api and services,
            DO NOT stop there, scroll down to find google vision API, click on, and enable.
            This works for me. If it still doesn’t work, maybe check you credentials.

  6. Hey there. I want to grab greek subtitles but when I put “el” and press next it displays an error message that i should choose only the languages from the drop down menu. Any suggestions on how to proceed?

    1. I didnt thoroughly test different languages, so I can try to take a look at that again when I get some time after the holidays. Are you sure that greek subtitles require OCR though (you downloaded a folder full of images using the subtitle downloading script)? I would have expected greek subs to simply be text.

      1. Me too. I was expecting for text but instead it downloaded a zip file with png files in it. In the language drop down menu if i put zh (chinese) it works (it’s a language you don’t have in this menu). Anyway, if you could check it out when you could i would be thankful. Merry Christmas and I will be waiting for your solution to that. Thanks in advance.

      2. usage: generate_srt_from_netflix.exe [-h] [-c CHUNK] [-l {ja,ko,zh,en}]
        generate_srt_from_netflix.exe: error: argument -l/–language: invalid choice: ‘el’ (choose from ‘ja’, ‘ko’, ‘zh’, ‘en’)

        That is the error!

        1. Download it again. I have added a few more languages to the drop down box, so it should work for Greek now. I think I have support for all Netflix subtitle languages that could possibly be images now.

  7. Hi, I just wanna say thank you. I don’t know anything about coding, just follow your instruction step by step and it worked! And will the API key go expire or something after using it like couple of times? Seems it’s a crucial element during the whole process.

  8. Oh god thank you so much supporting us in this important topic. By the way, I can’t use ‘vi’ code for my Vietnamese language. I entered ‘vi’ as an option but errors kept coming because it’s not in your language list ๐Ÿ™

    Can you please add ‘vi’ as an option for Vietnamese language? I really appreciate that.

  9. Hey Alan there is a way to extract srt sub directly from netflix now
    It requires kodi 18
    x64 http://mirrors.kodi.tv/nightlies/windows/win64/master/
    x32 http://mirrors.kodi.tv/nightlies/windows/win32/master/

    first you should create txt file named that” AhmedBafkir.txt” and transfer it to C
    then install kodi 18 and run it
    then go to Adds-on then My Adds-on then VideoPlayer InpuStream then InputStream Adaptive and press enable
    now install this script http://mirrors.kodi.tv/addons/gotham/script.module.requests/script.module.requests-2.12.4.zip
    then install netflix add https://goo.gl/dKerSA
    now open netflix add and sign in and choose any thing and play it
    it will give you error message but all sub links is generated in AhmedBafki txt
    open it with notepad and download
    here is a video but it is in arabic

    1. This looks like a big breakthrough! I tested it out and got text subtitles! Being able to skip the OCR step is what everyone has been waiting on. I wonder if Tithen-Firion’s userscript could be updated to support this? Does this have source code available?

    1. Probably. I modified it to work with DVD subtitles at one time, but I haven’t really tried messing around with BluRay subs as I don’t have any. I can try to look into it if I get some time though.

      1. Gave it my best shot.
        Everything worked great until the final command where I got this error:

        Error: Error calling Cloud Vision API

        I double checked the API key and tried again, but same error returned.

        1. I should add that I’ve only just signed up for the Google API thing, haven’t done any projects or anything. (If that’s a factor.)

        1. I can build it for mac os, just takes me a little time because I have to set it up in a virtual machine. Can you first verify that the mac os build for the netflix-only version (in the main article above) actually runs?

          1. I have posted a mac version in the link above. But I just realized, my instructions ask you to use SubtitleEdit, which is a windows program. It looks like you MIGHT be able to run SubtitleEdit on mac if you install Mono, but I’m not sure about that. Perhaps there is another tool that can convert your dvd/bluray subs into images+xml, then you can run it through my ocr tool. Otherwise, you might need to try using a windows machine after all, or see if you can get that other fellow’s program working.

          2. Almost worked.
            Used a virtual Pc to open SubtitleEdit and output to BDN xml/png.

            The “generate_srt_from_netfilx” failed the first time because it was looking for “API_KEY.txt” in the home folder instead of the local folder for some reason. Once I copied the API to the home older it launched as usual.

            The OCR process went fine but the output .srt file had crazy time codes:
            Instead of using the time codes from the BDN_Index.xml, it converted them (the actual time codes) into subtitles themselves and included them (along with the associated title numbers–also converted into subtitles) with the OCRed ones.

            screenshot of final .srt file:


          3. That’s weird, I guess there’s something different with the file handling in OSX. I’ll need to do some debugging. In the meantime maybe you can get the windows version working in the virtual pc as well. That was working fine for me on the subs you provided me to test with.

          4. Thanks.

            Tried the windows version virtually but always get a fatal error:
            “Error loading Python DLL ‘Z:/Users/kav/Desktop/Subs/generate srt (win)/python36.dll'”

          1. I see the issue. I’m outputting the timecodes in the wrong format for srt.
            I’m outputting as 00:01:02:03, but srt is supposed to be like 00:01:02,003
            The difference is the comma and the number of digits in the final part. The “jubler” software you are opening it up in apparently cant handle it correctly since its formatted wrong. However, I’ve been opening the srt in Subtitle Edit, which is able correctly parse the file despite it being wrong. Thus I never saw the problem in my own testing.

            I can probably fix this but I’ll need to think about a solution for a bit.

  10. Thanks a lot. I’ve been using your shared subs to make awesome Subs2SRS cards for some time now.
    But today I encounter the all too familiar situation of having only a couple of episode subs available in kitsunekko, being the rest of the season subs nowhere to be found.
    After looking into the Japanese Netflix and realizing they were available I finally tried your method for getting the subs. And it worked like a charm ๐Ÿ™‚ Thanks!!!

  11. The AhmedBafkir site is down. Hope it goes back up soon, have been spending several hours writing an autohotkey script to download stuff with it.

    1. Never mind, my download had just expired. Still though, would be best if we found some way that didn’t require relying on his IP addresses.

        1. Will do. It is fully functional now but only on my system, as it is accessing files from all sorts of random user directories on my computer instead of from one base folder. When I get some time I will wrap it all up for a public release.

          1. Aaaand it appears to be actually down this time, at least for me. Selecting a video file in Kodi no longer produces a new link for me in the .txt file. Can anyone else confirm?

  12. Will ask one more time. Could someone please check to see if the AhmedBafkir Kodi method works for anyone else? For finishing the development of my script I need to know if it’s just broken for me or broken for everyone.

    1. I got it working. I think something in kodi auto updated and things broke. I reinstalled everything from scratch and I can get a list of urls and download the subtitles from them.

      1. Thanks for confirming. I had to reinstall over 5 times before it started working again for some reason. Now I can do some more testing.

        1. I still (we all still?) have a bug where Kodi only shows the first 42 episodes of any given season but this isn’t a huge deal since most shows are shorter than that and we can get the image subs downloaded via the browser extension as a backup.

    2. I’ve been looking through the python code from the netflix plugin, and I am starting to get a rough idea of how it works. I have managed to modify it so that it can directly download the subtitle file for whatever language I hardcode into it. I’m just stumped right now on how to access some metadata like the show title or episode numbers, and without that I can’t save the subtitles with a meaningful filename.

      I also don’t think it would be easy or even possible to port to a browser based method.

        1. I’ve got it working pretty well right now. I’m going through and ripping subs for all of the Japanese netflix originals, its going really quickly. This is absolutely the way to go! Once I’ve tested it some more, I’ll post something up.

          1. Cool stuff. I’ve used my program to download basically all of the Netflix stuff I want but I still have the glitch that I can only get up to episode 42 as .srt. Anticipating your release so I can round out my collection.

  13. Hi. I was wondering, is there a way to extract many subs at a time (on a season basis for example)?.
    I’ve been trying to dowload the subs from the first Terrace House, but it’s either download one at the time or hitting the all remaining episodes (which on a VPN and a show with 50 episodes takes forever, and can, and did fail in the after a couple of hours).

    1. If you need Japanese subs for the first terrace house, those are included in the subtitle pack.

      I’m not sure what issue you are having with the subtitle downloader. You mean, you want to download a lot of episodes, but just not ALL the episodes? You can let it stop downloading whenever you want, and just continue from that episode later on if you need more.

      Within the next week or two I will be releasing something new for downloading subtitles, which might work a little better for you (or maybe not, who knows).

        1. You can use the PNG2SRT tool linked in the post to convert them. I can not do it because I don’t currently have enough free credit on the google api to convert much.

Leave a Reply

Your email address will not be published. Required fields are marked *