diff --git a/SickBeard.py b/SickBeard.py
index d95746383c94f4e6e954a2c5b3b0e41b2f8f94ca..bf37a9292d09a653f14dffb4e32ff6e120c3c3ad 100755
--- a/SickBeard.py
+++ b/SickBeard.py
@@ -474,32 +474,6 @@ class SickRage(object):
                     logger.ERROR)
                 logger.log(traceback.format_exc(), logger.DEBUG)
 
-        self.fix_subtitles_codes()
-
-
-    def fix_subtitles_codes(self):
-        myDB = db.DBConnection()
-        sqlResults = myDB.select(
-            "SELECT showid, subtitles_lastsearch, season, episode FROM tv_episodes " +
-            "WHERE subtitles != '' AND subtitles_lastsearch < ?;",
-                [datetime.datetime(2015, 7, 15, 17, 20, 44, 326380).strftime("%Y-%m-%d %H:%M:%S")])
-
-        if not sqlResults:
-            return
-
-        logger.log("Fixing old subtitle codes")
-        for sqlResult in sqlResults:
-            showObj = sickbeard.helpers.findCertainShow(sickbeard.showList, int(sqlResult['showid']))
-            if not showObj:
-                continue
-
-            epObj = showObj.getEpisode(int(sqlResult["season"]), int(sqlResult["episode"]))
-            if isinstance(epObj, str):
-                continue
-
-            epObj.refreshSubtitles()
-            epObj.subtitles_lastsearch = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
-            epObj.saveToDB()
 
     def restoreDB(self, srcDir, dstDir):
         try:
diff --git a/sickbeard/databases/mainDB.py b/sickbeard/databases/mainDB.py
index 2742bc70bf916ddd7f79dcf58a183a5a86198d93..84284955ba9017086257fbccde4429db74dad435 100644
--- a/sickbeard/databases/mainDB.py
+++ b/sickbeard/databases/mainDB.py
@@ -26,6 +26,8 @@ from sickbeard import db, common, helpers, logger
 from sickbeard import encodingKludge as ek
 from sickbeard.name_parser.parser import NameParser, InvalidNameException, InvalidShowException
 
+from babelfish import Language
+
 MIN_DB_VERSION = 9  # oldest db version we support migrating from
 MAX_DB_VERSION = 42
 
@@ -39,6 +41,7 @@ class MainSanityCheck(db.DBSanityCheck):
         self.fix_tvrage_show_statues()
         self.fix_episode_statuses()
         self.fix_invalid_airdates()
+        self.fix_subtitles_codes()
 
     def fix_duplicate_shows(self, column='indexer_id'):
 
@@ -192,6 +195,35 @@ class MainSanityCheck(db.DBSanityCheck):
         else:
             logger.log(u"No bad episode airdates, check passed", logger.DEBUG)
 
+    def fix_subtitles_codes(self):
+
+        sqlResults = self.connection.select(
+            "SELECT subtitles, episode_id FROM tv_episodes WHERE subtitles != '' AND subtitles_lastsearch < ?;",
+                [datetime.datetime(2015, 7, 15, 17, 20, 44, 326380).strftime("%Y-%m-%d %H:%M:%S")])
+
+        if not sqlResults:
+            return
+
+        for sqlResult in sqlResults:
+            langs = []
+
+            logger.log("Checking subtitle codes for episode_id: %s, codes: %s" %
+                (sqlResult['episode_id'], sqlResult['subtitles']), logger.DEBUG)
+
+            for subcode in sqlResult['subtitles'].split(','):
+                try:
+                    Language.fromopensubtitles(subcode)
+                except Exception:
+                    logger.log("Fixing subtitle codes for episode_id: %s, invalid code: %s" %
+                        (sqlResult['episode_id'], subcode), logger.DEBUG)
+                    continue
+
+                langs.append(subcode)
+
+            self.connection.action("UPDATE tv_episodes SET subtitles = ?, subtitles_lastsearch = ? WHERE episode_id = ?;",
+                [','.join(langs), datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"), sqlResult['episode_id']])
+
+
 def backupDatabase(version):
     logger.log(u"Backing up database before upgrade")
     if not helpers.backupVersionedFile(db.dbFilename(), version):