diff --git a/Data/Bimap.hs b/Data/Bimap.hs
--- a/Data/Bimap.hs
+++ b/Data/Bimap.hs
@@ -89,6 +89,7 @@
 
 import           Control.Monad.Catch
 
+import           Data.Function       (on)
 import           Data.List           (foldl', sort)
 import qualified Data.Map            as M
 import           Data.Maybe          (fromMaybe)
@@ -111,7 +112,10 @@
     show x = "fromList " ++ (show . toList $ x)
 
 instance (Eq a, Eq b) => Eq (Bimap a b) where
-    (==) bx by = toAscList bx == toAscList by
+    (==) = (==) `on` toAscList
+
+instance (Ord a, Ord b) => Ord (Bimap a b) where
+    compare = compare `on` toAscList
 
 {-|
 A 'Bimap' action failed.
diff --git a/bimap.cabal b/bimap.cabal
--- a/bimap.cabal
+++ b/bimap.cabal
@@ -1,6 +1,6 @@
 cabal-version:       >= 1.8
 name:                bimap
-version:             0.3.2
+version:             0.3.3
 synopsis:            Bidirectional mapping between two key types
 description:
   A data structure representing a bidirectional mapping between two
