diff --git a/src/reader/spirv/parser_impl.cc b/src/reader/spirv/parser_impl.cc
index 27cac0a..ebddea9 100644
--- a/src/reader/spirv/parser_impl.cc
+++ b/src/reader/spirv/parser_impl.cc
@@ -487,16 +487,22 @@
   // Register names from OpName and OpMemberName
   for (const auto& inst : module_->debugs2()) {
     switch (inst.opcode()) {
-      case SpvOpName:
-        namer_.SuggestSanitizedName(inst.GetSingleWordInOperand(0),
-                                    inst.GetInOperand(1).AsString());
-
+      case SpvOpName: {
+        const auto name = inst.GetInOperand(1).AsString();
+        if (!name.empty()) {
+          namer_.SuggestSanitizedName(inst.GetSingleWordInOperand(0), name);
+        }
         break;
-      case SpvOpMemberName:
-        namer_.SuggestSanitizedMemberName(inst.GetSingleWordInOperand(0),
-                                          inst.GetSingleWordInOperand(1),
-                                          inst.GetInOperand(2).AsString());
+      }
+      case SpvOpMemberName: {
+        const auto name = inst.GetInOperand(2).AsString();
+        if (!name.empty()) {
+          namer_.SuggestSanitizedMemberName(inst.GetSingleWordInOperand(0),
+                                            inst.GetSingleWordInOperand(1),
+                                            name);
+        }
         break;
+      }
       default:
         break;
     }
diff --git a/src/reader/spirv/parser_impl_user_name_test.cc b/src/reader/spirv/parser_impl_user_name_test.cc
index acbe71e..1afcdc1 100644
--- a/src/reader/spirv/parser_impl_user_name_test.cc
+++ b/src/reader/spirv/parser_impl_user_name_test.cc
@@ -36,6 +36,15 @@
   EXPECT_THAT(p->namer().GetName(1), Eq("the_void_type"));
 }
 
+TEST_F(SpvParserTest, UserName_IgnoreEmptyName) {
+  auto* p = parser(test::Assemble(R"(
+     OpName %1 ""
+     %1 = OpTypeVoid
+  )"));
+  EXPECT_TRUE(p->BuildAndParseInternalModule());
+  EXPECT_FALSE(p->namer().HasName(1));
+}
+
 TEST_F(SpvParserTest, UserName_DistinguishDuplicateSuggestion) {
   auto* p = parser(test::Assemble(R"(
      OpName %1 "vanilla"
@@ -62,6 +71,16 @@
   EXPECT_THAT(p->namer().GetMemberName(3, 2), Eq("chocolate"));
 }
 
+TEST_F(SpvParserTest, UserName_IgnoreEmptyMemberName) {
+  auto* p = parser(test::Assemble(R"(
+     OpMemberName %3 0 ""
+     %2 = OpTypeInt 32 0
+     %3 = OpTypeStruct %2
+  )"));
+  EXPECT_TRUE(p->BuildAndParseInternalModule());
+  EXPECT_THAT(p->namer().GetMemberName(3, 0), Eq("field0"));
+}
+
 TEST_F(SpvParserTest, UserName_SynthesizeMemberNames) {
   auto* p = parser(test::Assemble(R"(
      %2 = OpTypeInt 32 0
