diff --git a/tools/binman/bintool.py b/tools/binman/bintool.py
index 7676ac9..ec30cef 100644
--- a/tools/binman/bintool.py
+++ b/tools/binman/bintool.py
@@ -73,17 +73,25 @@
         # interested in the type.
         module_name = btype.replace('-', '_')
         module = modules.get(module_name)
+        class_name = f'Bintool{module_name}'
 
         # Import the module if we have not already done so
         if not module:
             try:
                 module = importlib.import_module('binman.btool.' + module_name)
             except ImportError as exc:
-                return module_name, exc
+                try:
+                    # Deal with classes which must be renamed due to conflicts
+                    # with Python libraries
+                    class_name = f'Bintoolbtool_{module_name}'
+                    module = importlib.import_module('binman.btool.btool_' +
+                                                     module_name)
+                except ImportError:
+                    return module_name, exc
             modules[module_name] = module
 
         # Look up the expected class name
-        return getattr(module, 'Bintool%s' % module_name)
+        return getattr(module, class_name)
 
     @staticmethod
     def create(name):
diff --git a/tools/binman/btool/btool_gzip.py b/tools/binman/btool/btool_gzip.py
new file mode 100644
index 0000000..7bea300
--- /dev/null
+++ b/tools/binman/btool/btool_gzip.py
@@ -0,0 +1,31 @@
+# SPDX-License-Identifier: GPL-2.0+
+# Copyright (C) 2022 Weidmüller Interface GmbH & Co. KG
+# Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com>
+#
+"""Bintool implementation for gzip
+
+gzip allows compression and decompression of files.
+
+Documentation is available via::
+
+   man gzip
+"""
+
+from binman import bintool
+
+# pylint: disable=C0103
+class Bintoolbtool_gzip(bintool.BintoolPacker):
+    """Compression/decompression using the gzip algorithm
+
+    This bintool supports running `gzip` to compress and decompress data, as
+    used by binman.
+
+    It is also possible to fetch the tool, which uses `apt` to install it.
+
+    Documentation is available via::
+
+        man gzip
+    """
+    def __init__(self, name):
+        super().__init__(name, compress_args=[],
+                         version_regex=r'gzip ([0-9.]+)')
diff --git a/tools/binman/entry.py b/tools/binman/entry.py
index 0cd5b8b..84a3036 100644
--- a/tools/binman/entry.py
+++ b/tools/binman/entry.py
@@ -1191,7 +1191,7 @@
         """
         algo = self.compress
         if algo != 'none':
-            algos = ['bzip2', 'lz4', 'lzma']
+            algos = ['bzip2', 'gzip', 'lz4', 'lzma']
             if algo not in algos:
                 raise ValueError("Unknown algorithm '%s'" % algo)
             names = {'lzma': 'lzma_alone'}
diff --git a/tools/binman/ftest.py b/tools/binman/ftest.py
index 8bd3968..5275855 100644
--- a/tools/binman/ftest.py
+++ b/tools/binman/ftest.py
@@ -107,7 +107,7 @@
 REPACK_DTB_PROPS = ['orig-offset', 'orig-size']
 
 # Supported compression bintools
-COMP_BINTOOLS = ['bzip2', 'lz4', 'lzma_alone']
+COMP_BINTOOLS = ['bzip2', 'gzip', 'lz4', 'lzma_alone']
 
 class TestFunctional(unittest.TestCase):
     """Functional tests for binman
