diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,6 @@
+- 0.2.5
+    - Add `NFData(/1/2)` instances
+
 - 0.2.4
     - Add `indexed-traversable` instances
     - lens-5 and optics-0.4 support
diff --git a/insert-ordered-containers.cabal b/insert-ordered-containers.cabal
--- a/insert-ordered-containers.cabal
+++ b/insert-ordered-containers.cabal
@@ -1,5 +1,5 @@
 name:               insert-ordered-containers
-version:            0.2.4
+version:            0.2.5
 synopsis:
   Associative containers retaining insertion order for traversals.
 
@@ -18,7 +18,13 @@
 build-type:         Simple
 cabal-version:      >=1.10
 tested-with:
-  GHC ==8.0.2 || ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.4 || ==8.10.4 || ==9.0.1
+  GHC ==8.0.2
+   || ==8.2.2
+   || ==8.4.4
+   || ==8.6.5
+   || ==8.8.4
+   || ==8.10.4
+   || ==9.0.1
 
 extra-source-files:
   CHANGELOG.md
@@ -33,19 +39,20 @@
   hs-source-dirs:   src
   ghc-options:      -Wall
   build-depends:
-      aeson                 >=1.4.2.0 && <1.6
-    , base                  >=4.9     && <4.16
-    , base-compat           >=0.10.5  && <0.12
-    , hashable              >=1.2.6.1 && <1.4
-    , indexed-traversable   >=0.1.1   && <0.2
-    , lens                  >=4.17    && <5.1
-    , optics-core           >=0.2     && <0.5
-    , optics-extra          >=0.2     && <0.5
-    , semigroupoids         >=5.3.2   && <5.4
-    , semigroups            >=0.18.5  && <0.20
-    , text                  >=1.2.3.0 && <1.3
-    , transformers          >=0.5.2.0 && <0.6
-    , unordered-containers  >=0.2.8.0 && <0.3
+      aeson                 >=1.4.2.0  && <1.6
+    , base                  >=4.9      && <4.16
+    , base-compat           >=0.10.5   && <0.12
+    , deepseq               >=1.4.2.0  && <1.5
+    , hashable              >=1.2.6.1  && <1.4
+    , indexed-traversable   >=0.1.1    && <0.2
+    , lens                  >=4.17     && <5.1
+    , optics-core           >=0.2      && <0.5
+    , optics-extra          >=0.2      && <0.5
+    , semigroupoids         >=5.3.2    && <5.4
+    , semigroups            >=0.18.5   && <0.20
+    , text                  >=1.2.3.0  && <1.3
+    , transformers          >=0.5.2.0  && <0.6
+    , unordered-containers  >=0.2.14.0 && <0.3
 
   exposed-modules:
     Data.HashMap.Strict.InsOrd
diff --git a/src/Data/HashMap/Strict/InsOrd.hs b/src/Data/HashMap/Strict/InsOrd.hs
--- a/src/Data/HashMap/Strict/InsOrd.hs
+++ b/src/Data/HashMap/Strict/InsOrd.hs
@@ -82,6 +82,7 @@
 
 import           Control.Applicative             (Const (..))
 import           Control.Arrow                   (first, second)
+import           Control.DeepSeq                 (NFData (..))
 import           Data.Aeson
 import qualified Data.Aeson.Encoding             as E
 import           Data.Data                       (Data, Typeable)
@@ -113,6 +114,10 @@
 
 import qualified GHC.Exts as Exts
 
+#if MIN_VERSION_deepseq(1,4,3)
+import qualified Control.DeepSeq as NF
+#endif
+
 import Data.HashMap.InsOrd.Internal
 
 -------------------------------------------------------------------------------
@@ -122,6 +127,15 @@
 data P a = P !Int !a
     deriving (Functor, Foldable, Traversable, Typeable, Data)
 
+instance NFData a => NFData (P a) where
+    rnf (P _ a) = rnf a
+
+#if MIN_VERSION_deepseq(1,4,3)
+-- | @since 0.2.5
+instance NF.NFData1 P where
+    liftRnf rnf1 (P _ a) = rnf1 a
+#endif
+
 getPK :: P a -> Int
 getPK (P i _) = i
 {-# INLINABLE getPK #-}
@@ -147,13 +161,27 @@
 -- InsOrdHashMap
 -------------------------------------------------------------------------------
 
--- | 'HashMap' which tries it's best to remember insertion order of elements.
+-- | 'HashMap' which tries its best to remember insertion order of elements.
 
 data InsOrdHashMap k v = InsOrdHashMap
     { _getIndex        :: !Int
     , getInsOrdHashMap :: !(HashMap k (P v))
     }
     deriving (Functor, Typeable, Data)
+
+-- | @since 0.2.5
+instance (NFData k, NFData v) => NFData (InsOrdHashMap k v) where
+    rnf (InsOrdHashMap _ hm) = rnf hm
+
+#if MIN_VERSION_deepseq(1,4,3)
+-- | @since 0.2.5
+instance NFData k => NF.NFData1 (InsOrdHashMap k) where
+    liftRnf rnf2 = NF.liftRnf2 rnf rnf2
+
+-- | @since 0.2.5
+instance NF.NFData2 InsOrdHashMap  where
+    liftRnf2 rnf1 rnf2 (InsOrdHashMap _ m) = NF.liftRnf2 rnf1 (NF.liftRnf rnf2) m
+#endif
 
 instance (Eq k, Eq v) => Eq (InsOrdHashMap k v) where
     InsOrdHashMap _ a == InsOrdHashMap _ b = a == b
diff --git a/src/Data/HashSet/InsOrd.hs b/src/Data/HashSet/InsOrd.hs
--- a/src/Data/HashSet/InsOrd.hs
+++ b/src/Data/HashSet/InsOrd.hs
@@ -47,6 +47,7 @@
 import Prelude.Compat hiding (filter, foldr, lookup, map, null)
 
 import Control.Arrow                   (first)
+import Control.DeepSeq                 (NFData (..))
 import Data.Aeson
 import Data.Data                       (Data, Typeable)
 import Data.Hashable                   (Hashable (..))
@@ -73,19 +74,33 @@
 import qualified Data.Foldable
 import qualified GHC.Exts      as Exts
 
+#if MIN_VERSION_deepseq(1,4,3)
+import qualified Control.DeepSeq as NF
+#endif
+
 import Data.HashMap.InsOrd.Internal
 
 -------------------------------------------------------------------------------
 -- InsOrdHashSet
 -------------------------------------------------------------------------------
 
--- | 'HashSet' which tries it's best to remember insertion order of elements.
+-- | 'HashSet' which tries its best to remember insertion order of elements.
 
 data InsOrdHashSet k = InsOrdHashSet
     { _getIndex        :: !Int
     , getInsOrdHashSet :: !(HashMap k Int)
     }
     deriving (Typeable, Data)
+
+-- | @since 0.2.5
+instance NFData k => NFData (InsOrdHashSet k) where
+    rnf (InsOrdHashSet _ hs) = rnf hs
+
+#if MIN_VERSION_deepseq(1,4,3)
+-- | @since 0.2.5
+instance NF.NFData1 InsOrdHashSet where
+    liftRnf rnf1 (InsOrdHashSet _ m) = NF.liftRnf2 rnf1 rnf m
+#endif
 
 instance Eq k => Eq (InsOrdHashSet k) where
     InsOrdHashSet _ a == InsOrdHashSet _ b = a == b
