diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# Webcrank on Wai [![TravisCI](https://travis-ci.org/webcrank/webcrank-wai.svg)](https://travis-ci.org/webcrank/webcrank-wai) [![Hackage](https://img.shields.io/hackage/v/webcrank-wai.svg?style=flat)](https://hackage.haskell.org/package/webcrank-wai)
+# Webcrank on Wai [![TravisCI](https://travis-ci.org/webcrank/webcrank-wai.svg)](https://travis-ci.org/webcrank/webcrank-wai) [![Hackage](https://img.shields.io/hackage/v/webcrank-wai.svg?style=flat)](https://hackage.haskell.org/package/webcrank-wai) [![Dependencies](https://img.shields.io/hackage-deps/v/webcrank-wai.svg?style=flat)](http://packdeps.haskellers.com/feed?needle=webcrank-wai)
 
 A library for building [Webcrank](https://github.com/webcrank/webcrank.hs) [WAI](https://hackage.haskell.org/package/wai) `Application`s.
 
diff --git a/src/Webcrank/Wai.hs b/src/Webcrank/Wai.hs
--- a/src/Webcrank/Wai.hs
+++ b/src/Webcrank/Wai.hs
@@ -14,6 +14,7 @@
   , HasRequestDate(..)
   , WaiData
   , ReqData
+  , getRequestBodyLBS
   , module Webcrank
   , module Webcrank.Dispatch
   ) where
@@ -30,6 +31,7 @@
 import Data.Traversable
 import Network.Wai hiding (rawPathInfo, pathInfo, requestHeaders)
 import Network.Wai.Lens
+import Prelude
 import System.PosixCompat.Time
 
 import Webcrank
@@ -136,3 +138,7 @@
   , srvGetRequestURI = view $ request . rawPathInfo . to (B.takeWhile (/= 63) . (baseUri <>))
   , srvGetRequestTime = view requestDate
   }
+
+getRequestBodyLBS :: (MonadIO m, MonadReader s m, HasRequest s Request) => m LB.ByteString
+getRequestBodyLBS = liftIO . lazyRequestBody =<< view request
+
diff --git a/webcrank-wai.cabal b/webcrank-wai.cabal
--- a/webcrank-wai.cabal
+++ b/webcrank-wai.cabal
@@ -1,5 +1,5 @@
 name:               webcrank-wai
-version:            0.2
+version:            0.2.1
 license:            BSD3
 license-file:       LICENSE
 author:             Richard Wallace <rwallace@thewallacepack.net>
