diff --git a/ipfs.cabal b/ipfs.cabal
--- a/ipfs.cabal
+++ b/ipfs.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           ipfs
-version:        1.3.1
+version:        1.3.2
 synopsis:       Access IPFS locally and remotely
 description:    Interact with the IPFS network by shelling out to a local IPFS node or communicating via the HTTP interface of a remote IPFS node.
 category:       Network
@@ -24,7 +24,7 @@
 license-file:   LICENSE
 build-type:     Simple
 tested-with:
-    GHC==8.10.4
+    GHC==8.10.7
 extra-source-files:
     README.md
 
@@ -79,9 +79,11 @@
       Network.IPFS.Process.Error
       Network.IPFS.Process.Types
       Network.IPFS.Remote.Class
+      Network.IPFS.Remote.Error
       Network.IPFS.SparseTree
       Network.IPFS.SparseTree.Types
       Network.IPFS.Stat
+      Network.IPFS.Stat.Error
       Network.IPFS.Stat.Types
       Network.IPFS.Timeout.Types
       Network.IPFS.Types
@@ -209,7 +211,7 @@
       TemplateHaskell
       TypeOperators
       ViewPatterns
-  ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-export-lists -Wpartial-fields -Wredundant-constraints -fhide-source-paths -threaded -rtsopts -with-rtsopts=-N
+  ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-export-lists -Wpartial-fields -Wredundant-constraints -fhide-source-paths
   build-depends:
       Glob
     , QuickCheck
diff --git a/library/Network/IPFS/Add/Error.hs b/library/Network/IPFS/Add/Error.hs
--- a/library/Network/IPFS/Add/Error.hs
+++ b/library/Network/IPFS/Add/Error.hs
@@ -1,7 +1,7 @@
 module Network.IPFS.Add.Error (Error (..)) where
 
-import           Network.IPFS.Prelude
 import qualified Network.IPFS.Get.Error as Get
+import           Network.IPFS.Prelude
 
 data Error
   = InvalidFile
@@ -13,7 +13,6 @@
            , Eq
            , Generic
            , Show
-           , ToJSON
            )
 
 instance Display Error where
diff --git a/library/Network/IPFS/Client.hs b/library/Network/IPFS/Client.hs
--- a/library/Network/IPFS/Client.hs
+++ b/library/Network/IPFS/Client.hs
@@ -41,7 +41,7 @@
         :<|> "pin"    :> Pin.API
 
 cat    :: CID                                         -> ClientM File.Serialized
-stat   :: CID                                         -> ClientM Stat
+stat   :: CID                                         -> ClientM (Either OverflowDetected Stat)
 pin    :: CID                                         -> ClientM Pin.Response
 unpin  :: CID -> Bool                                 -> ClientM Pin.Response
 dagPut ::        Bool -> (Lazy.ByteString, File.Form) -> ClientM DAG.Put.Response
diff --git a/library/Network/IPFS/Client/Stat.hs b/library/Network/IPFS/Client/Stat.hs
--- a/library/Network/IPFS/Client/Stat.hs
+++ b/library/Network/IPFS/Client/Stat.hs
@@ -2,6 +2,8 @@
 
 import           Servant
 
+import           Network.IPFS.Prelude
+
 import qualified Network.IPFS.Client.Param as Param
 import           Network.IPFS.Stat.Types
 
@@ -9,4 +11,4 @@
 -- https://docs.ipfs.io/recent-releases/go-ipfs-0-5/#breaking-changes-upgrade-notes
 type API = "stat"
         :> Param.CID'
-        :> Post '[JSON] Stat
+        :> Post '[JSON] (Either OverflowDetected Stat)
diff --git a/library/Network/IPFS/Error.hs b/library/Network/IPFS/Error.hs
--- a/library/Network/IPFS/Error.hs
+++ b/library/Network/IPFS/Error.hs
@@ -17,7 +17,6 @@
            , Eq
            , Generic
            , Show
-           , ToJSON
            )
 
 -- NOTE Will not stay as a newtype in the long term
