diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+# 0.0.1.7
+
+- Added a selection of folding operations for `MonoidMap`.
+
 # 0.0.1.6
 
 - Updated version bounds for dependencies.
@@ -29,8 +33,8 @@
 
 # 0.0.0.1
 
-Revised `MultiMap` examples and documentation.
+- Revised `MultiMap` examples and documentation.
 
 # 0.0.0.0
 
-Initial release.
+- Initial release.
diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -186,7 +186,7 @@
       same "printed page" as the copyright notice for easier
       identification within third-party archives.
 
-   Copyright © 2022–2024 Jonathan Knowles
+   Copyright © 2022–2025 Jonathan Knowles
 
    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
diff --git a/monoidmap.cabal b/monoidmap.cabal
--- a/monoidmap.cabal
+++ b/monoidmap.cabal
@@ -1,12 +1,12 @@
 cabal-version:  3.0
 name:           monoidmap
-version:        0.0.1.6
+version:        0.0.1.7
 bug-reports:    https://github.com/jonathanknowles/monoidmap/issues
 license:        Apache-2.0
 license-file:   LICENSE
 author:         Jonathan Knowles
 maintainer:     mail@jonathanknowles.net
-copyright:      2022–2024 Jonathan Knowles
+copyright:      2022–2025 Jonathan Knowles
 category:       Data Structures
 synopsis:       Monoidal map type
 description:
@@ -163,6 +163,7 @@
         Data.MonoidMap.DistributivitySpec
         Data.MonoidMap.MapSpec
         Data.MonoidMap.FilterSpec
+        Data.MonoidMap.FoldSpec
         Data.MonoidMap.PartitionSpec
         Data.MonoidMap.MembershipSpec
         Data.MonoidMap.SingletonSpec
diff --git a/src/examples/Examples/MultiMap.hs b/src/examples/Examples/MultiMap.hs
--- a/src/examples/Examples/MultiMap.hs
+++ b/src/examples/Examples/MultiMap.hs
@@ -1,6 +1,6 @@
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 -- |
--- Copyright: © 2022–2024 Jonathan Knowles
+-- Copyright: © 2022–2025 Jonathan Knowles
 -- License: Apache-2.0
 --
 -- Provides the 'MultiMap' class, which models a total relation from unique
diff --git a/src/examples/Examples/MultiMap/Class.hs b/src/examples/Examples/MultiMap/Class.hs
--- a/src/examples/Examples/MultiMap/Class.hs
+++ b/src/examples/Examples/MultiMap/Class.hs
@@ -1,5 +1,5 @@
 -- |
--- Copyright: © 2022–2024 Jonathan Knowles
+-- Copyright: © 2022–2025 Jonathan Knowles
 -- License: Apache-2.0
 --
 -- Provides the 'MultiMap' class, which models a total relation from unique
diff --git a/src/examples/Examples/MultiMap/Instances/MultiMap1.hs b/src/examples/Examples/MultiMap/Instances/MultiMap1.hs
--- a/src/examples/Examples/MultiMap/Instances/MultiMap1.hs
+++ b/src/examples/Examples/MultiMap/Instances/MultiMap1.hs
@@ -1,5 +1,5 @@
 -- |
--- Copyright: © 2022–2024 Jonathan Knowles
+-- Copyright: © 2022–2025 Jonathan Knowles
 -- License: Apache-2.0
 --
 -- An __unlawful__ implementation of 'MultiMap', implemented in terms of 'Map'
diff --git a/src/examples/Examples/MultiMap/Instances/MultiMap2.hs b/src/examples/Examples/MultiMap/Instances/MultiMap2.hs
--- a/src/examples/Examples/MultiMap/Instances/MultiMap2.hs
+++ b/src/examples/Examples/MultiMap/Instances/MultiMap2.hs
@@ -1,5 +1,5 @@
 -- |
--- Copyright: © 2022–2024 Jonathan Knowles
+-- Copyright: © 2022–2025 Jonathan Knowles
 -- License: Apache-2.0
 --
 -- A __lawful__ implementation of 'MultiMap', implemented in terms of 'Map' and
diff --git a/src/examples/Examples/MultiMap/Instances/MultiMap3.hs b/src/examples/Examples/MultiMap/Instances/MultiMap3.hs
--- a/src/examples/Examples/MultiMap/Instances/MultiMap3.hs
+++ b/src/examples/Examples/MultiMap/Instances/MultiMap3.hs
@@ -1,5 +1,5 @@
 -- |
--- Copyright: © 2022–2024 Jonathan Knowles
+-- Copyright: © 2022–2025 Jonathan Knowles
 -- License: Apache-2.0
 --
 -- A __lawful__ implementation of 'MultiMap', implemented in terms of 'Map' and
