diff --git src/wp-includes/general-template.php src/wp-includes/general-template.php
index 4e049d5..5c6a3b0 100644
--- src/wp-includes/general-template.php
+++ src/wp-includes/general-template.php
@@ -2844,7 +2844,7 @@ function wp_resource_hints() {
 				} else if ( ! empty( $parsed['scheme'] ) ) {
 					$url = $parsed['scheme'] . '://' . $parsed['host'];
 				} else {
-					$url = $parsed['host'];
+					$url = '//' . $parsed['host'];
 				}
 			}
 
diff --git tests/phpunit/tests/general/resourceHints.php tests/phpunit/tests/general/resourceHints.php
index f6da557..8a95755 100644
--- tests/phpunit/tests/general/resourceHints.php
+++ tests/phpunit/tests/general/resourceHints.php
@@ -66,6 +66,37 @@ class Tests_WP_Resource_Hints extends WP_UnitTestCase {
 		return $hints;
 	}
 
+	/**
+	 * @ticket 37652
+	 */
+	function test_preconnect() {
+		$expected = "<link rel='dns-prefetch' href='//s.w.org'>\n" .
+		            "<link rel='preconnect' href='//wordpress.org'>\n" .
+		            "<link rel='preconnect' href='https://make.wordpress.org'>\n" .
+		            "<link rel='preconnect' href='http://google.com'>\n" .
+		            "<link rel='preconnect' href='http://w.org'>\n";
+
+		add_filter( 'wp_resource_hints', array( $this, '_add_preconnect_domains' ), 10, 2 );
+
+		$actual = get_echo( 'wp_resource_hints' );
+
+		remove_filter( 'wp_resource_hints', array( $this, '_add_preconnect_domains' ) );
+
+		$this->assertEquals( $expected, $actual );
+	}
+
+	function _add_preconnect_domains( $hints, $method ) {
+		if ( 'preconnect' === $method ) {
+			$hints[] = '//wordpress.org';
+			$hints[] = 'https://make.wordpress.org';
+			$hints[] = 'htps://example.com'; // Invalid URLs should be skipped.
+			$hints[] = 'http://google.com';
+			$hints[] = 'w.org';
+		}
+
+		return $hints;
+	}
+
 	function test_prerender() {
 		$expected = "<link rel='dns-prefetch' href='//s.w.org'>\n" .
 					"<link rel='prerender' href='https://make.wordpress.org/great-again'>\n" .
@@ -176,4 +207,39 @@ class Tests_WP_Resource_Hints extends WP_UnitTestCase {
 		$actual = get_echo( 'wp_resource_hints' );
 		$this->assertEquals( $expected, $actual );
 	}
+
+	/**
+	 * @ticket 37652
+	 */
+	function test_malformed_urls() {
+		$expected = "<link rel='dns-prefetch' href='//s.w.org'>\n";
+
+		// Errant colon.
+		add_filter( 'wp_resource_hints', array( $this, '_add_malformed_url_errant_colon' ), 10, 2 );
+		$actual = get_echo( 'wp_resource_hints' );
+		remove_filter( 'wp_resource_hints', array( $this, '_add_malformed_url_errant_colon' ) );
+		$this->assertEquals( $expected, $actual );
+
+		// Unsupported Scheme.
+		add_filter( 'wp_resource_hints', array( $this, '_add_malformed_url_unsupported_scheme' ), 10, 2 );
+		$actual = get_echo( 'wp_resource_hints' );
+		remove_filter( 'wp_resource_hints', array( $this, '_add_malformed_url_unsupported_scheme' ) );
+		$this->assertEquals( $expected, $actual );
+	}
+
+	function _add_malformed_url_errant_colon( $hints, $method ) {
+		if ( 'preconnect' === $method ) {
+			$hints[] = '://core.trac.wordpress.org/ticket/37652';
+		}
+
+		return $hints;
+	}
+
+	function _add_malformed_url_unsupported_scheme( $hints, $method ) {
+		if ( 'preconnect' === $method ) {
+			$hints[] = 'git://develop.git.wordpress.org/';
+		}
+
+		return $hints;
+	}
 }