diff --git a/library/Network/IPFS/Get/Error.hs b/library/Network/IPFS/Get/Error.hs
--- a/library/Network/IPFS/Get/Error.hs
+++ b/library/Network/IPFS/Get/Error.hs
@@ -1,18 +1,23 @@
 module Network.IPFS.Get.Error (Error (..)) where
 
+import           Servant.Client
+
 import           Network.IPFS.Prelude
+
+import           Network.IPFS.Stat.Error
 import           Network.IPFS.Types
 
 data Error
   = InvalidCID Text
   | TimedOut CID Natural
+  | WebError ClientError
+  | SizeError OverflowDetected
   | UnexpectedOutput Text
   | UnknownErr Text
   deriving ( Exception
            , Eq
            , Generic
            , Show
-           , ToJSON
            )
 
 instance Display Error where
@@ -28,6 +33,12 @@
         , display sec
         , " seconds."
         ]
+
+    WebError err ->
+      "WebError: " <> displayShow err
+
+    SizeError err ->
+      "SizeError: " <> display err
 
     UnexpectedOutput raw ->
       "Unexpected IPFS output: " <> display raw
diff --git a/library/Network/IPFS/Remote/Class.hs b/library/Network/IPFS/Remote/Class.hs
--- a/library/Network/IPFS/Remote/Class.hs
+++ b/library/Network/IPFS/Remote/Class.hs
@@ -10,26 +10,33 @@
 
 import           Network.IPFS.Prelude
 
-import qualified RIO.ByteString.Lazy     as Lazy
+import qualified RIO.ByteString.Lazy       as Lazy
 import           Servant.Client
 
-import           Network.IPFS.Types      as IPFS
+import           Network.IPFS.Types        as IPFS
 
-import qualified Network.IPFS.Client     as IPFS.Client
-import qualified Network.IPFS.Client.Pin as Pin
-import qualified Network.IPFS.File.Types as File
+import qualified Network.IPFS.Client       as IPFS.Client
+import qualified Network.IPFS.Client.Pin   as Pin
+import qualified Network.IPFS.File.Types   as File
 
+import           Network.IPFS.Remote.Error
+
 class MonadIO m => MonadRemoteIPFS m where
   runRemote :: ClientM a       -> m (Either ClientError a)
   ipfsAdd   :: Lazy.ByteString -> m (Either ClientError CID)
   ipfsCat   :: CID             -> m (Either ClientError File.Serialized)
-  ipfsStat  :: CID             -> m (Either ClientError Stat)
+  ipfsStat  :: CID             -> m (Either StatError   Stat)
   ipfsPin   :: CID             -> m (Either ClientError Pin.Response)
   ipfsUnpin :: CID -> Bool     -> m (Either ClientError Pin.Response)
 
   -- defaults
   ipfsAdd   raw           = runRemote $ IPFS.Client.add raw
   ipfsCat   cid           = runRemote $ IPFS.Client.cat   cid
-  ipfsStat  cid           = runRemote $ IPFS.Client.stat  cid
   ipfsPin   cid           = runRemote $ IPFS.Client.pin   cid
   ipfsUnpin cid recursive = runRemote $ IPFS.Client.unpin cid recursive
+
+  ipfsStat cid =
+    runRemote (IPFS.Client.stat  cid) >>= \case
+      Left  clientErr       -> return . Left $ WebError  clientErr
+      Right (Left sizeErr)  -> return . Left $ SizeError sizeErr
+      Right (Right payload) -> return $ Right payload
diff --git a/library/Network/IPFS/Remote/Error.hs b/library/Network/IPFS/Remote/Error.hs
new file mode 100644
--- /dev/null
+++ b/library/Network/IPFS/Remote/Error.hs
@@ -0,0 +1,12 @@
+module Network.IPFS.Remote.Error (StatError (..)) where
+
+import           Servant.Client
+
+import           Network.IPFS.Prelude
+
+import           Network.IPFS.Stat.Error
+
+data StatError
+  = WebError ClientError
+  | SizeError OverflowDetected
+  deriving (Show, Eq)
diff --git a/library/Network/IPFS/Stat.hs b/library/Network/IPFS/Stat.hs
--- a/library/Network/IPFS/Stat.hs
+++ b/library/Network/IPFS/Stat.hs
@@ -19,20 +19,27 @@
 import qualified Network.IPFS.Process.Error as Process
 
 import           Network.IPFS.Bytes.Types
