diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,6 +1,16 @@
 
 ---
 
+0.1.3.10 - 2020 Nov 4
+
+  - Added `Data` instances for:
+      - `Area`
+      - `Loc`
+      - `Pos`
+      - `Line`
+      - `Column`
+      - `Span`
+
 0.1.3.8 - 2020 May 20
 
   - Support GHC 8.10
diff --git a/loc.cabal b/loc.cabal
--- a/loc.cabal
+++ b/loc.cabal
@@ -1,5 +1,5 @@
 name: loc
-version: 0.1.3.8
+version: 0.1.3.10
 
 synopsis: Types representing line and column positions and ranges in text files.
 
diff --git a/src/Data/Loc/Area.hs b/src/Data/Loc/Area.hs
--- a/src/Data/Loc/Area.hs
+++ b/src/Data/Loc/Area.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE DeriveDataTypeable #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 
 module Data.Loc.Area
@@ -35,11 +36,12 @@
 import qualified Data.Loc.Internal.Map as Map
 import qualified Data.Loc.Span as Span
 
+import           Data.Data (Data)
 import qualified Data.Foldable as Foldable
 import qualified Data.Set as Set
 
 data Terminus = Start | End
-  deriving (Eq, Ord)
+  deriving (Data, Eq, Ord)
 
 {- |
 
@@ -50,7 +52,7 @@
 
 -}
 newtype Area = Area (Map Loc Terminus)
-  deriving (Eq, Ord)
+  deriving (Data, Eq, Ord)
 
 -- | 'showsPrec' = 'areaShowsPrec'
 instance Show Area
diff --git a/src/Data/Loc/Loc.hs b/src/Data/Loc/Loc.hs
--- a/src/Data/Loc/Loc.hs
+++ b/src/Data/Loc/Loc.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+
 module Data.Loc.Loc
   ( Loc
 
@@ -19,6 +21,8 @@
 
 import Data.Loc.Internal.Prelude
 
+import Data.Data (Data)
+
 {- |
 
 Stands for /location/. Consists of a 'Line' and a 'Column'. You can think of a
@@ -30,7 +34,7 @@
   { line   :: Line
   , column :: Column
   }
-  deriving (Eq, Ord)
+  deriving (Data, Eq, Ord)
 
 -- | 'showsPrec' = 'locShowsPrec'
 instance Show Loc
diff --git a/src/Data/Loc/Pos.hs b/src/Data/Loc/Pos.hs
--- a/src/Data/Loc/Pos.hs
+++ b/src/Data/Loc/Pos.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE DeriveDataTypeable #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 
 module Data.Loc.Pos
@@ -16,6 +17,8 @@
 
 import Prelude (Num (..))
 
+import Data.Data (Data)
+
 {- |
 
 'Pos' stands for /positive integer/. You can also think of it as /position/,
@@ -28,7 +31,7 @@
 
 -}
 newtype Pos = Pos Natural
-  deriving (Eq, Ord)
+  deriving (Data, Eq, Ord)
 
 instance ToNat Pos
   where
@@ -171,7 +174,7 @@
 --------------------------------------------------------------------------------
 
 newtype Line = Line Pos
-  deriving (Eq, Ord, Num, Real, Enum, ToNat)
+  deriving (Data, Eq, Ord, Num, Real, Enum, ToNat)
 
 instance Show Line
   where
@@ -189,7 +192,7 @@
 --------------------------------------------------------------------------------
 
 newtype Column = Column Pos
-  deriving (Eq, Ord, Num, Real, Enum, ToNat)
+  deriving (Data, Eq, Ord, Num, Real, Enum, ToNat)
 
 instance Show Column
   where
diff --git a/src/Data/Loc/Span.hs b/src/Data/Loc/Span.hs
--- a/src/Data/Loc/Span.hs
+++ b/src/Data/Loc/Span.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE DeriveDataTypeable #-}
 {-# LANGUAGE LambdaCase #-}
 
 module Data.Loc.Span
@@ -39,6 +40,7 @@
 import qualified Data.Loc.List.ZeroToTwo as ZeroToTwo
 import qualified Data.Loc.Loc as Loc
 
+import           Data.Data (Data)
 import qualified Data.Foldable as Foldable
 import qualified Data.List.NonEmpty as NonEmpty
 
@@ -54,7 +56,7 @@
 data Span = Span
   { start :: Loc
   , end   :: Loc
-  } deriving (Eq, Ord)
+  } deriving (Data, Eq, Ord)
 
 -- | 'showsPrec' = 'spanShowsPrec'
 instance Show Span
