diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -2,6 +2,11 @@
 
 ## Unreleased changes
 
+## [v2.0.0.5](https://github.com/freckle/yesod-page-cursor/compare/v2.0.0.4...v2.0.0.5)
+
+- Relax persistent upper bound
+- Fix errors with http-link-header 1.2
+
 ## [v2.0.0.4](https://github.com/freckle/yesod-page-cursor/compare/v2.0.0.3...v2.0.0.4)
 
 - Relax lens upper bound
diff --git a/src/Network/HTTP/Link/Compat.hs b/src/Network/HTTP/Link/Compat.hs
new file mode 100644
--- /dev/null
+++ b/src/Network/HTTP/Link/Compat.hs
@@ -0,0 +1,25 @@
+{-# LANGUAGE CPP #-}
+module Network.HTTP.Link.Compat
+    ( Link
+    , linkURI
+    , parseLinkURI
+    , module Network.HTTP.Link
+    )
+where
+
+import Data.Text (Text)
+import Network.HTTP.Link hiding (Link)
+import qualified Network.HTTP.Link as HTTP
+import Network.URI (URI)
+
+#if MIN_VERSION_http_link_header(1,2,0)
+type Link = HTTP.Link URI
+#else
+type Link = HTTP.Link
+#endif
+
+linkURI :: URI -> [(LinkParam, Text)] -> Link
+linkURI = HTTP.Link
+
+parseLinkURI :: Text -> Either String [Link]
+parseLinkURI = parseLinkHeader'
diff --git a/src/Yesod/Page/RenderedRoute.hs b/src/Yesod/Page/RenderedRoute.hs
--- a/src/Yesod/Page/RenderedRoute.hs
+++ b/src/Yesod/Page/RenderedRoute.hs
@@ -16,7 +16,7 @@
 import Data.Map (Map)
 import qualified Data.Map as Map
 import Data.Text (Text, intercalate, pack, unpack)
-import Network.HTTP.Link
+import Network.HTTP.Link.Compat
 import Network.URI (URI(..), escapeURIString, isUnescapedInURIComponent)
 import UnliftIO (throwString)
 import Yesod.Core
@@ -40,7 +40,7 @@
 
 -- | Convert a @'RenderedRoute'@ into a @'Link'@ with the given @'Rel'@
 renderedRouteLink :: Text -> RenderedRoute -> Link
-renderedRouteLink rel = flip Link [(Rel, rel)] . renderedRouteURI
+renderedRouteLink rel = flip linkURI [(Rel, rel)] . renderedRouteURI
 
 -- | Convert a @'RenderedRoute'@ into a (relative) @'URI'@
 renderedRouteURI :: RenderedRoute -> URI
@@ -68,7 +68,7 @@
   let (path, _query) = renderRoute route
   query <- reqGetParams <$> getRequest
 
-  pure $ RenderedRoute {renderedRoutePath = path, renderedRouteQuery = query}
+  pure $ RenderedRoute { renderedRoutePath = path, renderedRouteQuery = query }
 
 -- | Update a single query parameter and preserve the rest
 --
diff --git a/test/Spec.hs b/test/Spec.hs
--- a/test/Spec.hs
+++ b/test/Spec.hs
@@ -10,7 +10,7 @@
 import Control.Monad.IO.Class (MonadIO, liftIO)
 import Control.Monad.IO.Unlift (MonadUnliftIO)
 import Control.Monad.Logger (NoLoggingT, runNoLoggingT)
-import Data.Aeson.Lens (key, _Array, _Number, _String)
+import Data.Aeson.Lens (_Array, _Number, _String, key)
 import Data.ByteString.Lazy (ByteString)
 import Data.Foldable (traverse_)
 import Data.List (find)
@@ -22,7 +22,7 @@
 import Database.Persist (Filter, deleteWhere, insert)
 import Database.Persist.Sql (SqlPersistT, insertMany_, runMigration)
 import GHC.Stack (HasCallStack)
-import Network.HTTP.Link
+import Network.HTTP.Link.Compat
 import Network.HTTP.Types.Header (HeaderName)
 import Network.Wai.Test (simpleBody, simpleHeaders)
 import Test.Hspec (Spec, SpecWith, beforeAll, before_, describe, hspec, it)
@@ -265,7 +265,7 @@
 
   pure $ do
     header <- mHeader
-    parsed <- either (const Nothing) Just $ parseLinkHeader' header
+    parsed <- either (const Nothing) Just $ parseLinkURI header
     link <- find (((Rel, rel) `elem`) . linkParams) parsed
     pure $ pack $ show $ href link
 
diff --git a/yesod-page-cursor.cabal b/yesod-page-cursor.cabal
--- a/yesod-page-cursor.cabal
+++ b/yesod-page-cursor.cabal
@@ -1,6 +1,6 @@
 cabal-version:      1.12
 name:               yesod-page-cursor
-version:            2.0.0.4
+version:            2.0.0.5
 license:            MIT
 license-file:       LICENSE
 copyright:          2020 Renaissance Learning Inc
@@ -20,6 +20,7 @@
 
 library
     exposed-modules:
+        Network.HTTP.Link.Compat
         Yesod.Page
         Yesod.Page.RenderedRoute
 
@@ -59,7 +60,7 @@
         lens-aeson ==1.1.*,
         monad-logger >=0.3.36 && <0.4,
         mtl >=2.2.2 && <2.3,
-        persistent >=2.11.0.2 && <2.12,
+        persistent >=2.11.0.2 && <2.13,
         persistent-sqlite >=2.11.0.0 && <2.12,
         persistent-template >=2.9.1.0 && <2.10,
         scientific >=0.3.6.2 && <0.4,
