diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+## Req 3.3.0
+
+* Derived `Show` instances for response types `IgnoreResponse`,
+  `JsonResponse`, `BsResponse`, and `LbsResponse`.
+
 ## Req 3.2.0
 
 * Made the tests pass with `http-client-0.7` and later.
diff --git a/Network/HTTP/Req.hs b/Network/HTTP/Req.hs
--- a/Network/HTTP/Req.hs
+++ b/Network/HTTP/Req.hs
@@ -1526,6 +1526,7 @@
 
 -- | Make a request and ignore the body of the response.
 newtype IgnoreResponse = IgnoreResponse (L.Response ())
+  deriving (Show)
 
 instance HttpResponse IgnoreResponse where
   type HttpResponseBody IgnoreResponse = ()
@@ -1542,6 +1543,7 @@
 -- monad in which you use 'req' will determine what to do in the case when
 -- parsing fails (the 'JsonHttpException' constructor will be used).
 newtype JsonResponse a = JsonResponse (L.Response a)
+  deriving (Show)
 
 instance FromJSON a => HttpResponse (JsonResponse a) where
   type HttpResponseBody (JsonResponse a) = a
@@ -1561,6 +1563,7 @@
 -- | Make a request and interpret the body of the response as a strict
 -- 'ByteString'.
 newtype BsResponse = BsResponse (L.Response ByteString)
+  deriving (Show)
 
 instance HttpResponse BsResponse where
   type HttpResponseBody BsResponse = ByteString
@@ -1577,6 +1580,7 @@
 -- | Make a request and interpret the body of the response as a lazy
 -- 'BL.ByteString'.
 newtype LbsResponse = LbsResponse (L.Response BL.ByteString)
+  deriving (Show)
 
 instance HttpResponse LbsResponse where
   type HttpResponseBody LbsResponse = BL.ByteString
diff --git a/req.cabal b/req.cabal
--- a/req.cabal
+++ b/req.cabal
@@ -1,6 +1,6 @@
 cabal-version:   1.18
 name:            req
-version:         3.2.0
+version:         3.3.0
 license:         BSD3
 license-file:    LICENSE.md
 maintainer:      Mark Karpov <markkarpov92@gmail.com>
