diff --git a/src/tag/TagBuilder.cxx b/src/tag/TagBuilder.cxx
index 40ccff752..bc8ea2ae7 100644
--- a/src/tag/TagBuilder.cxx
+++ b/src/tag/TagBuilder.cxx
@@ -218,6 +218,16 @@ TagBuilder::AddItem(TagType type, const char *value)
 	AddItem(type, value, strlen(value));
 }
 
+void
+TagBuilder::AddEmptyItem(TagType type)
+{
+	tag_pool_lock.lock();
+	auto i = tag_pool_get_item(type, "", 0);
+	tag_pool_lock.unlock();
+
+	items.push_back(i);
+}
+
 void
 TagBuilder::RemoveAll()
 {
diff --git a/src/tag/TagBuilder.hxx b/src/tag/TagBuilder.hxx
index c0b4bebfa..6de52b775 100644
--- a/src/tag/TagBuilder.hxx
+++ b/src/tag/TagBuilder.hxx
@@ -153,6 +153,13 @@ public:
 	gcc_nonnull_all
 	void AddItem(TagType type, const char *value);
 
+	/**
+	 * Appends a new tag item with an empty value.  Do not use
+	 * this unless you know what you're doing - because usually,
+	 * empty values are discarded.
+	 */
+	void AddEmptyItem(TagType type);
+
 	/**
 	 * Removes all tag items.
 	 */