diff --git a/README.md b/README.md
index 2aeb4939ebe09dd1591b364cbde88901d45d318c..9cbc258b1b58877b0f78b772ec39954d068aff0a 100644
--- a/README.md
+++ b/README.md
@@ -41,6 +41,18 @@ Nautilus, the default file manager of GNOME.
 
 Please note that mat2 requires at least Python3.5.
 
+# Requirements setup on macOS (OS X) using Homewbrew
+
+```bash
+brew install exiftool
+brew install cairo
+brew install pygobject3
+brew install poppler
+brew install gdk-pixbuf
+brew install librsvg
+brew install ffmpeg
+```
+
 # Running the test suite
 
 ```bash
diff --git a/libmat2/bubblewrap.py b/libmat2/bubblewrap.py
index 7a70635b0e86e7a60e39ecfbad09ac5717a7a68f..b859cf7dfb43e04da156ca99f89b7b35c58a2e1d 100644
--- a/libmat2/bubblewrap.py
+++ b/libmat2/bubblewrap.py
@@ -22,6 +22,10 @@ CalledProcessError = subprocess.CalledProcessError
 
 
 def _get_bwrap_path() -> str:
+    which_path = shutil.which('bwrap')
+    if which_path is not None and os.access(which_path, os.X_OK):
+        return which_path
+
     bwrap_path = '/usr/bin/bwrap'
     if os.path.isfile(bwrap_path):
         if os.access(bwrap_path, os.X_OK):
diff --git a/libmat2/exiftool.py b/libmat2/exiftool.py
index 1ce60a123e481810395076b1c57308a3d456a9fe..091213a98b0596d390c54e492823e5e8de94d6fb 100644
--- a/libmat2/exiftool.py
+++ b/libmat2/exiftool.py
@@ -2,6 +2,7 @@ import functools
 import json
 import logging
 import os
+import shutil
 import subprocess
 from typing import Dict, Union, Set
 
@@ -71,6 +72,10 @@ class ExiftoolParser(abstract.AbstractParser):
 
 @functools.lru_cache()
 def _get_exiftool_path() -> str:  # pragma: no cover
+    which_path = shutil.which('exiftool')
+    if which_path is not None and os.access(which_path, os.X_OK):
+        return which_path
+
     possible_pathes = {
         '/usr/bin/exiftool',              # debian/fedora
         '/usr/bin/vendor_perl/exiftool',  # archlinux
diff --git a/libmat2/video.py b/libmat2/video.py
index 2b33bc0aec16521827e9b67ac53961feac008295..f513e61b249c920c4b1d1ea46bceedb66982af91 100644
--- a/libmat2/video.py
+++ b/libmat2/video.py
@@ -1,6 +1,7 @@
 import subprocess
 import functools
 import os
+import shutil
 import logging
 
 from typing import Dict, Union
@@ -137,6 +138,10 @@ class MP4Parser(AbstractFFmpegParser):
 
 @functools.lru_cache()
 def _get_ffmpeg_path() -> str:  # pragma: no cover
+    which_path = shutil.which('ffmpeg')
+    if which_path is not None and os.access(which_path, os.X_OK):
+        return which_path
+
     ffmpeg_path = '/usr/bin/ffmpeg'
     if os.path.isfile(ffmpeg_path):
         if os.access(ffmpeg_path, os.X_OK):