diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,9 @@
+0.0.6
+
+* Add BiIdIdentityLeft and BiIdIdentityRight type aliases
+* Add identityLeft optic family (identityLeftProfunctor, identityLeftProfunctorBifunctor, identityLeftBifunctorProfunctor, identityLeftBifunctor)
+* Add identityRight optic family (identityRightProfunctor, identityRightProfunctorBifunctor, identityRightBifunctorProfunctor, identityRightBifunctor)
+
 0.0.5
 
 * Use deriving for standard instances where possible
diff --git a/id.cabal b/id.cabal
--- a/id.cabal
+++ b/id.cabal
@@ -1,6 +1,6 @@
 cabal-version:        2.4
 name:                 id
-version:              0.0.5
+version:              0.0.6
 synopsis:             Id (f a) and BiId (p (s a) (t b)) data types
 description:
                       Id (f a) and BiId (p (s a) (t b)) data types, with optics and functions for switching the type constructors
diff --git a/src/Data/BiId.hs b/src/Data/BiId.hs
--- a/src/Data/BiId.hs
+++ b/src/Data/BiId.hs
@@ -24,9 +24,19 @@
     identityProfunctor,
     identityProfunctorBifunctor,
     identityBifunctorProfunctor,
+    identityRightBifunctor,
+    identityRightProfunctor,
+    identityRightProfunctorBifunctor,
+    identityRightBifunctorProfunctor,
+    identityLeftBifunctor,
+    identityLeftProfunctor,
+    identityLeftProfunctorBifunctor,
+    identityLeftBifunctorProfunctor,
 
     -- * Type aliases
     BiIdIdentity,
+    BiIdIdentityLeft,
+    BiIdIdentityRight,
     Product,
     Coproduct,
     Exponential,
@@ -124,6 +134,10 @@
 
 type BiIdIdentity p a b = BiId p Identity Identity a b
 
+type BiIdIdentityLeft p t a b = BiId p Identity t a b
+
+type BiIdIdentityRight p s a b = BiId p s Identity a b
+
 -- |
 -- >>> view identityBifunctor (BiId (Identity 3, Identity True) :: BiIdIdentity (,) Int Bool)
 -- (3,True)
