diff --git a/properties.go b/properties.go
index 3741842..a5aaa21 100644
--- a/properties.go
+++ b/properties.go
@@ -324,6 +324,15 @@
 	return len(p.m)
 }
 
+// Keys returns all keys.
+func (p *Properties) Keys() []string {
+	keys := make([]string, len(p.m))
+	for k, _ := range p.m {
+		keys = append(keys, k)
+	}
+	return keys
+}
+
 // Set sets the property key to the corresponding value.
 // If a value for key existed before then ok is true and prev
 // contains the previous value. If the value contains a
diff --git a/properties_test.go b/properties_test.go
index e0e0f9b..ef5ce2c 100644
--- a/properties_test.go
+++ b/properties_test.go
@@ -285,6 +285,20 @@
 
 // ----------------------------------------------------------------------------
 
+type keysTest struct {
+	input string
+	keys  []string
+}
+
+var keysTests = []*keysTest{
+	&keysTest{"", []string{}},
+	&keysTest{"key = abc", []string{"key"}},
+	&keysTest{"key = abc\nkey2=def", []string{"key", "key2"}},
+	&keysTest{"key = abc\nkey=def", []string{"key"}},
+}
+
+// ----------------------------------------------------------------------------
+
 // TestBasic tests basic single key/value combinations with all possible
 // whitespace, delimiter and newline permutations.
 func (l *TestSuite) TestBasic(c *C) {
@@ -456,6 +470,17 @@
 	c.Assert(func() { p.MustGetString("invalid") }, PanicMatches, "unknown property: invalid")
 }
 
+func (l *TestSuite) TestKeys(c *C) {
+	for _, test := range keysTests {
+		p, err := parse(test.input)
+		c.Assert(err, IsNil)
+		c.Assert(p.Len(), Equals, len(test.keys))
+		for _, key := range test.keys {
+			_, ok := p.Get(key)
+			c.Assert(ok, Equals, true)
+		}
+	}
+}
 func (l *TestSuite) TestWrite(c *C) {
 	for _, test := range writeTests {
 		input, output, enc := test[0], test[1], test[2]