+import qualified Network.IPFS.Remote.Error  as Remote
 import           Network.IPFS.Stat.Types
 import           Network.IPFS.Types         as IPFS
 
 getStatRemote :: MonadRemoteIPFS m => IPFS.CID -> m (Either IPFS.Get.Error Stat)
 getStatRemote cid =
   Remote.ipfsStat cid >>= \case
-    Left err   -> return . Left . UnexpectedOutput $ UTF8.textShow err
-    Right stat -> return $ Right stat
+    Right statPayload           -> return $ Right statPayload
+    Left (Remote.WebError err)  -> return . Left $ IPFS.Get.WebError err
+    Left (Remote.SizeError err) -> return . Left $ IPFS.Get.SizeError err
 
 getSizeRemote :: MonadRemoteIPFS m => IPFS.CID -> m (Either IPFS.Get.Error Bytes)
 getSizeRemote cid =
   getStatRemote cid >>= \case
-    Left err   -> return $ Left err
-    Right stat -> return . Right $ cumulativeSize stat
+    Left err ->
+      return $ Left err
+
+    Right Stat {cumulativeSize} ->
+      case cumulativeSize of
+        Left err   -> return $ Left $ IPFS.Get.SizeError err
+        Right size -> return $ Right size
 
 getSize :: MonadLocalIPFS m => IPFS.CID -> m (Either IPFS.Get.Error Integer)
 getSize cid@(CID hash) = IPFS.runLocal ["object", "stat"] (Lazy.fromStrict <| encodeUtf8 hash) >>= \case
diff --git a/library/Network/IPFS/Stat/Error.hs b/library/Network/IPFS/Stat/Error.hs
new file mode 100644
--- /dev/null
+++ b/library/Network/IPFS/Stat/Error.hs
@@ -0,0 +1,21 @@
+module Network.IPFS.Stat.Error (OverflowDetected (..)) where
+
+import qualified RIO.Text             as Text
+
+import           Network.IPFS.Prelude
+
+data OverflowDetected = OverflowDetected
+  deriving (Eq, Show)
+
+instance Display OverflowDetected where
+  display OverflowDetected = "OverflowDetected"
+
+instance ToJSON OverflowDetected where
+  toJSON OverflowDetected = String "OverflowDetected"
+
+instance FromJSON OverflowDetected where
+  parseJSON =
+    withText "OverflowDetected" \txt ->
+      if "-" `Text.isPrefixOf` txt
+        then return OverflowDetected
+        else fail "Not an overflow"
diff --git a/library/Network/IPFS/Stat/Types.hs b/library/Network/IPFS/Stat/Types.hs
--- a/library/Network/IPFS/Stat/Types.hs
+++ b/library/Network/IPFS/Stat/Types.hs
@@ -1,13 +1,17 @@
-module Network.IPFS.Stat.Types (Stat(..)) where
+module Network.IPFS.Stat.Types
+  ( Stat (..)
+  , module Network.IPFS.Stat.Error
+  ) where
 
-import Network.IPFS.Prelude
-import Network.IPFS.Bytes.Types
+import           Network.IPFS.Bytes.Types
+import           Network.IPFS.Stat.Error
 
+import           Network.IPFS.Prelude
 
-data Stat = Stat 
-  { blockSize      :: Bytes
-  , cumulativeSize :: Bytes
-  , dataSize       :: Bytes
+data Stat = Stat
+  { blockSize      :: Either OverflowDetected Bytes
+  , cumulativeSize :: Either OverflowDetected Bytes
+  , dataSize       :: Either OverflowDetected Bytes
   , hash           :: Text
   , linksSize      :: Bytes
   , numLinks       :: Natural
@@ -18,8 +22,10 @@
     blockSize      <- obj .: "BlockSize"
     cumulativeSize <- obj .: "CumulativeSize"
     dataSize       <- obj .: "DataSize"
+
     hash           <- obj .: "Hash"
     linksSize      <- obj .: "LinksSize"
     numLinks       <- obj .: "NumLinks"
 
     return Stat {..}
+
