diff --git a/Data/Yaml.hs b/Data/Yaml.hs
--- a/Data/Yaml.hs
+++ b/Data/Yaml.hs
@@ -114,6 +114,11 @@
 objToEvents' (Object pairs) rest =
     EventMappingStart Nothing
   : foldr ($) (EventMappingEnd : rest) (map pairToEvents $ M.toList pairs)
+
+-- Empty strings need special handling to ensure they get quoted. This avoids:
+-- https://github.com/snoyberg/yaml/issues/24
+objToEvents' (String "") rest = EventScalar "" StrTag SingleQuoted Nothing : rest
+
 objToEvents' (String s) rest = EventScalar (encodeUtf8 s) StrTag PlainNoTag Nothing : rest
 objToEvents' Null rest = EventScalar "null" NullTag PlainNoTag Nothing : rest
 objToEvents' (Bool True) rest = EventScalar "true" BoolTag PlainNoTag Nothing : rest
diff --git a/test/main.hs b/test/main.hs
--- a/test/main.hs
+++ b/test/main.hs
@@ -241,7 +241,9 @@
     [ D.String "foo"
     , object
         [ ("bar1", D.String "bar2")
+        , ("bar3", D.String "")
         ]
+    , D.String ""
     ]
 
 caseEncodeDecodeData :: Assertion
diff --git a/yaml.cabal b/yaml.cabal
--- a/yaml.cabal
+++ b/yaml.cabal
@@ -1,5 +1,5 @@
 name:            yaml
-version:         0.8.2.1
+version:         0.8.2.2
 license:         BSD3
 license-file:    LICENSE
 author:          Michael Snoyman <michael@snoyman.com>, Anton Ageev <antage@gmail.com>,Kirill Simonov 
