diff --git a/html-entities.cabal b/html-entities.cabal
--- a/html-entities.cabal
+++ b/html-entities.cabal
@@ -1,7 +1,7 @@
 name:
   html-entities
 version:
-  1.1.2
+  1.1.3
 synopsis:
   A codec library for HTML-escaped text and HTML-entities
 description:
diff --git a/library/HTMLEntities/Decoder.hs b/library/HTMLEntities/Decoder.hs
--- a/library/HTMLEntities/Decoder.hs
+++ b/library/HTMLEntities/Decoder.hs
@@ -19,6 +19,16 @@
   P.htmlEntity <* P.endOfInput
 
 -- |
+-- A decoder of a single entity.
+-- 
+-- >>> mapM_ Data.Text.IO.putStrLn $ htmlEntityBody "#169"
+-- ©
+htmlEntityBody :: Text -> Either String Text
+htmlEntityBody =
+  P.parseOnly $
+  P.htmlEntityBody <* P.endOfInput
+
+-- |
 -- A decoder of a text with entities.
 -- 
 -- Produces a text builder, 
diff --git a/library/HTMLEntities/Parser.hs b/library/HTMLEntities/Parser.hs
--- a/library/HTMLEntities/Parser.hs
+++ b/library/HTMLEntities/Parser.hs
@@ -16,15 +16,33 @@
 -- >>> mapM_ Data.Text.IO.putStrLn $ Data.Attoparsec.Text.parseOnly htmlEntity "&#169;"
 -- ©
 -- 
--- as well as named entities:
+-- as well as the named entities:
 -- 
 -- >>> mapM_ Data.Text.IO.putStrLn $ Data.Attoparsec.Text.parseOnly htmlEntity "&copy;"
 -- ©
 -- 
-{-# INLINABLE htmlEntity #-}
+{-# INLINE htmlEntity #-}
 htmlEntity :: Parser Text
 htmlEntity =
-  char '&' *> (numeric <|> named) <* char ';'
+  char '&' *> htmlEntityBody <* char ';'
+
+-- |
+-- A parser of the body of a single entity.
+-- 
+-- Parses numeric encoding:
+-- 
+-- >>> mapM_ Data.Text.IO.putStrLn $ Data.Attoparsec.Text.parseOnly htmlEntityBody "#169"
+-- ©
+-- 
+-- as well as the named entities:
+-- 
+-- >>> mapM_ Data.Text.IO.putStrLn $ Data.Attoparsec.Text.parseOnly htmlEntityBody "copy"
+-- ©
+-- 
+{-# INLINABLE htmlEntityBody #-}
+htmlEntityBody :: Parser Text
+htmlEntityBody =
+  numeric <|> named
   where
     numeric =
       Text.singleton . chr <$> (char '#' *> (decimal <|> (char 'x' *> hexadecimal)))
