diff --git a/data-extra.cabal b/data-extra.cabal
--- a/data-extra.cabal
+++ b/data-extra.cabal
@@ -1,5 +1,5 @@
 name:                data-extra
-version:             2.3.0
+version:             2.4.0
 synopsis:            Extra utilities for working on Data.* types.
 description:         Extra utilities for working on Data.* types.
 license:             BSD3
@@ -21,7 +21,8 @@
                      Data.Text.Extra,
                      Data.Number.Extra,
                      Data.Time.Extra,
-                     Data.Tuple.Extra
+                     Data.Tuple.Extra,
+                     Data.Eq.Extra
   hs-source-dirs:    src/
   build-depends:     base > 4 && <5,
                      text,
diff --git a/src/Data/Eq/Extra.hs b/src/Data/Eq/Extra.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/Eq/Extra.hs
@@ -0,0 +1,9 @@
+-- | Extra utilities for equality.
+
+module Data.Eq.Extra where
+
+import Data.Function
+
+-- | Apply a function before passing it to equality.
+equating :: Eq b => (a -> b) -> a -> a -> Bool
+equating = on (==)
diff --git a/src/Data/Extra.hs b/src/Data/Extra.hs
--- a/src/Data/Extra.hs
+++ b/src/Data/Extra.hs
@@ -15,7 +15,9 @@
        ,module Data.Time
        ,module Data.Time.Extra
        ,module Data.Number.Extra
-       ,module Data.Tuple.Extra)
+       ,module Data.Tuple.Extra
+       ,module Data.Eq.Extra
+       )
       where
 
 import Data.Either
@@ -33,3 +35,4 @@
 import Data.Time.Extra
 import Data.Number.Extra
 import Data.Tuple.Extra
+import Data.Eq.Extra
