diff --git a/Web/Routes/RouteT.hs b/Web/Routes/RouteT.hs
--- a/Web/Routes/RouteT.hs
+++ b/Web/Routes/RouteT.hs
@@ -18,6 +18,11 @@
 import Control.Monad.Catch (MonadCatch(catch), MonadThrow(throwM))
 import Control.Monad.Cont(MonadCont(callCC))
 import Control.Monad.Error (MonadError(throwError, catchError))
+#if !MIN_VERSION_base(4,13,0)
+-- Control.Monad.Fail import is redundant since GHC 8.8.1
+import Prelude hiding (fail)
+import Control.Monad.Fail (MonadFail(..))
+#endif
 import Control.Monad.Fix (MonadFix(mfix))
 import Control.Monad.Reader(MonadReader(ask,local))
 import Control.Monad.RWS (MonadRWS)
@@ -85,6 +90,8 @@
     m >>= k  = RouteT $ \ url -> do
         a <- unRouteT m url
         unRouteT (k a) url
+
+instance (MonadFail m) => MonadFail (RouteT url m) where
     fail msg = liftRouteT (fail msg)
 
 instance (MonadPlus m, Monad (RouteT url m)) => MonadPlus (RouteT url m) where
diff --git a/web-routes.cabal b/web-routes.cabal
--- a/web-routes.cabal
+++ b/web-routes.cabal
@@ -1,5 +1,5 @@
 Name:             web-routes
-Version:          0.27.14.2
+Version:          0.27.14.3
 License:          BSD3
 License-File:     LICENSE
 Author:           jeremy@seereason.com
@@ -10,7 +10,7 @@
 Homepage:         http://www.happstack.com/docs/crashcourse/index.html#web-routes
 Cabal-Version:    >= 1.8
 Build-type:       Simple
-tested-with:      GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.1, GHC == 8.2.2, GHC == 8.4.1
+tested-with:      GHC==8.0.1, GHC==8.2.2, GHC==8.4.1, GHC==8.6.5, GHC==8.8.1
 
 test-suite Test
   type             : exitcode-stdio-1.0
@@ -24,7 +24,7 @@
                      web-routes
 
 Library
-        Build-Depends:    base          >= 4.6  && < 5,
+        Build-Depends:    base          >= 4.9  && < 5,
                           blaze-builder >= 0.2  && < 0.5,
                           parsec        >= 2    && < 4,
                           bytestring    >= 0.9  && < 0.11,
