diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## Modern URI 0.3.0.1
+
+* Allow superfluous `&` right after question sign in query parameters.
+
 ## Modern URI 0.3.0.0
 
 * Uses Megaparsec 7. Visible API changes amount to an adjustment in
diff --git a/Text/URI/Parser/ByteString.hs b/Text/URI/Parser/ByteString.hs
--- a/Text/URI/Parser/ByteString.hs
+++ b/Text/URI/Parser/ByteString.hs
@@ -175,6 +175,7 @@
 pQuery :: MonadParsec e ByteString m => m [QueryParam]
 pQuery = do
   void (char 63)
+  void (optional (char 38))
   fmap catMaybes . flip sepBy (char 38) . label "query parameter" $ do
     let p = many (pchar' <|> char 47 <|> char 63)
     k' <- p
diff --git a/Text/URI/Parser/Text.hs b/Text/URI/Parser/Text.hs
--- a/Text/URI/Parser/Text.hs
+++ b/Text/URI/Parser/Text.hs
@@ -125,6 +125,7 @@
 pQuery :: MonadParsec e Text m => m [QueryParam]
 pQuery = do
   void (char '?')
+  void (optional (char '&'))
   fmap catMaybes . flip sepBy (char '&') . label "query parameter" $ do
     let p = many (pchar' <|> char '/' <|> char '?')
     k' <- p
diff --git a/modern-uri.cabal b/modern-uri.cabal
--- a/modern-uri.cabal
+++ b/modern-uri.cabal
@@ -1,7 +1,7 @@
 name:                 modern-uri
-version:              0.3.0.0
+version:              0.3.0.1
 cabal-version:        1.18
-tested-with:          GHC==7.10.3, GHC==8.0.2, GHC==8.2.2, GHC==8.4.3
+tested-with:          GHC==7.10.3, GHC==8.0.2, GHC==8.2.2, GHC==8.4.3, GHC==8.6.1
 license:              BSD3
 license-file:         LICENSE.md
 author:               Mark Karpov <markkarpov92@gmail.com>
@@ -37,7 +37,7 @@
                     , profunctors      >= 5.2.1 && < 6.0
                     , reflection       >= 2.0 && < 3.0
                     , tagged           >= 0.8 && < 0.9
-                    , template-haskell >= 2.10 && < 2.14
+                    , template-haskell >= 2.10 && < 2.15
                     , text             >= 0.2 && < 1.3
   if !impl(ghc >= 8.0)
     build-depends:    semigroups       == 0.18.*
diff --git a/tests/Text/URISpec.hs b/tests/Text/URISpec.hs
--- a/tests/Text/URISpec.hs
+++ b/tests/Text/URISpec.hs
@@ -216,6 +216,11 @@
         , uriQuery = []
         , uriFragment = Nothing
         }
+    it "parses URIs with superfluous '&' before query parameters" $ do
+      uri <- mkTestURI
+      let s = "https://mark%3a%40:secret:%40@github.com:443/mrkkrp/modern-uri+%3a@?&foo:@=bar+:@#fragment:@"
+      parse urip "" s `shouldParse` uri
+
   describe "render" $ do
     it "sort of works" $
       fmap URI.render mkTestURI `shouldReturn` testURI
