diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,5 +1,8 @@
 # Changelog
 
+- 0.8.2.0 (2018-01-09)
+    * Define `ToMarkup` instance for `Natural`.
+
 - 0.8.1.0 (2017-09-16)
     * Compatibility with Semigroup/Monoid proposal
     * Switch to `tasty` for running tests
diff --git a/blaze-markup.cabal b/blaze-markup.cabal
--- a/blaze-markup.cabal
+++ b/blaze-markup.cabal
@@ -1,5 +1,5 @@
 Name:         blaze-markup
-Version:      0.8.1.0
+Version:      0.8.2.0
 Homepage:     http://jaspervdj.be/blaze
 Bug-Reports:  http://github.com/jaspervdj/blaze-markup/issues
 License:      BSD3
diff --git a/src/Text/Blaze.hs b/src/Text/Blaze.hs
--- a/src/Text/Blaze.hs
+++ b/src/Text/Blaze.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP                  #-}
 {-# LANGUAGE FlexibleInstances    #-}
 {-# LANGUAGE OverloadedStrings    #-}
 {-# LANGUAGE TypeSynonymInstances #-}
@@ -87,12 +88,15 @@
     , contents
     ) where
 
-import           Data.Int            (Int32, Int64)
-import           Data.Monoid         (mconcat)
-import           Data.Word           (Word, Word32, Word64)
+import           Data.Int               (Int32, Int64)
+import           Data.Monoid            (mconcat)
+import           Data.Word              (Word, Word32, Word64)
+#if MIN_VERSION_base(4,8,0)
+import           Numeric.Natural        (Natural)
+#endif
 
-import           Data.Text           (Text)
-import qualified Data.Text.Lazy      as LT
+import           Data.Text              (Text)
+import qualified Data.Text.Lazy         as LT
 import qualified Data.Text.Lazy.Builder as LTB
 
 import           Text.Blaze.Internal
@@ -153,6 +157,12 @@
 instance ToMarkup Int64 where
     toMarkup = string . show
     {-# INLINE toMarkup #-}
+
+#if MIN_VERSION_base(4,8,0)
+instance ToMarkup Natural where
+    toMarkup = string . show
+    {-# INLINE toMarkup #-}
+#endif
 
 instance ToMarkup Char where
     toMarkup = string . return