diff --git a/src/examples/Examples/MultiMap/Instances/MultiMap4.hs b/src/examples/Examples/MultiMap/Instances/MultiMap4.hs
--- a/src/examples/Examples/MultiMap/Instances/MultiMap4.hs
+++ b/src/examples/Examples/MultiMap/Instances/MultiMap4.hs
@@ -1,5 +1,5 @@
 -- |
--- Copyright: © 2022–2024 Jonathan Knowles
+-- Copyright: © 2022–2025 Jonathan Knowles
 -- License: Apache-2.0
 --
 -- A __lawful__ implementation of 'MultiMap', implemented in terms of
diff --git a/src/examples/Examples/MultiSet.hs b/src/examples/Examples/MultiSet.hs
--- a/src/examples/Examples/MultiSet.hs
+++ b/src/examples/Examples/MultiSet.hs
@@ -1,5 +1,5 @@
 -- |
--- Copyright: © 2022–2024 Jonathan Knowles
+-- Copyright: © 2022–2025 Jonathan Knowles
 -- License: Apache-2.0
 --
 -- A multiset type, implemented in terms of 'MonoidMap'.
diff --git a/src/examples/Examples/NestedMonoidMap.hs b/src/examples/Examples/NestedMonoidMap.hs
--- a/src/examples/Examples/NestedMonoidMap.hs
+++ b/src/examples/Examples/NestedMonoidMap.hs
@@ -1,7 +1,7 @@
 {-# LANGUAGE TypeSynonymInstances #-}
 
 -- |
--- Copyright: © 2022–2024 Jonathan Knowles
+-- Copyright: © 2022–2025 Jonathan Knowles
 -- License: Apache-2.0
 --
 -- A nested map with compound keys, implemented in terms of 'MonoidMap'.
diff --git a/src/examples/Examples/RecoveredMap.hs b/src/examples/Examples/RecoveredMap.hs
--- a/src/examples/Examples/RecoveredMap.hs
+++ b/src/examples/Examples/RecoveredMap.hs
@@ -2,7 +2,7 @@
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 
 -- |
--- Copyright: © 2022–2024 Jonathan Knowles
+-- Copyright: © 2022–2025 Jonathan Knowles
 -- License: Apache-2.0
 --
 -- An ordinary left-biased map similar to 'Map', implemented in terms of
diff --git a/src/internal/Data/MonoidMap/Internal.hs b/src/internal/Data/MonoidMap/Internal.hs
--- a/src/internal/Data/MonoidMap/Internal.hs
+++ b/src/internal/Data/MonoidMap/Internal.hs
@@ -5,7 +5,7 @@
 {- HLINT ignore "Redundant bracket" -}
 
 -- |
--- Copyright: © 2022–2024 Jonathan Knowles
+-- Copyright: © 2022–2025 Jonathan Knowles
 -- License: Apache-2.0
 --
 -- Provides /internal/ operations for the 'MonoidMap' type.
@@ -65,6 +65,19 @@
     , mapKeys
     , mapKeysWith
 
+    -- ** Folding
+    , foldl
+    , foldr
+    , foldlWithKey
+    , foldrWithKey
+    , foldMapWithKey
+
+    -- *** Strict folding
+    , foldl'
+    , foldr'
+    , foldlWithKey'
+    , foldrWithKey'
+
     -- * Monoidal operations
 
     -- ** Association
@@ -118,7 +131,18 @@
     where
 
 import Prelude hiding
-    ( drop, filter, lookup, map, null, splitAt, subtract, take )
+    ( drop
+    , filter
+    , foldl
+    , foldl'
+    , foldr
+    , lookup
+    , map
+    , null
+    , splitAt
+    , subtract
+    , take
+    )
 
 import Control.DeepSeq
     ( NFData )
@@ -362,7 +386,7 @@
 -- Satisfies the following property for all possible keys __@k@__:
 --
 -- @
--- 'get' k 'empty' == 'mempty'
+-- 'get' k 'empty' '==' 'mempty'
 -- @
 --
 -- Provides the definition of 'mempty' for the 'MonoidMap' instance of
@@ -432,7 +456,7 @@
 -- Satisfies the following property for all possible keys __@k@__:
 --
 -- @
--- 'get' k ('fromMap' m) '==' 'Map.findWithDefault' 'mempty' 'k' m
+-- 'get' k ('fromMap' m) '==' 'Map'.'Map.findWithDefault' 'mempty' 'k' m
 -- @
 --
 -- This function performs canonicalisation of 'C.null' values, and has a time
@@ -489,7 +513,7 @@
 -- Satisfies the following round-trip property:
 --
 -- @
--- 'fromMap' ('toMap' m) == m
+-- 'fromMap' ('toMap' m) '==' m
 -- @
 --
 toMap :: forall k v. MonoidMap k v -> Map k v
@@ -945,6 +969,202 @@
     -> MonoidMap k1 v
     -> MonoidMap k2 v
 mapKeysWith combine fk = fromListWith combine . fmap (B.first fk) . toList
+
+--------------------------------------------------------------------------------
+-- Lazy folding
+--------------------------------------------------------------------------------
+
+-- | \(O(n)\). Folds over the values in the map using the given
+--   left-associative binary operator.
+--
+-- Satisfies the following property:
+--
+-- @
+-- 'foldl' f r m '==' 'Map'.'Map.foldl' f r ('toMap' m)
+-- @
+--
+-- @since 0.0.1.7
+--
+foldl :: (r -> v -> r) -> r -> MonoidMap k v -> r
+foldl =
+    (coerce
+        :: ((r -> v -> r) -> r ->       Map k v -> r)
+        -> ((r -> v -> r) -> r -> MonoidMap k v -> r)
+    )
+    Map.foldl
+{-# INLINE foldl #-}
+
+-- | \(O(n)\). Folds over the values in the map using the given
+--   right-associative binary operator.
+--
+-- Satisfies the following property:
+--
+-- @
+-- 'foldr' f r m '==' 'Map'.'Map.foldr' f r ('toMap' m)
+-- @
+--
+-- @since 0.0.1.7
+--
+foldr :: (v -> r -> r) -> r -> MonoidMap k v -> r
+foldr =
+    (coerce
+        :: ((v -> r -> r) -> r ->       Map k v -> r)
+        -> ((v -> r -> r) -> r -> MonoidMap k v -> r)
+    )
+    Map.foldr
+{-# INLINE foldr #-}
+
+-- | \(O(n)\). Folds over the keys and values in the map using the given
+--   left-associative binary operator.
+--
+-- Satisfies the following property:
+--
+-- @
+-- 'foldlWithKey' f r m '==' 'Map'.'Map.foldlWithKey' f r ('toMap' m)
+-- @
+--
+-- @since 0.0.1.7
+--
+foldlWithKey :: (r -> k -> v -> r) -> r -> MonoidMap k v -> r
+foldlWithKey =
+    (coerce
+        :: ((r -> k -> v -> r) -> r ->       Map k v -> r)
+        -> ((r -> k -> v -> r) -> r -> MonoidMap k v -> r)
+    )
+    Map.foldlWithKey
+{-# INLINE foldlWithKey #-}
+
+-- | \(O(n)\). Folds over the keys and values in the map using the given
+--   right-associative binary operator.
+--
+-- Satisfies the following property:
+--
+-- @
+-- 'foldrWithKey' f r m '==' 'Map'.'Map.foldrWithKey' f r ('toMap' m)
+-- @
+--
+-- @since 0.0.1.7
+--
+foldrWithKey :: (k -> v -> r -> r) -> r -> MonoidMap k v -> r
+foldrWithKey =
+    (coerce
+        :: ((k -> v -> r -> r) -> r ->       Map k v -> r)
+        -> ((k -> v -> r -> r) -> r -> MonoidMap k v -> r)
+    )
+    Map.foldrWithKey
+{-# INLINE foldrWithKey #-}
+
+-- | \(O(n)\). Folds over the keys and values in the map using the given
+--   monoid.
+--
+-- Satisfies the following property:
+--
+-- @
+-- 'foldMapWithKey' f m '==' 'Map'.'Map.foldMapWithKey' f ('toMap' m)
+-- @
+--
+-- @since 0.0.1.7
+--
+foldMapWithKey :: Monoid r => (k -> v -> r) -> MonoidMap k v -> r
+foldMapWithKey =
+    (coerce
+        :: ((k -> v -> r) ->       Map k v -> r)
+        -> ((k -> v -> r) -> MonoidMap k v -> r)
+    )
+    Map.foldMapWithKey
+{-# INLINE foldMapWithKey #-}
+
+--------------------------------------------------------------------------------
+-- Strict folding
+--------------------------------------------------------------------------------
+
+-- | \(O(n)\). A strict version of 'foldl'.
+--
+-- Each application of the operator is evaluated before using the result in the
+-- next application. This function is strict in the starting value.
+--
+-- Satisfies the following property:
+--
+-- @
+-- 'foldl'' f r m '==' 'Map'.'Map.foldl'' f r ('toMap' m)
+-- @
+--
+-- @since 0.0.1.7
+--
+foldl' :: (r -> v -> r) -> r -> MonoidMap k v -> r
+foldl' =
+    (coerce
+        :: ((r -> v -> r) -> r ->       Map k v -> r)
+        -> ((r -> v -> r) -> r -> MonoidMap k v -> r)
+    )
+    Map.foldl'
+{-# INLINE foldl' #-}
+
+-- | \(O(n)\). A strict version of 'foldr'.
+--
+-- Each application of the operator is evaluated before using the result in the
+-- next application. This function is strict in the starting value.
+--
+-- Satisfies the following property:
+--
+-- @
+-- 'foldr'' f r m '==' 'Map'.'Map.foldr'' f r ('toMap' m)
+-- @
+--
+-- @since 0.0.1.7
+--
+foldr' :: (v -> r -> r) -> r -> MonoidMap k v -> r
+foldr' =
+    (coerce
+        :: ((v -> r -> r) -> r ->       Map k v -> r)
+        -> ((v -> r -> r) -> r -> MonoidMap k v -> r)
+    )
+    Map.foldr'
+{-# INLINE foldr' #-}
+
+-- | \(O(n)\). A strict version of 'foldlWithKey'.
+--
+-- Each application of the operator is evaluated before using the result in the
+-- next application. This function is strict in the starting value.
+--
+-- Satisfies the following property:
+--
+-- @
+-- 'foldlWithKey'' f r m '==' 'Map'.'Map.foldlWithKey'' f r ('toMap' m)
+-- @
+--
+-- @since 0.0.1.7
+--
+foldlWithKey' :: (r -> k -> v -> r) -> r -> MonoidMap k v -> r
+foldlWithKey' =
+    (coerce
+        :: ((r -> k -> v -> r) -> r ->       Map k v -> r)
+        -> ((r -> k -> v -> r) -> r -> MonoidMap k v -> r)
+    )
+    Map.foldlWithKey'
+{-# INLINE foldlWithKey' #-}
+
+-- | \(O(n)\). A strict version of 'foldrWithKey'.
+--
+-- Each application of the operator is evaluated before using the result in the
+-- next application. This function is strict in the starting value.
+--
+-- Satisfies the following property:
+--
+-- @
+-- 'foldrWithKey'' f r m '==' 'Map'.'Map.foldrWithKey'' f r ('toMap' m)
+-- @
+--
+-- @since 0.0.1.7
+--
+foldrWithKey' :: (k -> v -> r -> r) -> r -> MonoidMap k v -> r
+foldrWithKey' =
+    (coerce
+        :: ((k -> v -> r -> r) -> r ->       Map k v -> r)
+        -> ((k -> v -> r -> r) -> r -> MonoidMap k v -> r)
+    )
+    Map.foldrWithKey'
+{-# INLINE foldrWithKey' #-}
 
 --------------------------------------------------------------------------------
 -- Comparison
diff --git a/src/internal/Data/MonoidMap/Unsafe.hs b/src/internal/Data/MonoidMap/Unsafe.hs
--- a/src/internal/Data/MonoidMap/Unsafe.hs
+++ b/src/internal/Data/MonoidMap/Unsafe.hs
@@ -1,7 +1,7 @@
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 
 -- |
--- Copyright: © 2022–2024 Jonathan Knowles
+-- Copyright: © 2022–2025 Jonathan Knowles
 -- License: Apache-2.0
 --
 -- Provides /unsafe/ operations for the 'MonoidMap' type.
diff --git a/src/public/Data/MonoidMap.hs b/src/public/Data/MonoidMap.hs
--- a/src/public/Data/MonoidMap.hs
+++ b/src/public/Data/MonoidMap.hs
@@ -1,7 +1,7 @@
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 
 -- |
--- Copyright: © 2022–2024 Jonathan Knowles
+-- Copyright: © 2022–2025 Jonathan Knowles
 -- License: Apache-2.0
 --
 module Data.MonoidMap
@@ -63,6 +63,19 @@
     , map
     , mapKeys
     , mapKeysWith
+
+    -- ** Folding
+    , foldl
+    , foldr
+    , foldlWithKey
+    , foldrWithKey
+    , foldMapWithKey
+
+    -- *** Strict folding
+    , foldl'
+    , foldr'
+    , foldlWithKey'
+    , foldrWithKey'
 
     -- * Monoidal operations
 
diff --git a/src/test/Data/MonoidMap/AccessSpec.hs b/src/test/Data/MonoidMap/AccessSpec.hs
--- a/src/test/Data/MonoidMap/AccessSpec.hs
+++ b/src/test/Data/MonoidMap/AccessSpec.hs
@@ -3,7 +3,7 @@
 {- HLINT ignore "Use null" -}
 
 -- |
--- Copyright: © 2022–2024 Jonathan Knowles
+-- Copyright: © 2022–2025 Jonathan Knowles
 -- License: Apache-2.0
 --
 module Data.MonoidMap.AccessSpec
diff --git a/src/test/Data/MonoidMap/ClassSpec.hs b/src/test/Data/MonoidMap/ClassSpec.hs
--- a/src/test/Data/MonoidMap/ClassSpec.hs
+++ b/src/test/Data/MonoidMap/ClassSpec.hs
@@ -1,7 +1,7 @@
 {-# OPTIONS_GHC -fno-warn-orphans #-}
 
 -- |
--- Copyright: © 2022–2024 Jonathan Knowles
+-- Copyright: © 2022–2025 Jonathan Knowles
 -- License: Apache-2.0
 --
 module Data.MonoidMap.ClassSpec
diff --git a/src/test/Data/MonoidMap/ComparisonSpec.hs b/src/test/Data/MonoidMap/ComparisonSpec.hs
--- a/src/test/Data/MonoidMap/ComparisonSpec.hs
+++ b/src/test/Data/MonoidMap/ComparisonSpec.hs
@@ -3,7 +3,7 @@
 {- HLINT ignore "Use null" -}
 
 -- |
--- Copyright: © 2022–2024 Jonathan Knowles
+-- Copyright: © 2022–2025 Jonathan Knowles
 -- License: Apache-2.0
 --
 module Data.MonoidMap.ComparisonSpec
diff --git a/src/test/Data/MonoidMap/ConversionSpec.hs b/src/test/Data/MonoidMap/ConversionSpec.hs
--- a/src/test/Data/MonoidMap/ConversionSpec.hs
+++ b/src/test/Data/MonoidMap/ConversionSpec.hs
@@ -3,7 +3,7 @@
 {- HLINT ignore "Use null" -}
 
 -- |
--- Copyright: © 2022–2024 Jonathan Knowles
+-- Copyright: © 2022–2025 Jonathan Knowles
 -- License: Apache-2.0
 --
 module Data.MonoidMap.ConversionSpec
diff --git a/src/test/Data/MonoidMap/DistributivitySpec.hs b/src/test/Data/MonoidMap/DistributivitySpec.hs
--- a/src/test/Data/MonoidMap/DistributivitySpec.hs
+++ b/src/test/Data/MonoidMap/DistributivitySpec.hs
@@ -4,7 +4,7 @@
 {- HLINT ignore "Use null" -}
 
 -- |
--- Copyright: © 2022–2024 Jonathan Knowles
+-- Copyright: © 2022–2025 Jonathan Knowles
 -- License: Apache-2.0
 --
 module Data.MonoidMap.DistributivitySpec
diff --git a/src/test/Data/MonoidMap/ExampleSpec.hs b/src/test/Data/MonoidMap/ExampleSpec.hs
--- a/src/test/Data/MonoidMap/ExampleSpec.hs
+++ b/src/test/Data/MonoidMap/ExampleSpec.hs
@@ -5,7 +5,7 @@
 {- HLINT ignore "Use null" -}
 
 -- |
--- Copyright: © 2022–2024 Jonathan Knowles
+-- Copyright: © 2022–2025 Jonathan Knowles
 -- License: Apache-2.0
 --
 module Data.MonoidMap.ExampleSpec
diff --git a/src/test/Data/MonoidMap/FilterSpec.hs b/src/test/Data/MonoidMap/FilterSpec.hs
--- a/src/test/Data/MonoidMap/FilterSpec.hs
+++ b/src/test/Data/MonoidMap/FilterSpec.hs
@@ -3,7 +3,7 @@
 {- HLINT ignore "Use null" -}
 
 -- |
--- Copyright: © 2022–2024 Jonathan Knowles
+-- Copyright: © 2022–2025 Jonathan Knowles
 -- License: Apache-2.0
 --
 module Data.MonoidMap.FilterSpec
diff --git a/src/test/Data/MonoidMap/FoldSpec.hs b/src/test/Data/MonoidMap/FoldSpec.hs
new file mode 100644
--- /dev/null
+++ b/src/test/Data/MonoidMap/FoldSpec.hs
@@ -0,0 +1,174 @@
+-- |
+-- Copyright: © 2022–2025 Jonathan Knowles
+-- License: Apache-2.0
+--
+module Data.MonoidMap.FoldSpec
+    ( spec
+    ) where
+
+import Prelude
+
+import Control.Monad
+    ( forM_ )
+import Data.Function
+    ( (&) )
+import Data.MonoidMap
+    ( MonoidMap )
+import Data.Proxy
+    ( Proxy (..) )
+import Test.Common
+    ( Key, Test, TestType (TestType), makeSpec, property, testTypesMonoidNull )
+import Test.Hspec
+    ( Spec, describe, it )
+import Test.QuickCheck
+    ( Fun (..), Property, applyFun2, applyFun3, (===) )
+
+import qualified Data.Map.Strict as Map
+import qualified Data.MonoidMap as MonoidMap
+
+spec :: Spec
+spec = describe "Folding" $ do
+
+    forM_ testTypesMonoidNull $ \(TestType p) -> specFor (Proxy @Key) p
+
+specFor :: forall k v. Test k v => Proxy k -> Proxy v -> Spec
+specFor = makeSpec $ do
+
+    describe "Lazy" $ do
+
+        it "prop_toMap_foldl" $
+            prop_toMap_foldl
+                @k @v & property
+        it "prop_toMap_foldr" $
+            prop_toMap_foldr
+                @k @v & property
+        it "prop_toMap_foldlWithKey" $
+            prop_toMap_foldlWithKey
+                @k @v & property
+        it "prop_toMap_foldrWithKey" $
+            prop_toMap_foldrWithKey
+                @k @v & property
+        it "prop_toMap_foldMapWithKey" $
+            prop_toMap_foldMapWithKey
+                @k @v & property
+
+    describe "Strict" $ do
+
+        it "prop_toMap_foldl'" $
+            prop_toMap_foldl'
+                @k @v & property
+        it "prop_toMap_foldr'" $
+            prop_toMap_foldr'
+                @k @v & property
+        it "prop_toMap_foldlWithKey'" $
+            prop_toMap_foldlWithKey'
+                @k @v & property
+        it "prop_toMap_foldrWithKey'" $
+            prop_toMap_foldrWithKey'
+                @k @v & property
+
+--------------------------------------------------------------------------------
+-- Lazy folding
+--------------------------------------------------------------------------------
+
+prop_toMap_foldl
+    :: Test k v
+    => r ~ v
+    => Fun (r, v) r
+    -> r
+    -> MonoidMap k v
+    -> Property
+prop_toMap_foldl (applyFun2 -> f) r m =
+    MonoidMap.foldl f r m
+      === Map.foldl f r (MonoidMap.toMap m)
+
+prop_toMap_foldr
+    :: Test k v
+    => r ~ v
+    => Fun (v, r) r
+    -> r
+    -> MonoidMap k v
+    -> Property
+prop_toMap_foldr (applyFun2 -> f) r m =
+    MonoidMap.foldr f r m
+      === Map.foldr f r (MonoidMap.toMap m)
+
+prop_toMap_foldlWithKey
+    :: Test k v
+    => r ~ v
+    => Fun (r, k, v) r
+    -> r
+    -> MonoidMap k v
+    -> Property
+prop_toMap_foldlWithKey (applyFun3 -> f) r m =
+    MonoidMap.foldlWithKey f r m
+      === Map.foldlWithKey f r (MonoidMap.toMap m)
+
+prop_toMap_foldrWithKey
+    :: Test k v
+    => r ~ v
+    => Fun (k, v, r) r
+    -> r
+    -> MonoidMap k v
+    -> Property
+prop_toMap_foldrWithKey (applyFun3 -> f) r m =
+    MonoidMap.foldrWithKey f r m
+      === Map.foldrWithKey f r (MonoidMap.toMap m)
+
+prop_toMap_foldMapWithKey
+    :: Test k v
+    => r ~ v
+    => Fun (k, v) r
+    -> MonoidMap k v
+    -> Property
+prop_toMap_foldMapWithKey (applyFun2 -> f) m =
+    MonoidMap.foldMapWithKey f m
+      === Map.foldMapWithKey f (MonoidMap.toMap m)
+
+--------------------------------------------------------------------------------
+-- Strict folding
+--------------------------------------------------------------------------------
+
+prop_toMap_foldl'
+    :: Test k v
+    => r ~ v
+    => Fun (r, v) r
+    -> r
+    -> MonoidMap k v
+    -> Property
+prop_toMap_foldl' (applyFun2 -> f) r m =
+    MonoidMap.foldl' f r m
+      === Map.foldl' f r (MonoidMap.toMap m)
+
+prop_toMap_foldr'
+    :: Test k v
+    => r ~ v
+    => Fun (v, r) r
+    -> r
+    -> MonoidMap k v
+    -> Property
+prop_toMap_foldr' (applyFun2 -> f) r m =
+    MonoidMap.foldr' f r m
+      === Map.foldr' f r (MonoidMap.toMap m)
+
+prop_toMap_foldlWithKey'
+    :: Test k v
+    => r ~ v
+    => Fun (r, k, v) r
+    -> r
+    -> MonoidMap k v
+    -> Property
+prop_toMap_foldlWithKey' (applyFun3 -> f) r m =
+    MonoidMap.foldlWithKey' f r m
+      === Map.foldlWithKey' f r (MonoidMap.toMap m)
+
+prop_toMap_foldrWithKey'
+    :: Test k v
+    => r ~ v
+    => Fun (k, v, r) r
+    -> r
+    -> MonoidMap k v
+    -> Property
+prop_toMap_foldrWithKey' (applyFun3 -> f) r m =
+    MonoidMap.foldrWithKey' f r m
+      === Map.foldrWithKey' f r (MonoidMap.toMap m)
diff --git a/src/test/Data/MonoidMap/IntersectionSpec.hs b/src/test/Data/MonoidMap/IntersectionSpec.hs
--- a/src/test/Data/MonoidMap/IntersectionSpec.hs
+++ b/src/test/Data/MonoidMap/IntersectionSpec.hs
@@ -3,7 +3,7 @@
 {- HLINT ignore "Use null" -}
 
 -- |
--- Copyright: © 2022–2024 Jonathan Knowles
+-- Copyright: © 2022–2025 Jonathan Knowles
 -- License: Apache-2.0
 --
 module Data.MonoidMap.IntersectionSpec
diff --git a/src/test/Data/MonoidMap/MapSpec.hs b/src/test/Data/MonoidMap/MapSpec.hs
--- a/src/test/Data/MonoidMap/MapSpec.hs
+++ b/src/test/Data/MonoidMap/MapSpec.hs
@@ -3,7 +3,7 @@
 {- HLINT ignore "Use null" -}
 
 -- |
--- Copyright: © 2022–2024 Jonathan Knowles
+-- Copyright: © 2022–2025 Jonathan Knowles
 -- License: Apache-2.0
 --
 module Data.MonoidMap.MapSpec
diff --git a/src/test/Data/MonoidMap/MembershipSpec.hs b/src/test/Data/MonoidMap/MembershipSpec.hs
--- a/src/test/Data/MonoidMap/MembershipSpec.hs
+++ b/src/test/Data/MonoidMap/MembershipSpec.hs
@@ -3,7 +3,7 @@
 {- HLINT ignore "Use null" -}
 
 -- |
--- Copyright: © 2022–2024 Jonathan Knowles
+-- Copyright: © 2022–2025 Jonathan Knowles
 -- License: Apache-2.0
 --
 module Data.MonoidMap.MembershipSpec
diff --git a/src/test/Data/MonoidMap/PartitionSpec.hs b/src/test/Data/MonoidMap/PartitionSpec.hs
--- a/src/test/Data/MonoidMap/PartitionSpec.hs
+++ b/src/test/Data/MonoidMap/PartitionSpec.hs
@@ -3,7 +3,7 @@
 {- HLINT ignore "Use null" -}
 
 -- |
--- Copyright: © 2022–2024 Jonathan Knowles
+-- Copyright: © 2022–2025 Jonathan Knowles
 -- License: Apache-2.0
 --
 module Data.MonoidMap.PartitionSpec
diff --git a/src/test/Data/MonoidMap/PrefixSpec.hs b/src/test/Data/MonoidMap/PrefixSpec.hs
--- a/src/test/Data/MonoidMap/PrefixSpec.hs
+++ b/src/test/Data/MonoidMap/PrefixSpec.hs
@@ -3,7 +3,7 @@
 {- HLINT ignore "Use null" -}
 
 -- |
--- Copyright: © 2022–2024 Jonathan Knowles
+-- Copyright: © 2022–2025 Jonathan Knowles
 -- License: Apache-2.0
 --
 module Data.MonoidMap.PrefixSpec
diff --git a/src/test/Data/MonoidMap/SingletonSpec.hs b/src/test/Data/MonoidMap/SingletonSpec.hs
--- a/src/test/Data/MonoidMap/SingletonSpec.hs
+++ b/src/test/Data/MonoidMap/SingletonSpec.hs
@@ -3,7 +3,7 @@
 {- HLINT ignore "Use null" -}
 
 -- |
--- Copyright: © 2022–2024 Jonathan Knowles
+-- Copyright: © 2022–2025 Jonathan Knowles
 -- License: Apache-2.0
 --
 module Data.MonoidMap.SingletonSpec
diff --git a/src/test/Data/MonoidMap/SliceSpec.hs b/src/test/Data/MonoidMap/SliceSpec.hs
--- a/src/test/Data/MonoidMap/SliceSpec.hs
+++ b/src/test/Data/MonoidMap/SliceSpec.hs
@@ -3,7 +3,7 @@
 {- HLINT ignore "Use null" -}
 
 -- |
--- Copyright: © 2022–2024 Jonathan Knowles
+-- Copyright: © 2022–2025 Jonathan Knowles
 -- License: Apache-2.0
 --
 module Data.MonoidMap.SliceSpec
diff --git a/src/test/Data/MonoidMap/SuffixSpec.hs b/src/test/Data/MonoidMap/SuffixSpec.hs
--- a/src/test/Data/MonoidMap/SuffixSpec.hs
+++ b/src/test/Data/MonoidMap/SuffixSpec.hs
@@ -3,7 +3,7 @@
 {- HLINT ignore "Use null" -}
 
 -- |
--- Copyright: © 2022–2024 Jonathan Knowles
+-- Copyright: © 2022–2025 Jonathan Knowles
 -- License: Apache-2.0
 --
 module Data.MonoidMap.SuffixSpec
diff --git a/src/test/Data/MonoidMap/UnionSpec.hs b/src/test/Data/MonoidMap/UnionSpec.hs
--- a/src/test/Data/MonoidMap/UnionSpec.hs
+++ b/src/test/Data/MonoidMap/UnionSpec.hs
@@ -3,7 +3,7 @@
 {- HLINT ignore "Use null" -}
 
 -- |
--- Copyright: © 2022–2024 Jonathan Knowles
+-- Copyright: © 2022–2025 Jonathan Knowles
 -- License: Apache-2.0
 --
 module Data.MonoidMap.UnionSpec
diff --git a/src/test/Data/MonoidMap/ValiditySpec.hs b/src/test/Data/MonoidMap/ValiditySpec.hs
--- a/src/test/Data/MonoidMap/ValiditySpec.hs
+++ b/src/test/Data/MonoidMap/ValiditySpec.hs
@@ -2,7 +2,7 @@
 {-# LANGUAGE RankNTypes #-}
 
 -- |
--- Copyright: © 2022–2024 Jonathan Knowles
+-- Copyright: © 2022–2025 Jonathan Knowles
 -- License: Apache-2.0
 --
 module Data.MonoidMap.ValiditySpec
diff --git a/src/test/Examples/MultiMapSpec.hs b/src/test/Examples/MultiMapSpec.hs
--- a/src/test/Examples/MultiMapSpec.hs
+++ b/src/test/Examples/MultiMapSpec.hs
@@ -5,7 +5,7 @@
 {- HLINT ignore "Use null" -}
 
 -- |
--- Copyright: © 2022–2024 Jonathan Knowles
+-- Copyright: © 2022–2025 Jonathan Knowles
 -- License: Apache-2.0
 --
 module Examples.MultiMapSpec
diff --git a/src/test/Examples/RecoveredMapSpec.hs b/src/test/Examples/RecoveredMapSpec.hs
--- a/src/test/Examples/RecoveredMapSpec.hs
+++ b/src/test/Examples/RecoveredMapSpec.hs
@@ -5,7 +5,7 @@
 {-# HLINT ignore "Use null" #-}
 
 -- |
--- Copyright: © 2022–2024 Jonathan Knowles
+-- Copyright: © 2022–2025 Jonathan Knowles
 -- License: Apache-2.0
 --
 module Examples.RecoveredMapSpec
diff --git a/src/test/Test/Combinators/NonZero.hs b/src/test/Test/Combinators/NonZero.hs
--- a/src/test/Test/Combinators/NonZero.hs
+++ b/src/test/Test/Combinators/NonZero.hs
@@ -1,5 +1,5 @@
 -- |
--- Copyright: © 2022–2024 Jonathan Knowles
+-- Copyright: © 2022–2025 Jonathan Knowles
 -- License: Apache-2.0
 --
 module Test.Combinators.NonZero
diff --git a/src/test/Test/Common.hs b/src/test/Test/Common.hs
--- a/src/test/Test/Common.hs
+++ b/src/test/Test/Common.hs
@@ -5,7 +5,7 @@
 {- HLINT ignore "Use null" -}
 
 -- |
--- Copyright: © 2022–2024 Jonathan Knowles
+-- Copyright: © 2022–2025 Jonathan Knowles
 -- License: Apache-2.0
 --
 module Test.Common
diff --git a/src/test/Test/Hspec/Unit.hs b/src/test/Test/Hspec/Unit.hs
--- a/src/test/Test/Hspec/Unit.hs
+++ b/src/test/Test/Hspec/Unit.hs
@@ -1,7 +1,7 @@
 {-# LANGUAGE FunctionalDependencies #-}
 
 -- |
--- Copyright: © 2022–2024 Jonathan Knowles
+-- Copyright: © 2022–2025 Jonathan Knowles
 -- License: Apache-2.0
 --
 module Test.Hspec.Unit where
diff --git a/src/test/Test/QuickCheck/Classes/Hspec.hs b/src/test/Test/QuickCheck/Classes/Hspec.hs
--- a/src/test/Test/QuickCheck/Classes/Hspec.hs
+++ b/src/test/Test/QuickCheck/Classes/Hspec.hs
@@ -1,7 +1,7 @@
 {-# LANGUAGE PolyKinds #-}
 
 -- |
--- Copyright: © 2022–2024 Jonathan Knowles
+-- Copyright: © 2022–2025 Jonathan Knowles
 -- License: Apache-2.0
 --
 -- Provides testing functions to check that type class instances obey laws.
