diff --git a/lib/internal/url.js b/lib/internal/url.js
index c4835c54e4abe3..7e44959ca2caad 100644
--- a/lib/internal/url.js
+++ b/lib/internal/url.js
@@ -747,13 +747,13 @@ ObjectDefineProperties(URLSearchParams.prototype, {
  * We use `href` and `protocol` as they are the only properties that are
  * easy to retrieve and calculate due to the lazy nature of the getters.
  *
- * We check for auth attribute to distinguish legacy url instance with
+ * We check for `auth` and `path` attribute to distinguish legacy url instance with
  * WHATWG URL instance.
  * @param {*} self
  * @returns {self is URL}
  */
 function isURL(self) {
-  return Boolean(self?.href && self.protocol && self.auth === undefined);
+  return Boolean(self?.href && self.protocol && self.auth === undefined && self.path === undefined);
 }
 
 class URL {
diff --git a/test/parallel/test-url-is-url.js b/test/parallel/test-url-is-url.js
index 0b42bb3b2f2d4a..6bb8a1595df2a0 100644
--- a/test/parallel/test-url-is-url.js
+++ b/test/parallel/test-url-is-url.js
@@ -9,3 +9,8 @@ const { isURL } = require('internal/url');
 
 assert.strictEqual(isURL(new URL('https://www.nodejs.org')), true);
 assert.strictEqual(isURL(parse('https://www.nodejs.org')), false);
+assert.strictEqual(isURL({
+  href: 'https://www.nodejs.org',
+  protocol: 'https:',
+  path: '/',
+}), false);