diff --git a/openstackclient/tests/unit/volume/v1/test_type.py b/openstackclient/tests/unit/volume/v1/test_type.py
index 23a1186dad..81ad8301e6 100644
--- a/openstackclient/tests/unit/volume/v1/test_type.py
+++ b/openstackclient/tests/unit/volume/v1/test_type.py
@@ -158,11 +158,13 @@ class TestTypeList(TestType):
 
     columns = (
         "ID",
-        "Name"
+        "Name",
+        "Is Public",
     )
     columns_long = (
         "ID",
         "Name",
+        "Is Public",
         "Properties"
     )
 
@@ -171,12 +173,14 @@ class TestTypeList(TestType):
         data.append((
             t.id,
             t.name,
+            t.is_public,
         ))
     data_long = []
     for t in volume_types:
         data_long.append((
             t.id,
             t.name,
+            t.is_public,
             utils.format_dict(t.extra_specs),
         ))
 
diff --git a/openstackclient/tests/unit/volume/v2/test_type.py b/openstackclient/tests/unit/volume/v2/test_type.py
index 84f87e3b19..325872d734 100644
--- a/openstackclient/tests/unit/volume/v2/test_type.py
+++ b/openstackclient/tests/unit/volume/v2/test_type.py
@@ -165,7 +165,8 @@ class TestTypeList(TestType):
 
     columns = [
         "ID",
-        "Name"
+        "Name",
+        "Is Public",
     ]
     columns_long = columns + [
         "Description",
@@ -177,12 +178,14 @@ class TestTypeList(TestType):
         data.append((
             t.id,
             t.name,
+            t.is_public,
         ))
     data_long = []
     for t in volume_types:
         data_long.append((
             t.id,
             t.name,
+            t.is_public,
             t.description,
             utils.format_dict(t.extra_specs),
         ))
diff --git a/openstackclient/volume/v1/volume_type.py b/openstackclient/volume/v1/volume_type.py
index 4f159239b5..8adce3221c 100644
--- a/openstackclient/volume/v1/volume_type.py
+++ b/openstackclient/volume/v1/volume_type.py
@@ -111,10 +111,10 @@ class ListVolumeType(command.Lister):
 
     def take_action(self, parsed_args):
         if parsed_args.long:
-            columns = ('ID', 'Name', 'Extra Specs')
-            column_headers = ('ID', 'Name', 'Properties')
+            columns = ('ID', 'Name', 'Is Public', 'Extra Specs')
+            column_headers = ('ID', 'Name', 'Is Public', 'Properties')
         else:
-            columns = ('ID', 'Name')
+            columns = ('ID', 'Name', 'Is Public')
             column_headers = columns
         data = self.app.client_manager.volume.volume_types.list()
         return (column_headers,
diff --git a/openstackclient/volume/v2/volume_type.py b/openstackclient/volume/v2/volume_type.py
index d0df677dcf..42ebb53e99 100644
--- a/openstackclient/volume/v2/volume_type.py
+++ b/openstackclient/volume/v2/volume_type.py
@@ -176,10 +176,11 @@ class ListVolumeType(command.Lister):
 
     def take_action(self, parsed_args):
         if parsed_args.long:
-            columns = ['ID', 'Name', 'Description', 'Extra Specs']
-            column_headers = ['ID', 'Name', 'Description', 'Properties']
+            columns = ['ID', 'Name', 'Is Public', 'Description', 'Extra Specs']
+            column_headers = [
+                'ID', 'Name', 'Is Public', 'Description', 'Properties']
         else:
-            columns = ['ID', 'Name']
+            columns = ['ID', 'Name', 'Is Public']
             column_headers = columns
 
         is_public = None
diff --git a/releasenotes/notes/bug-1643861-b17ad5dfcb4304ff.yaml b/releasenotes/notes/bug-1643861-b17ad5dfcb4304ff.yaml
new file mode 100644
index 0000000000..f69cbb6a43
--- /dev/null
+++ b/releasenotes/notes/bug-1643861-b17ad5dfcb4304ff.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - Add ``Is Public`` column to ``volume type list``.
+    [Bug `1643861 <https://bugs.launchpad.net/python-openstackclient/+bug/1643861>`_]