diff --git a/item.go b/item.go
index <HASH>..<HASH> 100644
--- a/item.go
+++ b/item.go
@@ -98,6 +98,10 @@ func (item *Item) Len() int {
 	return item.length
 }
 
+func (item *Item) Space() int {
+	return len(item.bytes) - item.length
+}
+
 func (item *Item) TrimLastIf(b byte) bool {
 	l := item.Len() - 1
 	if l == -1 || item.bytes[l] != b {
diff --git a/item_test.go b/item_test.go
index <HASH>..<HASH> 100644
--- a/item_test.go
+++ b/item_test.go
@@ -164,3 +164,12 @@ func (i *ItemTests) CloneDetachesTheObject() {
 	item.Raw()[0] = '!'
 	Expect(actual[0]).To.Equal(byte('o'))
 }
+
+func (i *ItemTests) ReturnsTheAvailableSpace() {
+	item := NewItem(10, nil)
+	Expect(item.Space()).To.Equal(10)
+	item.WriteString("hello")
+	Expect(item.Space()).To.Equal(5)
+	item.WriteString("world")
+	Expect(item.Space()).To.Equal(0)
+}
Can call item.Space() to see how much space is left.