diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,11 @@
 # Changelog
 
+## [0.2.0.2] - 2026-07-14
+
+### Changed
+
+* Lower bound on `autodocodec >=0.6`
+
 ## [0.2.0.1] - 2025-02-13
 
 ### Added
diff --git a/autodocodec-schema.cabal b/autodocodec-schema.cabal
--- a/autodocodec-schema.cabal
+++ b/autodocodec-schema.cabal
@@ -1,11 +1,11 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.36.0.
+-- This file has been generated from package.yaml by hpack version 0.38.3.
 --
 -- see: https://github.com/sol/hpack
 
 name:           autodocodec-schema
-version:        0.2.0.1
+version:        0.2.0.2
 synopsis:       Autodocodec interpreters for JSON Schema
 homepage:       https://github.com/NorfairKing/autodocodec#readme
 bug-reports:    https://github.com/NorfairKing/autodocodec/issues
@@ -32,7 +32,7 @@
       src
   build-depends:
       aeson
-    , autodocodec >=0.4.0.0
+    , autodocodec >=0.6.0.0
     , base >=4.7 && <5
     , containers
     , mtl
diff --git a/src/Autodocodec/Schema.hs b/src/Autodocodec/Schema.hs
--- a/src/Autodocodec/Schema.hs
+++ b/src/Autodocodec/Schema.hs
@@ -56,7 +56,7 @@
   = AnySchema
   | NullSchema
   | BoolSchema
-  | StringSchema
+  | StringSchema !StringBounds
   | IntegerSchema !(Bounds Integer)
   | NumberSchema !(Bounds Scientific)
   | ArraySchema !JSONSchema
@@ -92,7 +92,12 @@
         AnySchema -> []
         NullSchema -> ["type" JSON..= ("null" :: Text)]
         BoolSchema -> ["type" JSON..= ("boolean" :: Text)]
-        StringSchema -> ["type" JSON..= ("string" :: Text)]
+        StringSchema StringBounds {..} ->
+          catMaybes
+            [ Just ("type" JSON..= ("string" :: Text)),
+              ("maxLength" JSON..=) <$> stringBoundsMaxLength,
+              ("minLength" JSON..=) <$> stringBoundsMinLength
+            ]
         IntegerSchema Bounds {..} ->
           catMaybes
             [ Just ("type" JSON..= ("integer" :: Text)),
@@ -144,7 +149,10 @@
     fmap (commentFunc . defsFunc) $ case mt :: Maybe Text of
       Just "null" -> pure NullSchema
       Just "boolean" -> pure BoolSchema
-      Just "string" -> pure StringSchema
+      Just "string" -> do
+        stringBoundsMinLength <- o JSON..:? "minLength"
+        stringBoundsMaxLength <- o JSON..:? "maxLength"
+        pure $ StringSchema StringBounds {..}
       Just "integer" -> do
         boundsLower <- o JSON..:? "minimum"
         boundsUpper <- o JSON..:? "maximum"
@@ -295,7 +303,7 @@
 goValue = \case
   NullCodec -> pure NullSchema
   BoolCodec mname -> pure $ maybe id CommentSchema mname BoolSchema
-  StringCodec mname -> pure $ maybe id CommentSchema mname StringSchema
+  StringCodec mname mBounds -> pure $ maybe id CommentSchema mname $ StringSchema mBounds
   IntegerCodec mname mBounds -> pure $ maybe id CommentSchema mname $ IntegerSchema mBounds
   NumberCodec mname mBounds -> pure $ maybe id CommentSchema mname $ NumberSchema mBounds
   ArrayOfCodec mname c -> do
@@ -419,8 +427,10 @@
   BoolSchema -> pure $ case value of
     JSON.Bool _ -> True
     _ -> False
-  StringSchema -> pure $ case value of
-    JSON.String _ -> True
+  StringSchema bounds -> pure $ case value of
+    JSON.String s -> case checkStringBounds bounds s of
+      Left _ -> False
+      Right _ -> True
     _ -> False
   IntegerSchema bounds -> pure $ case value of
     JSON.Number s -> case checkBounds (fromInteger <$> bounds) s of
