diff --git a/src/images.py b/src/images.py
index 06f3e22d9c52814a774e70607f4cdffb32527e70..707207b51357db18a034bb099ccbac080b8f06e8 100644
--- a/src/images.py
+++ b/src/images.py
@@ -75,3 +75,17 @@ class TiffParser(GdkPixbufAbstractParser):
             'FileTypeExtension', 'ImageHeight', 'ImageSize', 'ImageWidth',
             'MIMEType', 'Megapixels', 'SourceFile'}
 
+
+class BMPParser(GdkPixbufAbstractParser):
+    mimetypes = {'image/bmp', 'image/x-ms-bmp'}
+    meta_whitelist = {'SourceFile', 'ExifToolVersion', 'FileName', 'Directory',
+            'FileSize', 'FileModifyDate', 'FileAccessDate',
+            'FileInodeChangeDate', 'FilePermissions', 'FileType',
+            'FileTypeExtension', 'MIMEType', 'BMPVersion', 'ImageWidth',
+            'ImageHeight', 'Planes', 'BitDepth', 'Compression', 'ImageLength',
+            'PixelsPerMeterX', 'PixelsPerMeterY', 'NumColors',
+            'NumImportantColors', 'RedMask', 'GreenMask', 'BlueMask',
+            'AlphaMask', 'ColorSpace', 'RedEndpoint', 'GreenEndpoint',
+            'BlueEndpoint', 'GammaRed', 'GammaGreen', 'GammaBlue', 'ImageSize',
+            'Megapixels'}
+
diff --git a/tests/data/dirty.bmp b/tests/data/dirty.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..be9094d1f8e9f9e9ae0584863c2aa6cb48b7f05d
Binary files /dev/null and b/tests/data/dirty.bmp differ
diff --git a/tests/test_libmat2.py b/tests/test_libmat2.py
index 34f7301845fd326721e7951e300ead8c3677a040..ae04dc2cd0b454bcd4da343b37d16b9e1c5cff42 100644
--- a/tests/test_libmat2.py
+++ b/tests/test_libmat2.py
@@ -307,3 +307,18 @@ class TestCleaning(unittest.TestCase):
         self.assertEqual(p.get_meta(), {})
 
         os.remove('./tests/data/clean.tiff')
+
+    def test_bmp(self):
+        shutil.copy('./tests/data/dirty.bmp', './tests/data/clean.bmp')
+        p = images.BMPParser('./tests/data/clean.bmp')
+
+        meta = p.get_meta()
+        self.assertEqual(meta, {})  # bmp has no meta :)
+
+        ret = p.remove_all()
+        self.assertTrue(ret)
+
+        p = images.BMPParser('./tests/data/clean.bmp.cleaned')
+        self.assertEqual(p.get_meta(), {})
+
+        os.remove('./tests/data/clean.bmp')