27 votes

Subsync is a stellar program that should have an active maintainer

Subsync is a program that will sync any subtitle file based on either audio or another subtitle. It is remarkably good at syncing any subtitle you throw at it. I never encountered anything even remotely as good as Subsync for that task.

Unfortunately, the author archived it due to some technical reasons as well as bad interactions with users. I don't believe there is anything as good out there when it comes to syncing broken subtitles. Subsync still works, but I don't know for how long. I am not a programmer. I am posting this as a call for help: if anyone is interested in maintaining this program, I think it would be of great help to a lot of people.

Right now, Subsync is a manual tool with a graphical interface. But I foresee it working in the background with programs like VLC, Plex, or Stremio. That would be awesome.


EDIT

Subsync is automated and language aware. It will sync individual lines using audio or another subtitle as a reference. It won't just shift everything; it will adjust them individually. It is usually not necessary to go through the entire file, but you can do it for badly synced subtitles. Adjusting every single subtitle will take more time, but you can do it.

Merely shifting all the subtitles won't work for older TV shows because of the breaks. Depending on the version (DVD, Blu-Ray, WEB, or recorded directly from TV), the ad breaks will be edited slightly differently, with different delay times before resuming the show. That is enough for the subtitles to lose sync after every act. There is also the issue of frame rate and perhaps other video features, which I believe can also unsync subtitles. I probably have more issues with subtitles than most because I mostly watch older or classic TV content.

(Adapted for clarification from my response below)

