diff --git a/Network/HTTP2/TLS/Client.hs b/Network/HTTP2/TLS/Client.hs
--- a/Network/HTTP2/TLS/Client.hs
+++ b/Network/HTTP2/TLS/Client.hs
@@ -9,12 +9,14 @@
     runH2C,
     Client,
     HostName,
+    Authority,
     PortNumber,
     runTLS,
 
     -- ** Generalized API
     ClientConfig,
     defaultClientConfig,
+    defaultAuthority,
     runWithConfig,
     runH2CWithConfig,
     runTLSWithConfig,
@@ -34,12 +36,10 @@
 
 import Data.ByteString (ByteString)
 import qualified Data.ByteString.Char8 as BS.C8
-import qualified Data.ByteString.Char8 as C8
-import qualified Data.ByteString.UTF8 as BS.UTF8
 import Data.Default.Class (def)
 import Data.Maybe (fromMaybe)
 import Data.X509.Validation (validateDefault)
-import Network.HTTP2.Client (Client, ClientConfig)
+import Network.HTTP2.Client (Client, ClientConfig, Authority)
 import qualified Network.HTTP2.Client as H2Client
 import Network.Socket
 import Network.TLS hiding (HostName)
@@ -58,7 +58,7 @@
 run :: Settings -> HostName -> PortNumber -> Client a -> IO a
 run settings serverName port client =
     runWithConfig
-        (defaultClientConfig settings serverName)
+        (defaultClientConfig settings $ defaultAuthority serverName)
         settings
         serverName
         port
@@ -74,7 +74,7 @@
     -> IO a
 runTLS settings serverName port alpn action =
     runTLSWithConfig
-        (defaultClientConfig settings serverName)
+        (defaultClientConfig settings $ defaultAuthority serverName)
         settings
         serverName
         port
@@ -84,7 +84,7 @@
 runH2C :: Settings -> HostName -> PortNumber -> Client a -> IO a
 runH2C settings serverName port client =
     runH2CWithConfig
-        (defaultClientConfig settings serverName)
+        (defaultClientConfig settings $ defaultAuthority serverName)
         serverName
         port
         client
@@ -164,13 +164,12 @@
 
 defaultClientConfig
     :: Settings
-    -> HostName
-    -- ^ Authority
+    -> Authority
     -> ClientConfig
-defaultClientConfig Settings{..} serverName =
+defaultClientConfig Settings{..} auth =
     H2Client.defaultClientConfig
         { H2Client.scheme = "https"
-        , H2Client.authority = C8.pack serverName
+        , H2Client.authority = auth
         , H2Client.cacheLimit = settingsCacheLimit
         , H2Client.connectionWindowSize = settingsConnectionWindowSize
         , H2Client.settings =
@@ -180,6 +179,22 @@
                 }
         }
 
+-- | Default authority
+--
+-- When we connect to a server, we can distinguish between three names, all of
+-- which may be different:
+--
+-- 1. The 'HostName', used for the DNS lookup to get the server's IP
+-- 2. The HTTP2 @:authority@ pseudo-header
+-- 3. The TLS SNI (Server Name Indicator).
+--    This is different from (2) only in exceptional circumstances, see
+--    'settingsServerNameOverride'.
+--
+-- In /most/ cases, however, all three names are identical, and so the default
+-- 'Authority' is simply equal to the 'ServerName'.
+defaultAuthority :: HostName -> Authority
+defaultAuthority = id
+
 openTCP :: [AddrInfoFlag] -> HostName -> PortNumber -> IO Socket
 openTCP flags h p = do
     ai <- makeAddrInfo flags h p
@@ -201,7 +216,7 @@
 
 getClientParams
     :: Settings
-    -> ByteString
+    -> HostName
     -- ^ Server name (for TLS SNI)
     -> PortNumber
     -- ^ Port number
@@ -213,7 +228,7 @@
 getClientParams Settings{..} serverName port alpn =
     -- RFC 4366 mandates UTF-8 for SNI
     -- <https://datatracker.ietf.org/doc/html/rfc4366#section-3.1>
-    (defaultParamsClient (BS.UTF8.toString serverName) (BS.C8.pack $ show port))
+    (defaultParamsClient serverName (BS.C8.pack $ show port))
         { clientSupported = supported
         , clientWantSessionResume = Nothing
         , clientUseServerNameIndication = True
diff --git a/Network/HTTP2/TLS/Client/Settings.hs b/Network/HTTP2/TLS/Client/Settings.hs
--- a/Network/HTTP2/TLS/Client/Settings.hs
+++ b/Network/HTTP2/TLS/Client/Settings.hs
@@ -1,6 +1,5 @@
 module Network.HTTP2.TLS.Client.Settings where
 
-import Data.ByteString (ByteString)
 import Data.X509.CertificateStore (CertificateStore)
 import Network.Socket
 
@@ -23,7 +22,7 @@
     -- True
     , settingsCAStore :: CertificateStore
     -- ^ Certificate store used for validation. The default is 'mempty'. (TLS and H2)
-    , settingsServerNameOverride :: Maybe ByteString
+    , settingsServerNameOverride :: Maybe HostName
     -- ^ Server name override
     --
     -- By default, the server name (for TLS SNI) is set based on the
diff --git a/http2-tls.cabal b/http2-tls.cabal
--- a/http2-tls.cabal
+++ b/http2-tls.cabal
@@ -1,6 +1,6 @@
 cabal-version: >=1.10
 name:          http2-tls
-version:       0.2.1
+version:       0.2.2
 license:       BSD3
 license-file:  LICENSE
 maintainer:    Kazu Yamamoto <kazu@iij.ad.jp>
@@ -37,7 +37,7 @@
     build-depends:
         base >=4.9 && <5,
         bytestring >= 0.10 && < 0.12,
-        http2 >=5.0 && < 5.1,
+        http2 >=5.1 && < 5.2,
         data-default-class >= 0.1 && < 0.2,
         network >= 3.1.4 && < 3.2,
         time-manager >= 0.0.1 && < 0.1,
