diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,18 @@
 [The latest version of this document is on GitHub.](https://github.com/haskell-servant/servant/blob/master/servant-docs/CHANGELOG.md)
 [Changelog for `servant` package contains significant entries for all core packages.](https://github.com/haskell-servant/servant/blob/master/servant/CHANGELOG.md)
 
+0.11.9
+------
+
+### Significant changes
+
+- Use Capture Description if available (#1423).
+
+### Other changes
+
+- Support GHC-9.0.1.
+- Bump `bytestring` and `lens` dependencies.
+
 0.11.8
 ------
 
diff --git a/golden/comprehensive.md b/golden/comprehensive.md
--- a/golden/comprehensive.md
+++ b/golden/comprehensive.md
@@ -52,11 +52,11 @@
 
 ```
 
-## GET /capture/:foo
+## GET /capture/:bar
 
 ### Captures:
 
-- *foo*: Capture foo Int
+- *bar*: example description
 
 ### Response:
 
diff --git a/servant-docs.cabal b/servant-docs.cabal
--- a/servant-docs.cabal
+++ b/servant-docs.cabal
@@ -1,6 +1,6 @@
 cabal-version:       >=1.10
 name:                servant-docs
-version:             0.11.8
+version:             0.11.9
 
 synopsis:            generate API docs for your servant webservice
 category:            Servant, Web
@@ -19,7 +19,7 @@
 maintainer:          haskell-servant-maintainers@googlegroups.com
 copyright:           2014-2016 Zalora South East Asia Pte Ltd, 2016-2019 Servant Contributors
 build-type:          Simple
-tested-with: GHC ==8.0.2 || ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.4 || ==8.10.2
+tested-with: GHC ==8.0.2 || ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.4 || ==8.10.2 || ==9.0.1
 
 extra-source-files:
   CHANGELOG.md
@@ -41,8 +41,8 @@
   --
   -- note: mtl lower bound is so low because of GHC-7.8
   build-depends:
-      base       >= 4.9      && < 4.15
-    , bytestring >= 0.10.8.1 && < 0.11
+      base       >= 4.9      && < 4.16
+    , bytestring >= 0.10.8.1 && < 0.12
     , text       >= 1.2.3.0  && < 1.3
 
   -- Servant dependencies
@@ -59,7 +59,7 @@
     , hashable             >= 1.2.7.0  && < 1.4
     , http-media           >= 0.7.1.3  && < 0.9
     , http-types           >= 0.12.2   && < 0.13
-    , lens                 >= 4.17     && < 4.20
+    , lens                 >= 4.17     && < 5.1
     , string-conversions   >= 0.4.0.1  && < 0.5
     , universe-base        >= 1.1.1    && < 1.2
     , unordered-containers >= 0.2.9.0  && < 0.3
diff --git a/src/Servant/Docs/Internal.hs b/src/Servant/Docs/Internal.hs
--- a/src/Servant/Docs/Internal.hs
+++ b/src/Servant/Docs/Internal.hs
@@ -862,7 +862,7 @@
 -- | @"books" :> 'Capture' "isbn" Text@ will appear as
 -- @/books/:isbn@ in the docs.
 instance (KnownSymbol sym, ToCapture (Capture sym a), HasDocs api)
-      => HasDocs (Capture' mods sym a :> api) where
+      => HasDocs (Capture' '[] sym a :> api) where
 
   docsFor Proxy (endpoint, action) =
     docsFor subApiP (endpoint', action')
@@ -873,6 +873,28 @@
           action' = over captures (|> toCapture captureP) action
           endpoint' = over path (\p -> p ++ [":" ++ symbolVal symP]) endpoint
           symP = Proxy :: Proxy sym
+
+instance (KnownSymbol descr, KnownSymbol sym, HasDocs api)
+      => HasDocs (Capture' (Description descr ': mods) sym a :> api) where
+
+  docsFor Proxy (endpoint, action) =
+    docsFor subApiP (endpoint', action')
+
+    where subApiP = Proxy :: Proxy api
+
+          docCapture = DocCapture (symbolVal symP) (symbolVal descrP)
+          action' = over captures (|> docCapture) action
+          endpoint' = over path (\p -> p ++ [":" ++ symbolVal symP]) endpoint
+          descrP = Proxy :: Proxy descr
+          symP = Proxy :: Proxy sym
+
+instance {-# OVERLAPPABLE #-} HasDocs (Capture' mods sym a :> api)
+      => HasDocs (Capture' (mod ': mods) sym a :> api) where
+
+  docsFor Proxy =
+    docsFor apiP
+
+    where apiP = Proxy :: Proxy (Capture' mods sym a :> api)
 
 
 -- | @"books" :> 'CaptureAll' "isbn" Text@ will appear as
diff --git a/test/Servant/DocsSpec.hs b/test/Servant/DocsSpec.hs
--- a/test/Servant/DocsSpec.hs
+++ b/test/Servant/DocsSpec.hs
@@ -126,8 +126,11 @@
     it "mentions headers" $ do
       md `shouldContain` "- This endpoint is sensitive to the value of the **X-Test** HTTP header."
 
-    it "contains response samples" $
-      md `shouldContain` "{\"dt1field1\":\"field 1\",\"dt1field2\":13}"
+    it "contains response samples - dt1field1" $
+      md `shouldContain` "\"dt1field1\":\"field 1\""
+    it "contains response samples - dt1field2" $
+      md `shouldContain` "\"dt1field2\":13"
+
     it "contains request body samples" $
       md `shouldContain` "17"
 