10 comments

  1. kacey
    (edited )
    Link
    My time's a little limited, but I'll be able to contribute to open source projects again soon-ish. From looking at the repo, a reasonably quick contribution could be containerizing the build...

    My time's a little limited, but I'll be able to contribute to open source projects again soon-ish. From looking at the repo, a reasonably quick contribution could be containerizing the build system + cleaning it up a little. Doing so while preserving my sanity would probably mean focusing on generating binaries for Linux alone, which seems modestly doable in 2025 (Windows and macOS seem to provide support for launching them, with varying degrees of pain).

    ^ would that be helpful, do you figure? I've never used subsync before, so I don't know if -- for example -- the target userbase wouldn't be able to jump through the necessary hoops to get that working.

    (edit) For context, the architecture doc is a decent overview of what the project is. In effect, it's an early ML voice recognition library (pocketsphinx) bolted onto a subtitle reader which attempts to heuristically line them up. Not really rocket science these days either. Tbh a ground up rewrite might be faster than saving the existing project, but it'd lose the name recognition.

    5 votes
  2. [8]
    xk3
    (edited )
    Link
    How does it compare to Subtitle Edit? In my experience most subtitles are simply time-shifted and can be adjusted via keyboard shortcuts. For example, in mpv: ctrl+LEFT sub-step -1 # change...

    How does it compare to Subtitle Edit?

    In my experience most subtitles are simply time-shifted and can be adjusted via keyboard shortcuts. For example, in mpv:

    ctrl+LEFT sub-step -1  # change subtitle timing such that the previous subtitle is displayed
    ctrl+RIGHT sub-step 1  # change subtitle timing such that the next subtitle is displayed
    
    alt+up    add sub-delay -0.1
    alt+down  add sub-delay +0.1
    ctrl+DOWN set sub-delay 0 # reset subtitle delay
    

    If you're dealing with different fps like PAL subtitles on NTSC, this can often help:

    ctrl+shift+LEFT add sub-speed +0.001
    ctrl+shift+DOWN set sub-speed 1
    ctrl+shift+RIGHT add sub-speed -0.001
    

    I empathize with you. It's difficult to see software that you rely on stop being maintained. Given the nature of the tool, it will probably keep working for a long time without any changes. But it looks like there are also a lot of other options too.

    4 votes
    1. [7]
      lou
      (edited )
      Link Parent
      Subsync is another kind of program. It is automated and language aware. It will sync individual lines using audio or another subtitle as a reference. It won't just shift everything; it will adjust...

      Subsync is another kind of program. It is automated and language aware. It will sync individual lines using audio or another subtitle as a reference. It won't just shift everything; it will adjust them individually. It is usually not necessary to adjust every line, but you can do it if you want, and that is sometimes necessary for badly synced subtitles. Adjusting every single subtitle will take more time, but you can do it.

      In my experience most subtitles are simply time-shifted and can be adjusted via keyboard shortcuts. For example, in mpv:

      That won't work for TV shows because of the breaks. Depending on the version (DVD, Blu-Ray, WEB, or recorded directly from TV), the ad breaks will be edited slightly differently, with different delay times before resuming the show. That is enough for the subtitles to lose sync after every act. There is also the issue of frame rate and perhaps other video features, which I believe can also unsync subtitles.

      I probably have more issues with subtitles than most because I mostly watch older or classic TV content.


      EDIT: I adapted this comment into the main post.
      EDIT2: Thanks!

      5 votes
      1. [6]
        pienix
        Link Parent
        I've used Subsync for, I don't know, a decade or something, and was really bummed to hear it was not being supported anymore. As you say, for now it still works, but it's just a matter of time,...

        I've used Subsync for, I don't know, a decade or something, and was really bummed to hear it was not being supported anymore. As you say, for now it still works, but it's just a matter of time, probably. I'm definitely not the one to take it up, though. I have the source code, and might be able to keep it running in python, but I have no idea. We'll see.

        One thing, though, I'm not sure it adjusts every subtitle independently. If you look at what it's doing during the process, it shows something like (<number>x+<number>). For me this means that it's just a linear transformation i.e.: stretch and shift (so definitely more than just shift), which is usually enough but doesn't work for every subtitle.

        I haven't tried it yet, but in terms of functionality, the following comes close:
        https://github.com/smacke/ffsubsync

        No gui, though, so there is some technical skill required.

        4 votes
        1. [3]
          tomf
          Link Parent
          any chance you watch a rip of SNL using Kodi? The subs are always out of sync and I never know why. I tried to fix it with this, but no dice.

          any chance you watch a rip of SNL using Kodi? The subs are always out of sync and I never know why. I tried to fix it with this, but no dice.

          2 votes
          1. [2]
            pienix
            Link Parent
            No, unfortunately. But if there are commercials that have been cut out, and there are different rips around, that cut out the commercials with slightly different timestamps, such a linear...

            No, unfortunately. But if there are commercials that have been cut out, and there are different rips around, that cut out the commercials with slightly different timestamps, such a linear transformation will not do the trick if you have the subs for a different rip.

            3 votes
            1. tomf
              Link Parent
              it’s weird because it isn’t off like that, it’s a gradual drift. i see it some up every so often and some say it’s an issue with the mkv container — but i don’t see why. i need to properly fix an...

              it’s weird because it isn’t off like that, it’s a gradual drift. i see it some up every so often and some say it’s an issue with the mkv container — but i don’t see why.

              i need to properly fix an episode one to know for sure. :)

              1 vote
        2. [2]
          lou
          Link Parent
          I think you're right. It does seem to shift in a way that will make the most lines sync or get close it. Which is often good enough but not always.

          For me this means that it's just a linear transformation

          I think you're right. It does seem to shift in a way that will make the most lines sync or get close it. Which is often good enough but not always.

          2 votes
          1. Carrow
            Link Parent
            I think the ffsubsync above is the tool Bazarr uses built-in. In case you aren't familiar, Bazarr is very handy for subtitle management. You can set it to sync subtitles after it downloads/imports...

            I think the ffsubsync above is the tool Bazarr uses built-in. In case you aren't familiar, Bazarr is very handy for subtitle management. You can set it to sync subtitles after it downloads/imports them, I forget if it is on by default. But it can also run a custom command per file after it imports, if Subsync supports CLI, it could be used instead. I call a python script to clean the text up.

            I wouldn't recommend using Bazaar's built in sync for every subtitle by default though. As I recall, it goofed some previously synced subtitles doing so. But you can set the settings, import some shows, swap the settings, import different one.

            https://www.bazarr.media/

            3 votes
  3. 3WolfMoon
    Link
    Sushi is a similar program which also hasn't received maintenance in a long time but still works if you're able to meet the dependencies. A Python 3 fork apparently exists, though I haven't used...

    Sushi is a similar program which also hasn't received maintenance in a long time but still works if you're able to meet the dependencies. A Python 3 fork apparently exists, though I haven't used it myself.

    2 votes