diff --git a/src/js_native_api_v8.cc b/src/js_native_api_v8.cc
index 0ddbc87e45393e..b538c729bc77aa 100644
--- a/src/js_native_api_v8.cc
+++ b/src/js_native_api_v8.cc
@@ -2452,8 +2452,16 @@ napi_status NAPI_CDECL napi_check_object_type_tag(napi_env env,
     napi_type_tag tag;
     val.As<v8::BigInt>()->ToWordsArray(
         &sign, &size, reinterpret_cast<uint64_t*>(&tag));
-    if (size == 2 && sign == 0)
-      *result = (tag.lower == type_tag->lower && tag.upper == type_tag->upper);
+    if (sign == 0) {
+      if (size == 2) {
+        *result =
+            (tag.lower == type_tag->lower && tag.upper == type_tag->upper);
+      } else if (size == 1) {
+        *result = (tag.lower == type_tag->lower);
+      } else if (size == 0) {
+        *result = (type_tag->lower == 0 && type_tag->upper == 0);
+      }
+    }
   }
 
   return GET_RETURN_STATUS(env);
diff --git a/test/js-native-api/test_object/test.js b/test/js-native-api/test_object/test.js
index 021f45b55f407a..06aaff275e7281 100644
--- a/test/js-native-api/test_object/test.js
+++ b/test/js-native-api/test_object/test.js
@@ -163,10 +163,14 @@ assert.strictEqual(newObject.test_string, 'test string');
   // Verify that objects can be type-tagged and type-tag-checked.
   const obj1 = test_object.TypeTaggedInstance(0);
   const obj2 = test_object.TypeTaggedInstance(1);
+  const obj3 = test_object.TypeTaggedInstance(2);
+  const obj4 = test_object.TypeTaggedInstance(3);
 
   // Verify that type tags are correctly accepted.
   assert.strictEqual(test_object.CheckTypeTag(0, obj1), true);
   assert.strictEqual(test_object.CheckTypeTag(1, obj2), true);
+  assert.strictEqual(test_object.CheckTypeTag(2, obj3), true);
+  assert.strictEqual(test_object.CheckTypeTag(3, obj4), true);
 
   // Verify that wrongly tagged objects are rejected.
   assert.strictEqual(test_object.CheckTypeTag(0, obj2), false);
diff --git a/test/js-native-api/test_object/test_object.c b/test/js-native-api/test_object/test_object.c
index 46a99a1e9ee1ed..a8836ee0d51402 100644
--- a/test/js-native-api/test_object/test_object.c
+++ b/test/js-native-api/test_object/test_object.c
@@ -605,9 +605,11 @@ static napi_value TestSeal(napi_env env,
 }
 
 // We create two type tags. They are basically 128-bit UUIDs.
-static const napi_type_tag type_tags[2] = {
-  { 0xdaf987b3cc62481a, 0xb745b0497f299531 },
-  { 0xbb7936c374084d9b, 0xa9548d0762eeedb9 }
+static const napi_type_tag type_tags[5] = {
+  {0xdaf987b3cc62481a, 0xb745b0497f299531},
+  {0xbb7936c374084d9b, 0xa9548d0762eeedb9},
+  {0xa5ed9ce2e4c00c38, 0x0},
+  {0x0, 0x0},
 };
 
 static napi_value