diff --git a/binary.cabal b/binary.cabal
--- a/binary.cabal
+++ b/binary.cabal
@@ -1,5 +1,5 @@
 name:            binary
-version:         0.8.1.0
+version:         0.8.2.0
 license:         BSD3
 license-file:    LICENSE
 author:          Lennart Kolmodin <kolmodin@gmail.com>
@@ -53,8 +53,8 @@
 
   ghc-options:     -O2 -Wall -fliberate-case-threshold=1000
 
-  if impl(ghc >= 7.11)
-    ghc-options: -Wcompat -Wnoncanonical-monad-instances
+  if impl(ghc >= 8.0)
+    ghc-options: -Wcompat -Wnoncanonical-monad-instances -Wnoncanonical-monadfail-instances
 
 -- Due to circular dependency, we cannot make any of the test-suites or
 -- benchmark depend on the binary library. Instead, for each test-suite and
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,6 +1,11 @@
 binary
 ======
 
+binary-0.8.2.0
+--------------
+
+- When using GHC >= 8, `Data.Binary.Get.Get` implements MonadFail and delegates its `fail` to `MonadFail.fail`.
+
 binary-0.8.1.0
 --------------
 
diff --git a/src/Data/Binary/Get/Internal.hs b/src/Data/Binary/Get/Internal.hs
--- a/src/Data/Binary/Get/Internal.hs
+++ b/src/Data/Binary/Get/Internal.hs
@@ -48,6 +48,9 @@
 
 import Control.Applicative
 import Control.Monad
+#if MIN_VERSION_base(4,9,0)
+import qualified Control.Monad.Fail as Fail
+#endif
 
 import Data.Binary.Internal ( accursedUnutterablePerformIO )
 
@@ -94,6 +97,11 @@
 instance Monad Get where
   return = pure
   (>>=) = bindG
+#if MIN_VERSION_base(4,9,0)
+  fail = Fail.fail
+
+instance Fail.MonadFail Get where
+#endif
   fail = failG
 
 bindG :: Get a -> (a -> Get b) -> Get b
