diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,7 @@
+## 3.0.0.3
+
+* wai-frontend-monadcgi does not drop '?' in query string [#590](https://github.com/yesodweb/wai/issues/590)
+
 ## 3.0.0.2
 
 * Support for wai 3.2
diff --git a/Network/Wai/Frontend/MonadCGI.hs b/Network/Wai/Frontend/MonadCGI.hs
--- a/Network/Wai/Frontend/MonadCGI.hs
+++ b/Network/Wai/Frontend/MonadCGI.hs
@@ -64,5 +64,8 @@
 getCgiVars e =
     [ ("PATH_INFO", S8.unpack $ rawPathInfo e)
     , ("REQUEST_METHOD", show $ requestMethod e)
-    , ("QUERY_STRING", S8.unpack $ rawQueryString e)
+    , ("QUERY_STRING",
+        case S8.unpack $ rawQueryString e of
+          '?':rest -> rest
+          x -> x)
     ]
diff --git a/wai-frontend-monadcgi.cabal b/wai-frontend-monadcgi.cabal
--- a/wai-frontend-monadcgi.cabal
+++ b/wai-frontend-monadcgi.cabal
@@ -1,5 +1,5 @@
 name:            wai-frontend-monadcgi
-version:         3.0.0.2
+version:         3.0.0.3
 license:         MIT
 license-file:    LICENSE
 author:          Michael Snoyman <michael@snoyman.com>
