diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
--- a/CHANGELOG.markdown
+++ b/CHANGELOG.markdown
@@ -1,3 +1,8 @@
+0.2.1
+=====
+
+  * Cosmetic changes in the help output.
+
 0.2.0
 =====
 
@@ -5,7 +10,7 @@
 
   * Added `parseOr`, a slightly generalized version of `parse`.
 
-  * Renamed `parseTest` to `parsePure`
+  * Renamed `parseTest` to `parsePure`.
 
 0.1.0
 =====
diff --git a/envparse.cabal b/envparse.cabal
--- a/envparse.cabal
+++ b/envparse.cabal
@@ -1,5 +1,5 @@
 name:                envparse
-version:             0.2.0
+version:             0.2.1
 synopsis:            Parse environment variables
 description:
   Here's a simple example of a program that uses @envparse@'s parser:
@@ -42,7 +42,7 @@
   &#x20;
   Parsing errors:
   &#x20;
-  &#x20; NAME is missing
+  &#x20; NAME is unset
   @
 homepage:            https://supki.github.io/envparse
 license:             BSD2
@@ -65,7 +65,7 @@
 source-repository this
   type:     git
   location: https://github.com/supki/envparse
-  tag:      0.2.0
+  tag:      0.2.1
 
 library
   default-language:
diff --git a/src/Env.hs b/src/Env.hs
--- a/src/Env.hs
+++ b/src/Env.hs
@@ -39,7 +39,7 @@
 --
 -- Parsing errors:
 --
---   NAME is missing
+--   NAME is unset
 -- @
 module Env
   ( parse
diff --git a/src/Env/Help.hs b/src/Env/Help.hs
--- a/src/Env/Help.hs
+++ b/src/Env/Help.hs
@@ -3,10 +3,11 @@
   ( helpDoc
   ) where
 
-import           Data.List (intercalate)
+import qualified Data.List as List
 import qualified Data.Map as Map
 import           Data.Maybe (catMaybes)
 import           Data.Monoid ((<>))
+import           Data.Ord (comparing)
 
 import           Env.Free
 import           Env.Parse
@@ -14,12 +15,12 @@
 
 helpDoc :: Info a -> Parser b -> [Error] -> String
 helpDoc Info { infoHeader, infoDesc, infoFooter } p fs =
-  intercalate "\n\n" . catMaybes $
+  List.intercalate "\n\n" . catMaybes $
     [ infoHeader
-    , fmap (intercalate "\n" . splitWords 50) infoDesc
+    , fmap (List.intercalate "\n" . splitWords 50) infoDesc
     , Just "Available environment variables:"
-    , Just (intercalate "\n" (helpParserDoc p))
-    , fmap (intercalate "\n" . splitWords 50) infoFooter
+    , Just (List.intercalate "\n" (helpParserDoc p))
+    , fmap (List.intercalate "\n" . splitWords 50) infoFooter
     ] ++ map Just (helpFailuresDoc fs)
 
 helpParserDoc :: Parser a -> [String]
@@ -40,11 +41,15 @@
 
 helpFailuresDoc :: [Error] -> [String]
 helpFailuresDoc [] = []
-helpFailuresDoc fs = ["Parsing errors:", intercalate "\n" (map helpFailureDoc fs)]
+helpFailuresDoc fs = ["Parsing errors:", List.intercalate "\n" (map helpFailureDoc (List.sortBy (comparing varName) fs))]
 
 helpFailureDoc :: Error -> String
 helpFailureDoc (ParseError n e)  = "  " ++ n ++ " cannot be parsed: " ++ e
-helpFailureDoc (ENoExistError n) = "  " ++ n ++ " is missing"
+helpFailureDoc (ENoExistError n) = "  " ++ n ++ " is unset"
+
+varName :: Error -> String
+varName (ParseError n _)  = n
+varName (ENoExistError n) = n
 
 splitWords :: Int -> String -> [String]
 splitWords n = go [] 0 . words
