diff --git a/docs/generators/crystal.md b/docs/generators/crystal.md
index 721384c810cc..93a893215ca4 100644
--- a/docs/generators/crystal.md
+++ b/docs/generators/crystal.md
@@ -58,6 +58,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
- abstract
- alias
+- annotation
- as
- as?
- asm
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CrystalClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CrystalClientCodegen.java
index 0ff2d657e7a0..2e77181d7a3d 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CrystalClientCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CrystalClientCodegen.java
@@ -132,7 +132,7 @@ public class CrystalClientCodegen extends DefaultCodegen {
// reserved word. Ref: https://github.com/crystal-lang/crystal/wiki/Crystal-for-Rubyists#available-keywords
reservedWords = new HashSet<>(
Arrays.asList(
- "abstract", "do", "if", "nil?", "select", "union",
+ "abstract", "annotation", "do", "if", "nil?", "select", "union",
"alias", "else", "in", "of", "self", "unless",
"as", "elsif", "include", "out", "sizeof", "until",
"as?", "end", "instance", "sizeof", "pointerof", "struct", "verbatim",