diff --git a/bin/is b/bin/is
index 487f856a041796618b1761b2c3d5906ed9f23748..2499fb57977b67275076aaff4469162ee2223c05 100755
--- a/bin/is
+++ b/bin/is
@@ -99,6 +99,14 @@ def c_cat(parser, args):
     for filename in args.file:
         img.cat(filename)
 
+def c_check(parser, args):
+    '''
+    Check for unreferenced and missing files inside a repository
+    '''
+    repoman = load_repositories(args)
+    for reponame in args.repository:
+        repoman[reponame].check()
+
 def c_clean(parser, args):
     '''
     Clean a repository
@@ -320,6 +328,11 @@ p_cat.add_argument("file", nargs="+",
                    help="file inside image to cat (globbing allowed)")
 p_cat.set_defaults(func=c_cat)
 
+# check command parser
+p_check = subparsers.add_parser("check", help=c_check.__doc__.lower())
+p_check.add_argument("repository", nargs="+", help="repositories to check")
+p_check.set_defaults(func=c_check)
+
 # clean command parser
 p_clean = subparsers.add_parser("clean", help=c_clean.__doc__.lower())
 p_clean.add_argument("repository", nargs="+", help="repositories to clean")
diff --git a/installsystems/repository.py b/installsystems/repository.py
index 3664c2f6e15f52d86fde385bb8cb8e659deb757d..858b528ec7b590c3772e186ec3787ce2fc56a430 100644
--- a/installsystems/repository.py
+++ b/installsystems/repository.py
@@ -182,6 +182,27 @@ class Repository(object):
         res = self.db.ask("SELECT md5 FROM image UNION SELECT md5 FROM payload").fetchall()
         return [ md5[0] for md5 in res ]
 
+    def check(self):
+        '''
+        Check repository for unreferenced and missing files
+        '''
+        # Check if the repo is local
+        if not istools.isfile(self.config.path):
+            raise Exception("Repository must be local")
+        local_files = set(os.listdir(self.config.path))
+        db_files = set(self.getallmd5())
+        db_files.add(self.config.dbname)
+        db_files.add( self.config.lastname)
+        # compute missing and unref files list
+        missing_files = db_files - local_files
+        unref_files = local_files - db_files
+        if len(missing_files) > 0:
+            arrow("Missing files:")
+            out(os.linesep.join(missing_files))
+        if len(unref_files) > 0:
+            arrow("Unreferenced files:")
+            out(os.linesep.join(unref_files))
+
     def clean(self):
         '''
         Clean the repository's content