diff --git a/src/wp-includes/feed.php b/src/wp-includes/feed.php
index d2fd25ecb0..8fc9874da6 100644
--- a/src/wp-includes/feed.php
+++ b/src/wp-includes/feed.php
@@ -519,6 +519,34 @@ function atom_enclosure() {
 		if ( 'enclosure' === $key ) {
 			foreach ( (array) $val as $enc ) {
 				$enclosure = explode( "\n", $enc );
+
+				$url = $type = '';
+				$length = 0;
+
+				$mimes = get_allowed_mime_types();
+
+				// Parse url
+				if ( isset( $enclosure[0] ) && is_string( $enclosure[0] ) ) {
+					$url = trim( $enclosure[0] );
+				}
+
+				// Parse length and type
+				foreach( range( 1, 2 ) as $i ) {
+					if ( isset( $enclosure[$i] ) ) {
+						if( is_numeric( $enclosure[$i] ) ) {
+							$length = trim( $enclosure[$i] );
+						} elseif ( in_array( $enclosure[$i], $mimes ) ) {
+							$type = trim( $enclosure[$i] );
+						}
+					}
+				}
+
+				$html_link_tag = sprintf(
+					"<link href=\"%s\" rel=\"enclosure\" length=\"%d\" type=\"%s\" />\n",
+					esc_url ( $url ),
+					esc_attr( $length ),
+					esc_attr( $type )
+				);
 				/**
 				 * Filters the atom enclosure HTML link tag for the current post.
 				 *
@@ -526,7 +554,7 @@ function atom_enclosure() {
 				 *
 				 * @param string $html_link_tag The HTML link tag with a URI and other attributes.
 				 */
-				echo apply_filters( 'atom_enclosure', '<link href="' . esc_url( trim( $enclosure[0] ) ) . '" rel="enclosure" length="' . absint( trim( $enclosure[1] ) ) . '" type="' . esc_attr( trim( $enclosure[2] ) ) . '" />' . "\n" );
+				echo apply_filters( 'atom_enclosure', $html_link_tag );
 			}
 		}
 	}
diff --git a/tests/phpunit/tests/feed/atom.php b/tests/phpunit/tests/feed/atom.php
index 56f15e5d0d..7ca0bbc969 100644
--- a/tests/phpunit/tests/feed/atom.php
+++ b/tests/phpunit/tests/feed/atom.php
@@ -205,4 +205,76 @@ class Tests_Feeds_Atom extends WP_UnitTestCase {
 			}
 		}
 	}
+
+	/**
+	 * @test 33591
+	 */
+	function test_atom_enclosure_with_extended_url_length_type_parsing()
+	{
+		$enclosures = array(
+			array(
+				'actual'        => "https://wordpress.dev/wp-content/uploads/2017/09/movie.mp4\n318465\nvideo/mp4",     // url length type
+				'expected'      => array(
+					'href'          => "https://wordpress.dev/wp-content/uploads/2017/09/movie.mp4",
+					'length'        => 318465,
+					'type'          => "video/mp4"
+				)
+			),
+			array(
+					'actual'        => "https://wordpress.dev/wp-content/uploads/2017/09/movie.mp4\nvideo/mp4\n318465",     // url type length
+					'expected'      => array(
+						'href'          => "https://wordpress.dev/wp-content/uploads/2017/09/movie.mp4",
+						'length'        => 318465,
+						'type'          => "video/mp4"
+					)
+			),
+			array(
+					'actual'        => "https://wordpress.dev/wp-content/uploads/2017/09/movie.mp4\n318465",                // url length
+					'expected'      => array(
+						'href'          => "https://wordpress.dev/wp-content/uploads/2017/09/movie.mp4",
+						'length'        => 318465,
+						'type'          => ""
+					)
+			),
+			array(
+					'actual'        => "https://wordpress.dev/wp-content/uploads/2017/01/audio.mp3\n\naudio/mpeg",          // url type
+					'expected'      => array(
+						'href'          => "https://wordpress.dev/wp-content/uploads/2017/01/audio.mp3",
+						'length'        => 0,
+						'type'          => "audio/mpeg"
+					)
+			),
+			array(
+					'actual'        => "https://wordpress.dev/wp-content/uploads/2016/01/test.mp4",                         // url
+					'expected'      => array(
+						'href'          => "https://wordpress.dev/wp-content/uploads/2016/01/test.mp4",
+						'length'        => 0,
+						'type'          => ""
+					)
+			),
+		);
+
+		$post_id = end( self::$posts );
+		foreach( $enclosures as $enclosure ) {
+			add_post_meta( $post_id, 'enclosure', $enclosure['actual'] );
+		}
+		$this->go_to( '/?feed=atom' );
+		$feed = $this->do_atom();
+		$xml = xml_to_array( $feed );
+		$entries = xml_find( $xml, 'feed', 'entry' );
+		$entries = array_slice( $entries, 0, 1 );
+
+		foreach ( $entries as $key => $entry ) {
+			$links = xml_find( $entries[$key]['child'], 'link' );
+			$i = 0;
+			foreach ( (array) $links as $link ) {
+				if ( 'enclosure' == $link['attributes']['rel'] ) {
+					$this->assertEquals( $enclosures[$i]['expected']['href'] , $link['attributes']['href'] );
+					$this->assertEquals( $enclosures[$i]['expected']['length'] , $link['attributes']['length'] );
+					$this->assertEquals( $enclosures[$i]['expected']['type'] , $link['attributes']['type'] );
+					$i++;
+				}
+			}
+		}
+	}
 }
