diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,10 @@
 # Revision history for deriving-aeson
 
+## 0.2.7
+
+* Added a `StringModifier` instance to a list of types
+* Added `Rename :: Symbol -> Symbol -> Type`
+
 ## 0.2.6
 
 * Added `StringModifier` instances to 3 and 4-tuples
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -23,7 +23,7 @@
   , userAPIToken :: Maybe String
   } deriving Generic
   deriving (FromJSON, ToJSON)
-  via CustomJSON '[OmitNothingFields, FieldLabelModifier (StripPrefix "user", CamelToSnake)] User
+  via CustomJSON '[OmitNothingFields, FieldLabelModifier '[StripPrefix "user", CamelToSnake]] User
 
 testData :: [User]
 testData = [User 42 "Alice" Nothing, User 43 "Bob" (Just "xyz")]
@@ -36,7 +36,7 @@
 
 * `Prefixed str` = `CustomJSON '[FieldLabelModifier (StripPrefix str)]`
 * `PrefixedSnake str` = `CustomJSON '[FieldLabelModifier (StripPrefix str, CamelToSnake)]`
-* `Snake` = `CustomJSON '[FieldLabelModifier (StripPrefix str, CamelToSnake)]`
+* `Snake` = `CustomJSON '[FieldLabelModifier '[StripPrefix str, CamelToSnake]]`
 * `Vanilla` = `CustomJSON '[]`
 
 How it works
diff --git a/deriving-aeson.cabal b/deriving-aeson.cabal
--- a/deriving-aeson.cabal
+++ b/deriving-aeson.cabal
@@ -1,6 +1,6 @@
 cabal-version:       2.4
 name:                deriving-aeson
-version:             0.2.6.1
+version:             0.2.7
 synopsis:            Type driven generic aeson instance customisation
 description:         This package provides a newtype wrapper with
   FromJSON/ToJSON instances customisable via a phantom type parameter.
diff --git a/src/Deriving/Aeson.hs b/src/Deriving/Aeson.hs
--- a/src/Deriving/Aeson.hs
+++ b/src/Deriving/Aeson.hs
@@ -30,6 +30,7 @@
   , CamelTo
   , CamelToKebab
   , CamelToSnake
+  , Rename
   -- * Interface
   , AesonOptions(..)
   , StringModifier(..)
@@ -95,6 +96,9 @@
 -- | CamelCase to kebab-case
 type CamelToKebab = CamelTo "-"
 
+-- | Rename fields called @from@ to @to@.
+data Rename (from :: Symbol) (to :: Symbol)
+
 -- | Reify a function which modifies names
 class StringModifier t where
   getStringModifier :: String -> String
@@ -102,6 +106,13 @@
 instance KnownSymbol k => StringModifier (StripPrefix k) where
   getStringModifier = fromMaybe <*> stripPrefix (symbolVal (Proxy @k))
 
+instance StringModifier '[] where
+  getStringModifier = id
+
+-- | Left-to-right (@'foldr' ('flip' ('.')) 'id'@) composition
+instance (StringModifier a, StringModifier as) => StringModifier (a ': as) where
+  getStringModifier = getStringModifier @as . getStringModifier @a
+
 -- | Left-to-right (@'flip' '.'@) composition
 instance (StringModifier a, StringModifier b) => StringModifier (a, b) where
   getStringModifier = getStringModifier @b . getStringModifier @a
@@ -118,6 +129,9 @@
   getStringModifier = camelTo2 char
     where
       (char : _) = symbolVal (Proxy @separator)
+
+instance (KnownSymbol from, KnownSymbol to) => StringModifier (Rename from to) where
+  getStringModifier s = if s == symbolVal (Proxy @from) then symbolVal (Proxy @to) else s
 
 type family NonEmptyString (xs :: Symbol) :: Constraint where
   NonEmptyString "" = TypeError ('Text "Empty string separator provided for camelTo separator")
diff --git a/src/Deriving/Aeson/Stock.hs b/src/Deriving/Aeson/Stock.hs
--- a/src/Deriving/Aeson/Stock.hs
+++ b/src/Deriving/Aeson/Stock.hs
@@ -18,7 +18,7 @@
 type Prefixed str = CustomJSON '[FieldLabelModifier (StripPrefix str)]
 
 -- | Strip @str@ prefices and convert from CamelCase to snake_case
-type PrefixedSnake str = CustomJSON '[FieldLabelModifier (StripPrefix str, CamelToSnake)]
+type PrefixedSnake str = CustomJSON '[FieldLabelModifier '[StripPrefix str, CamelToSnake]]
 
 -- | Convert from CamelCase to snake_case
 type Snake = CustomJSON '[FieldLabelModifier CamelToSnake]
diff --git a/tests/test.hs b/tests/test.hs
--- a/tests/test.hs
+++ b/tests/test.hs
@@ -12,9 +12,12 @@
   { userId :: Int
   , userName :: String
   , userAPIToken :: Maybe String
+  , userType :: String
   } deriving Generic
   deriving (FromJSON, ToJSON)
-  via CustomJSON '[OmitNothingFields, FieldLabelModifier (StripPrefix "user", CamelToSnake)] User
+  via CustomJSON '[ OmitNothingFields
+                  , FieldLabelModifier '[StripPrefix "user", CamelToSnake, Rename "type" "user_type"]
+                  ] User
 
 data Foo = Foo { fooFoo :: Int, fooBar :: Int }
   deriving Generic
@@ -22,7 +25,7 @@
   via Prefixed "foo" Foo
 
 testData :: [User]
-testData = [User 42 "Alice" Nothing, User 43 "Bob" (Just "xyz")]
+testData = [User 42 "Alice" Nothing "human", User 43 "Bob" (Just "xyz") "bot"]
 
 main = do
   BL.putStrLn $ encode testData
