diff --git a/libmat2/__init__.py b/libmat2/__init__.py
index 41c2395b3d112af085e552100cf87c1c409b2ac7..501baaae437f2dc1a00663214500dcd65994406e 100644
--- a/libmat2/__init__.py
+++ b/libmat2/__init__.py
@@ -30,35 +30,65 @@ UNSUPPORTED_EXTENSIONS = {
     }
 
 DEPENDENCIES = {
-    'Cairo': 'cairo',
-    'PyGobject': 'gi',
-    'GdkPixbuf from PyGobject': 'gi.repository.GdkPixbuf',
-    'Poppler from PyGobject': 'gi.repository.Poppler',
-    'GLib from PyGobject': 'gi.repository.GLib',
-    'Mutagen': 'mutagen',
-    }
+    'Cairo': {
+        'module': 'cairo',
+        'required': True,
+    },
+    'PyGobject': {
+        'module': 'gi',
+        'required': True,
+    },
+    'GdkPixbuf from PyGobject': {
+        'module': 'gi.repository.GdkPixbuf',
+        'required': True,
+    },
+    'Poppler from PyGobject': {
+        'module': 'gi.repository.Poppler',
+        'required': True,
+    },
+    'GLib from PyGobject': {
+        'module': 'gi.repository.GLib',
+        'required': True,
+    },
+    'Mutagen': {
+        'module': 'mutagen',
+        'required': True,
+    },
+}
 
 CMD_DEPENDENCIES = {
-    'Exiftool': exiftool._get_exiftool_path,
-    'Ffmpeg': video._get_ffmpeg_path,
-    }
+    'Exiftool': {
+        'cmd': exiftool._get_exiftool_path,
+        'required': False,
+    },
+    'Ffmpeg': {
+        'cmd': video._get_ffmpeg_path,
+        'required': False,
+    },
+}
 
-def check_dependencies() -> Dict[str, bool]:
+def check_dependencies() -> Dict[str, Dict[str, bool]]:
     ret = collections.defaultdict(bool)  # type: Dict[str, bool]
 
     for key, value in DEPENDENCIES.items():
-        ret[key] = True
+        ret[key] = {
+            'found': True,
+            'required': value['required'],
+        }
         try:
-            importlib.import_module(value)
+            importlib.import_module(value['module'])
         except ImportError:  # pragma: no cover
-            ret[key] = False  # pragma: no cover
+            ret[key]['found'] = False
 
     for k, v in CMD_DEPENDENCIES.items():
-        ret[k] = True
+        ret[k] = {
+            'found': True,
+            'required': v['required'],
+        }
         try:
-            v()
+            v['cmd']()
         except RuntimeError:  # pragma: no cover
-            ret[k] = False
+            ret[k]['found'] = False
 
     return ret
 
diff --git a/mat2 b/mat2
index 4773c85117aec1d2570afc35c96a7833e23f674c..d32716fbfe308ab0ecaaa535ec63aefc88ff0a75 100755
--- a/mat2
+++ b/mat2
@@ -165,9 +165,10 @@ def main() -> int:
             show_parsers()
             return 0
         elif args.check_dependencies:
-            print("Dependencies required for MAT2 %s:" % __version__)
+            print("Dependencies for MAT2 %s:" % __version__)
             for key, value in sorted(check_dependencies().items()):
-                print('- %s: %s' % (key, 'yes' if value else 'no'))
+                print('- %s: %s %s' % (key, 'yes' if value['found'] else 'no',
+                                       '(optional)' if not value['required'] else ''))
         else:
             arg_parser.print_help()
         return 0
diff --git a/tests/test_libmat2.py b/tests/test_libmat2.py
index de5f67c7f85ecdac98b4ce699eb2f584b812a9c8..64e679f8866c939f8d26bf332d3de1b356a5730b 100644
--- a/tests/test_libmat2.py
+++ b/tests/test_libmat2.py
@@ -16,7 +16,8 @@ class TestCheckDependencies(unittest.TestCase):
     def test_deps(self):
         ret = check_dependencies()
         for key, value in ret.items():
-            self.assertTrue(value, "The value for %s is False" % key)
+            if value['required']:
+                self.assertTrue(value['found'], "The value for %s is False" % key)
 
 
 class TestParserFactory(unittest.TestCase):