@@ -202,6 +216,146 @@
 {-# INLINE identityBifunctorProfunctor #-}
 {-# SPECIALIZE identityBifunctorProfunctor :: Iso (BiIdIdentity (,) a b) (BiIdIdentity (->) a' b') ((,) a b) ((->) a' b') #-}
 {-# SPECIALIZE identityBifunctorProfunctor :: Iso (BiIdIdentity Either a b) (BiIdIdentity (->) a' b') (Either a b) ((->) a' b') #-}
+
+-- |
+-- >>> view identityRightProfunctor (BiId (Tagged (Identity True)) :: BiIdIdentityRight Tagged [] Int Bool)
+-- Tagged True
+--
+-- >>> view (from identityRightProfunctor) (Tagged True) :: BiIdIdentityRight Tagged [] Int Bool
+-- BiId (Tagged (Identity True))
+identityRightProfunctor ::
+  (Profunctor p, Profunctor p') =>
+  Iso
+    (BiIdIdentityRight p s a b)
+    (BiIdIdentityRight p' s' a' b')
+    (p (s a) b)
+    (p' (s' a') b')
+identityRightProfunctor =
+  iso
+    (\(BiId x) -> rmap runIdentity x)
+    (BiId . rmap Identity)
+{-# INLINE identityRightProfunctor #-}
+
+-- |
+-- >>> view identityRightProfunctorBifunctor (BiId (Tagged (Identity True)) :: BiIdIdentityRight Tagged [] Int Bool)
+-- Tagged True
+identityRightProfunctorBifunctor ::
+  (Profunctor p, Bifunctor p') =>
+  Iso
+    (BiIdIdentityRight p s a b)
+    (BiIdIdentityRight p' s' a' b')
+    (p (s a) b)
+    (p' (s' a') b')
+identityRightProfunctorBifunctor =
+  iso
+    (\(BiId x) -> rmap runIdentity x)
+    (BiId . second Identity)
+{-# INLINE identityRightProfunctorBifunctor #-}
+
+-- |
+-- >>> view identityRightBifunctorProfunctor (BiId (Tagged (Identity True)) :: BiIdIdentityRight Tagged [] Int Bool)
+-- Tagged True
+identityRightBifunctorProfunctor ::
+  (Bifunctor p, Profunctor p') =>
+  Iso
+    (BiIdIdentityRight p s a b)
+    (BiIdIdentityRight p' s' a' b')
+    (p (s a) b)
+    (p' (s' a') b')
+identityRightBifunctorProfunctor =
+  iso
+    (\(BiId x) -> second runIdentity x)
+    (BiId . rmap Identity)
+{-# INLINE identityRightBifunctorProfunctor #-}
+
+-- |
+-- >>> view identityRightBifunctor (BiId ([1,2], Identity True) :: BiIdIdentityRight (,) [] Int Bool)
+-- ([1,2],True)
+--
+-- >>> view (from identityRightBifunctor) ([1,2], True) :: BiIdIdentityRight (,) [] Int Bool
+-- BiId ([1,2],Identity True)
+identityRightBifunctor ::
+  (Bifunctor p, Bifunctor p') =>
+  Iso
+    (BiIdIdentityRight p s a b)
+    (BiIdIdentityRight p' s' a' b')
+    (p (s a) b)
+    (p' (s' a') b')
+identityRightBifunctor =
+  iso
+    (\(BiId x) -> second runIdentity x)
+    (BiId . second Identity)
+{-# INLINE identityRightBifunctor #-}
+
+-- |
+-- >>> view identityLeftProfunctor (BiId (Tagged (Identity True)) :: BiIdIdentityLeft Tagged Identity Int Bool)
+-- Tagged (Identity True)
+--
+-- >>> view (from identityLeftProfunctor) (Tagged (Identity True)) :: BiIdIdentityLeft Tagged Identity Int Bool
+-- BiId (Tagged (Identity True))
+identityLeftProfunctor ::
+  (Profunctor p, Profunctor p') =>
+  Iso
+    (BiIdIdentityLeft p t a b)
+    (BiIdIdentityLeft p' t' a' b')
+    (p a (t b))
+    (p' a' (t' b'))
+identityLeftProfunctor =
+  iso
+    (\(BiId x) -> lmap Identity x)
+    (BiId . lmap runIdentity)
+{-# INLINE identityLeftProfunctor #-}
+
+-- |
+-- >>> view identityLeftProfunctorBifunctor (BiId (Tagged (Identity True)) :: BiIdIdentityLeft Tagged Identity Int Bool)
+-- Tagged (Identity True)
+identityLeftProfunctorBifunctor ::
+  (Profunctor p, Bifunctor p') =>
+  Iso
+    (BiIdIdentityLeft p t a b)
+    (BiIdIdentityLeft p' t' a' b')
+    (p a (t b))
+    (p' a' (t' b'))
+identityLeftProfunctorBifunctor =
+  iso
+    (\(BiId x) -> lmap Identity x)
+    (BiId . first Identity)
+{-# INLINE identityLeftProfunctorBifunctor #-}
+
+-- |
+-- >>> view identityLeftBifunctorProfunctor (BiId (Tagged (Identity True)) :: BiIdIdentityLeft Tagged Identity Int Bool)
+-- Tagged (Identity True)
+identityLeftBifunctorProfunctor ::
+  (Bifunctor p, Profunctor p') =>
+  Iso
+    (BiIdIdentityLeft p t a b)
+    (BiIdIdentityLeft p' t' a' b')
+    (p a (t b))
+    (p' a' (t' b'))
+identityLeftBifunctorProfunctor =
+  iso
+    (\(BiId x) -> first runIdentity x)
+    (BiId . lmap runIdentity)
+{-# INLINE identityLeftBifunctorProfunctor #-}
+
+-- |
+-- >>> view identityLeftBifunctor (BiId (Identity 3, Identity True) :: BiIdIdentityLeft (,) Identity Int Bool)
+-- (3,Identity True)
+--
+-- >>> view (from identityLeftBifunctor) (3, Identity True) :: BiIdIdentityLeft (,) Identity Int Bool
+-- BiId (Identity 3,Identity True)
+identityLeftBifunctor ::
+  (Bifunctor p, Bifunctor p') =>
+  Iso
+    (BiIdIdentityLeft p t a b)
+    (BiIdIdentityLeft p' t' a' b')
+    (p a (t b))
+    (p' a' (t' b'))
+identityLeftBifunctor =
+  iso
+    (\(BiId x) -> first runIdentity x)
+    (BiId . first Identity)
+{-# INLINE identityLeftBifunctor #-}
 
 instance
   (BiId p s t a b ~ x) =>
