diff --git a/docs/customization.md b/docs/customization.md
index 5376b621e6cbe0cd7936028499503c157b9d8ea4..c63f71472ce0a44f0944384822876709932aa7b9 100644
--- a/docs/customization.md
+++ b/docs/customization.md
@@ -477,3 +477,10 @@ Example:
 ```
 java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar generate -g java -i modules/openapi-generator/src/test/resources/3_0/simplifyAnyOfStringAndEnumString_test.yaml -o /tmp/java-okhttp/ --openapi-normalizer SIMPLIFY_ANYOF_STRING_AND_ENUM_STRING=true
 ```
+
+- `SIMPLIFY_BOOLEAN_ENUM`: when set to `true`, convert boolean enum to just enum.
+
+Example:
+```
+java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar generate -g java -i modules/openapi-generator/src/test/resources/3_0/simplifyBooleanEnum_test.yaml -o /tmp/java-okhttp/ --openapi-normalizer SIMPLIFY_BOOLEAN_ENUM=true
+```
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/OpenAPINormalizer.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/OpenAPINormalizer.java
index b4ec2e1ea03c57c28c69a1b6bdf402d322157b6a..639e1bdac2d92b3984438885754eac29cedda8a7 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/OpenAPINormalizer.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/OpenAPINormalizer.java
@@ -63,6 +63,10 @@ public class OpenAPINormalizer {
     final String SIMPLIFY_ANYOF_STRING_AND_ENUM_STRING = "SIMPLIFY_ANYOF_STRING_AND_ENUM_STRING";
     boolean simplifyAnyOfStringAndEnumString;
 
+    // when set to true, boolean enum will be converted to just boolean
+    final String SIMPLIFY_BOOLEAN_ENUM = "SIMPLIFY_BOOLEAN_ENUM";
+    boolean simplifyBooleanEnum;
+
     // ============= end of rules =============
 
     /**
@@ -106,6 +110,10 @@ public class OpenAPINormalizer {
         if (enableAll || "true".equalsIgnoreCase(rules.get(SIMPLIFY_ANYOF_STRING_AND_ENUM_STRING))) {
             simplifyAnyOfStringAndEnumString = true;
         }
+
+        if (enableAll || "true".equalsIgnoreCase(rules.get(SIMPLIFY_BOOLEAN_ENUM))) {
+            simplifyBooleanEnum = true;
+        }
     }
 
     /**
@@ -301,11 +309,11 @@ public class OpenAPINormalizer {
             visitedSchemas.add(schema);
         }
 
-        if (schema instanceof ArraySchema) {
+        if (schema instanceof ArraySchema) { // array
             normalizeSchema(schema.getItems(), visitedSchemas);
         } else if (schema.getAdditionalProperties() instanceof Schema) { // map
             normalizeSchema((Schema) schema.getAdditionalProperties(), visitedSchemas);
-        } else if (ModelUtils.isComposedSchema(schema)) {
+        } else if (ModelUtils.isComposedSchema(schema)) { // composed schema
             ComposedSchema cs = (ComposedSchema) schema;
 
             if (ModelUtils.isComplexComposedSchema(cs)) {
@@ -337,6 +345,8 @@ public class OpenAPINormalizer {
             normalizeSchema(schema.getNot(), visitedSchemas);
         } else if (schema.getProperties() != null && !schema.getProperties().isEmpty()) {
             normalizeProperties(schema.getProperties(), visitedSchemas);
+        } else if (schema instanceof BooleanSchema) {
+            normalizeBooleanSchema(schema, visitedSchemas);
         } else if (schema instanceof Schema) {
             normalizeSchemaWithOnlyProperties(schema, visitedSchemas);
         } else {
@@ -346,6 +356,10 @@ public class OpenAPINormalizer {
         return schema;
     }
 
+    private void normalizeBooleanSchema(Schema schema, Set<Schema> visitedSchemas) {
+        processSimplifyBooleanEnum(schema);
+    }
+
     private void normalizeSchemaWithOnlyProperties(Schema schema, Set<Schema> visitedSchemas) {
         // normalize non-composed schema (e.g. schema with only properties)
     }
@@ -476,7 +490,6 @@ public class OpenAPINormalizer {
      * @param schema Schema
      */
     private void processRemoveAnyOfOneOfAndKeepPropertiesOnly(Schema schema) {
-
         if (!removeAnyOfOneOfAndKeepPropertiesOnly && !enableAll) {
             return;
         }
@@ -528,5 +541,25 @@ public class OpenAPINormalizer {
         }
     }
 
+    /**
+     * If the schema is boolean and its enum is defined,
+     * then simply it to just boolean.
+     *
+     * @param schema Schema
+     * @return Schema
+     */
+    private void processSimplifyBooleanEnum(Schema schema) {
+        if (!simplifyBooleanEnum && !enableAll) {
+            return;
+        }
+
+        if (schema instanceof BooleanSchema) {
+            BooleanSchema bs = (BooleanSchema) schema;
+            if (bs.getEnum() != null && !bs.getEnum().isEmpty()) { // enum defined
+                bs.setEnum(null);
+            }
+        }
+    }
+
     // ===================== end of rules =====================
 }
diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java
index 0414e03457b43edb8f0e3adb5c330f7001764a9f..103c8a05cb7174837fd9eb80a1febfc2d32ae3bc 100644
--- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java
+++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java
@@ -4394,4 +4394,27 @@ public class DefaultCodegenTest {
         assertNull(schema3.getAnyOf());
         assertTrue(schema3 instanceof StringSchema);
     }
+
+    @Test
+    public void testOpenAPINormalizerSimplifyBooleanEnum() {
+        // to test the rule SIMPLIFY_BOOLEAN_ENUM
+        OpenAPI openAPI = TestUtils.parseSpec("src/test/resources/3_0/simplifyBooleanEnum_test.yaml");
+
+        Schema schema = openAPI.getComponents().getSchemas().get("BooleanEnumTest");
+        assertEquals(schema.getProperties().size(), 3);
+        assertTrue(schema.getProperties().get("boolean_enum") instanceof BooleanSchema);
+        BooleanSchema bs = (BooleanSchema) schema.getProperties().get("boolean_enum");
+        assertEquals(bs.getEnum().size(), 2);
+
+        Map<String, String> options = new HashMap<>();
+        options.put("SIMPLIFY_BOOLEAN_ENUM", "true");
+        OpenAPINormalizer openAPINormalizer = new OpenAPINormalizer(openAPI, options);
+        openAPINormalizer.normalize();
+
+        Schema schema3 = openAPI.getComponents().getSchemas().get("BooleanEnumTest");
+        assertEquals(schema.getProperties().size(), 3);
+        assertTrue(schema.getProperties().get("boolean_enum") instanceof BooleanSchema);
+        BooleanSchema bs2 = (BooleanSchema) schema.getProperties().get("boolean_enum");
+        assertNull(bs2.getEnum()); //ensure the enum has been erased
+    }
 }
diff --git a/modules/openapi-generator/src/test/resources/3_0/simplifyBooleanEnum_test.yaml b/modules/openapi-generator/src/test/resources/3_0/simplifyBooleanEnum_test.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..270dfcea64152f250d6aee1bfb02a3448d1dd4fb
--- /dev/null
+++ b/modules/openapi-generator/src/test/resources/3_0/simplifyBooleanEnum_test.yaml
@@ -0,0 +1,43 @@
+openapi: 3.0.1
+info:
+  version: 1.0.0
+  title: Example
+  license:
+    name: MIT
+servers:
+  - url: http://api.example.xyz/v1
+paths:
+  /person/display/{personId}:
+    get:
+      parameters:
+        - name: personId
+          in: path
+          required: true
+          description: The id of the person to retrieve
+          schema:
+            type: string
+      operationId: list
+      responses:
+        '200':
+          description: OK
+          content:
+            application/json:
+              schema:
+                $ref: "#/components/schemas/BooleanEnumTest"
+components:
+  schemas:
+    BooleanEnumTest:
+      description: a model to with boolean enum property
+      type: object
+      properties:
+        id:
+          type: integer
+          format: int64
+        name:
+          type: string
+          pattern: '^[a-zA-Z0-9]+[a-zA-Z0-9\.\-_]*[a-zA-Z0-9]+$'
+        boolean_enum:
+          type: boolean
+          enum:
+            - true
+            - false