diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,10 @@
 # CHANGELOG
 
+## 0.0.3
+### Changed
+* Empty password string will be nullified. Redis counts empty `AUTH` command as
+  error when no password is set.
+
 ## 0.0.2
 ### Changed
 * relaxed upper base version constraints to `< 5`
diff --git a/hedis-config.cabal b/hedis-config.cabal
--- a/hedis-config.cabal
+++ b/hedis-config.cabal
@@ -1,5 +1,5 @@
 name:                hedis-config
-version:             0.0.2
+version:             0.0.3
 synopsis:            Easy trivial configuration for Redis
 description: Datatype to parse redis connection settings from file like
   .
@@ -38,6 +38,7 @@
 
   build-depends:       base         >= 4.6   && < 5
                      , aeson
+                     , bytestring
                      , hedis        >= 0.6
                      , scientific
                      , text
diff --git a/src/Database/Redis/Config.hs b/src/Database/Redis/Config.hs
--- a/src/Database/Redis/Config.hs
+++ b/src/Database/Redis/Config.hs
@@ -10,6 +10,7 @@
 import Database.Redis
 
 import qualified Data.Aeson.Types as A
+import qualified Data.ByteString.Char8 as BS
 import qualified Data.Text.Encoding as T
 
 
@@ -45,6 +46,13 @@
     <|> (fmap UnixSocket (o .: "socket"))
     <|> (fmap Service (o .: "service"))
 
+parsePassword :: Object -> A.Parser (Maybe BS.ByteString)
+parsePassword o = do
+  mp <- o .:? "password"
+  pure $ case mp of
+    Nothing -> Nothing
+    Just "" -> Nothing
+    Just ps -> Just $ T.encodeUtf8 ps
 
 instance FromJSON RedisConfig where
     parseJSON v = RedisConfig <$> withObject "RedisConfig" go v
@@ -53,7 +61,7 @@
             ConnInfo
             <$> (o .:? "host" .!= connectHost defaultConnectInfo)
             <*> (parsePort o .!= connectPort defaultConnectInfo)
-            <*> (fmap (fmap T.encodeUtf8) (o .:? "password"))
+            <*> parsePassword o
             <*> (o .:? "database" .!= (connectDatabase defaultConnectInfo))
             <*> (o .:? "max-connections" .!= (connectMaxConnections defaultConnectInfo))
             <*> (fmap (fmap (realToFrac :: Scientific -> NominalDiffTime)) (o .:? "max-idle-time") .!= (connectMaxIdleTime defaultConnectInfo))
