diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,7 @@
+## 0.5.10
+
+* New function to partial escape query strings
+
 ## 0.5.9
 
 * Add `Semigroup` instances for GHC 8.4 [#320](https://github.com/snoyberg/http-client/pull/320)
diff --git a/Network/HTTP/Client.hs b/Network/HTTP/Client.hs
--- a/Network/HTTP/Client.hs
+++ b/Network/HTTP/Client.hs
@@ -3,6 +3,7 @@
 {-# LANGUAGE DeriveFoldable #-}
 {-# LANGUAGE DeriveDataTypeable #-}
 {-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE CPP #-}
 -- |
 --
 -- = Simpler API
@@ -141,6 +142,9 @@
     , getUri
     , setRequestIgnoreStatus
     , setQueryString
+#if MIN_VERSION_http_types(0,12,1)
+    , setQueryStringPartialEscape
+#endif
       -- ** Request type and fields
     , Request
     , method
@@ -310,7 +314,7 @@
 -- > main = do
 -- >   manager <- newManager defaultManagerSettings
 -- >
--- >   request <- parseRequest "http://httpbin.org/post"
+-- >   request <- parseRequest "http://httpbin.org/get"
 -- >   response <- httpLbs request manager
 -- >
 -- >   putStrLn $ "The status code was: " ++ (show $ statusCode $ responseStatus response)
diff --git a/Network/HTTP/Client/Request.hs b/Network/HTTP/Client/Request.hs
--- a/Network/HTTP/Client/Request.hs
+++ b/Network/HTTP/Client/Request.hs
@@ -25,6 +25,9 @@
     , requestBuilder
     , setRequestIgnoreStatus
     , setQueryString
+#if MIN_VERSION_http_types(0,12,1)
+    , setQueryStringPartialEscape
+#endif
     , streamFile
     , observedStreamFile
     , extractBasicAuthInfo
@@ -475,6 +478,14 @@
 -- Since 0.3.6
 setQueryString :: [(S.ByteString, Maybe S.ByteString)] -> Request -> Request
 setQueryString qs req = req { queryString = W.renderQuery True qs }
+
+#if MIN_VERSION_http_types(0,12,1)
+-- | Set the query string to the given key/value pairs.
+--
+-- @since 0.5.10
+setQueryStringPartialEscape :: [(S.ByteString, [W.EscapeItem])] -> Request -> Request
+setQueryStringPartialEscape qs req = req { queryString = W.renderQueryPartialEscape True qs }
+#endif
 
 -- | Send a file as the request body.
 --
diff --git a/http-client.cabal b/http-client.cabal
--- a/http-client.cabal
+++ b/http-client.cabal
@@ -1,5 +1,5 @@
 name:                http-client
-version:             0.5.9
+version:             0.5.10
 synopsis:            An HTTP client engine
 description:         Hackage documentation generation is not reliable. For up to date documentation, please see: <http://www.stackage.org/package/http-client>.
 homepage:            https://github.com/snoyberg/http-client
