diff --git src/wp-includes/default-filters.php src/wp-includes/default-filters.php
index e4ac939..e9c09c5 100644
--- src/wp-includes/default-filters.php
+++ src/wp-includes/default-filters.php
@@ -458,6 +458,7 @@ add_action( 'embed_head',             'wp_no_robots'                          );
 add_action( 'embed_head',             'rel_canonical'                         );
 add_action( 'embed_head',             'locale_stylesheet'                     );
 
+add_action( 'embed_footer',           'print_embed_sharing_dialog'            );
 add_action( 'embed_footer',           'print_embed_scripts'                   );
 add_action( 'embed_footer',           'wp_print_footer_scripts',        20    );
 
diff --git src/wp-includes/embed-functions.php src/wp-includes/embed-functions.php
index 4bd142a..8065b7c 100644
--- src/wp-includes/embed-functions.php
+++ src/wp-includes/embed-functions.php
@@ -958,3 +958,203 @@ function print_embed_scripts() {
 function _oembed_filter_feed_content( $content ) {
 	return str_replace( '<iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted" style="display:none;"', '<iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted"', $content );
 }
+
+/**
+ * Prints the heading area of the embed template.
+ *
+ * This includes the post's title and the featured image
+ * if available. On 404, it only displays a 'Not found' heading.
+ *
+ * @since 4.4.0
+ */
+function the_embed_header() {
+	if ( is_404() ) {
+		?>
+		<p class="wp-embed-heading"><?php _e( 'Oops! That embed can&#8217;t be found.' ); ?></p>
+		<?php
+		return;
+	}
+
+	// Add post thumbnail to response if available.
+	$thumbnail_id = $shape = $image_size = false;
+
+	if ( has_post_thumbnail() ) {
+		$thumbnail_id = get_post_thumbnail_id();
+	}
+
+	if ( 'attachment' === get_post_type() && wp_attachment_is_image() ) {
+		$thumbnail_id = get_the_ID();
+	}
+
+	if ( $thumbnail_id ) {
+		$aspect_ratio = 1;
+		$measurements = array( 1, 1 );
+		$image_size   = 'full'; // Fallback.
+
+		$meta = wp_get_attachment_metadata( $thumbnail_id );
+		if ( is_array( $meta ) ) {
+			foreach ( $meta['sizes'] as $size => $data ) {
+				if ( $data['width'] / $data['height'] > $aspect_ratio ) {
+					$aspect_ratio = $data['width'] / $data['height'];
+					$measurements = array( $data['width'], $data['height'] );
+					$image_size   = $size;
+				}
+			}
+		}
+
+		/**
+		 * Filter the thumbnail image size for use in the embed template.
+		 *
+		 * @since 4.4.0
+		 *
+		 * @param string $image_size Thumbnail image size.
+		 */
+		$image_size = apply_filters( 'embed_thumbnail_image_size', $image_size );
+
+		$shape = $measurements[0] / $measurements[1] >= 1.75 ? 'rectangular' : 'square';
+
+		/**
+		 * Filter the thumbnail shape for use in the embed template.
+		 *
+		 * Rectangular images are shown above the title
+		 * while square images are shown next to the content.
+		 *
+		 * @since 4.4.0
+		 *
+		 * @param string $shape Thumbnail image shape. Either 'rectangular' or 'square'.
+		 */
+		$shape = apply_filters( 'embed_thumbnail_image_shape', $shape );
+	}
+
+	if ( $thumbnail_id && 'rectangular' === $shape ) {
+		?>
+		<div class="wp-embed-featured-image rectangular">
+			<a href="<?php the_permalink(); ?>" target="_top">
+				<?php echo wp_get_attachment_image( $thumbnail_id, $image_size ); ?>
+			</a>
+		</div>
+	<?php } ?>
+
+	<p class="wp-embed-heading"><a href="<?php the_permalink(); ?>" target="_top"><?php the_title(); ?></a></p>
+
+	<?php if ( $thumbnail_id && 'square' === $shape ) { ?>
+		<div class="wp-embed-featured-image square">
+			<a href="<?php the_permalink(); ?>" target="_top">
+				<?php echo wp_get_attachment_image( $thumbnail_id, $image_size ); ?>
+			</a>
+		</div>
+	<?php }
+}
+
+/**
+ * Prints the footer area of the embed template.
+ *
+ * This includes the site's title and
+ * sharing options if available.
+ *
+ * @since 4.4.0
+ */
+function the_embed_footer() {
+	$site_title = sprintf(
+		'<a href="%s" target="_top"><img src="%s" srcset="%s 2x" width="32" height="32" alt="" class="wp-embed-site-icon"/><span>%s</span></a>',
+		esc_url( home_url() ),
+		esc_url( get_site_icon_url( 32, admin_url( 'images/w-logo-blue.png' ) ) ),
+		esc_url( get_site_icon_url( 64, admin_url( 'images/w-logo-blue.png' ) ) ),
+		esc_html( get_bloginfo( 'name' ) )
+	);
+
+	/**
+	 * Filter the site title in the embed footer.
+	 *
+	 * @since 4.4.0
+	 *
+	 * @param string $site_title The site title markup.
+	 */
+	$site_title = apply_filters( 'embed_site_title', $site_title );
+	?>
+	<div class="wp-embed-footer">
+		<div class="wp-embed-site-title">
+			<?php echo $site_title; ?>
+		</div>
+		<?php if ( ! is_404() ) : ?>
+			<div class="wp-embed-meta">
+				<?php
+				/**
+				 * Print additional meta content in the embed template.
+				 *
+				 * @since 4.4.0
+				 */
+				do_action( 'embed_content_meta' );
+				?>
+				<?php if ( get_comments_number() || comments_open() ) : ?>
+					<div class="wp-embed-comments">
+						<a href="<?php comments_link(); ?>" target="_top">
+							<span class="dashicons dashicons-admin-comments"></span>
+							<?php
+							printf(
+								_n(
+									'%s <span class="screen-reader-text">Comment</span>',
+									'%s <span class="screen-reader-text">Comments</span>',
+									get_comments_number()
+								),
+								number_format_i18n( get_comments_number() )
+							);
+							?>
+						</a>
+					</div>
+				<?php endif; ?>
+				<div class="wp-embed-share">
+					<button type="button" class="wp-embed-share-dialog-open" aria-label="<?php esc_attr_e( 'Open sharing dialog' ); ?>">
+						<span class="dashicons dashicons-share"></span>
+					</button>
+				</div>
+			</div>
+		<?php endif; ?>
+	</div>
+<?php
+}
+
+/**
+ * Prints the necessary markup for the embed sharing dialog.
+ *
+ * @since 4.4.0
+ */
+function print_embed_sharing_dialog() {
+	if ( is_404() ) {
+		return;
+	}
+	?>
+	<div class="wp-embed-share-dialog hidden" role="dialog" aria-label="<?php esc_attr_e( 'Sharing options' ); ?>">
+		<div class="wp-embed-share-dialog-content">
+			<div class="wp-embed-share-dialog-text">
+				<ul class="wp-embed-share-tabs" role="tablist">
+					<li class="wp-embed-share-tab-button wp-embed-share-tab-button-wordpress" role="presentation">
+						<button type="button" role="tab" aria-controls="wp-embed-share-tab-wordpress" aria-selected="true" tabindex="0"><?php esc_html_e( 'WordPress Embed' ); ?></button>
+					</li>
+					<li class="wp-embed-share-tab-button wp-embed-share-tab-button-html" role="presentation">
+						<button type="button" role="tab" aria-controls="wp-embed-share-tab-html" aria-selected="false" tabindex="-1"><?php esc_html_e( 'HTML Embed' ); ?></button>
+					</li>
+				</ul>
+				<div id="wp-embed-share-tab-wordpress" class="wp-embed-share-tab" role="tabpanel" aria-hidden="false">
+					<input type="text" value="<?php the_permalink(); ?>" class="wp-embed-share-input" aria-describedby="wp-embed-share-description-wordpress" tabindex="0" readonly/>
+
+					<p class="wp-embed-share-description" id="wp-embed-share-description-wordpress">
+						<?php _e( 'Copy and paste this URL into your WordPress site to embed' ); ?>
+					</p>
+				</div>
+				<div id="wp-embed-share-tab-html" class="wp-embed-share-tab" role="tabpanel" aria-hidden="true">
+					<textarea class="wp-embed-share-input" aria-describedby="wp-embed-share-description-html" tabindex="0" readonly><?php echo esc_textarea( get_post_embed_html( 600, 400 ) ); ?></textarea>
+
+					<p class="wp-embed-share-description" id="wp-embed-share-description-html">
+						<?php _e( 'Copy and paste this code into your site to embed' ); ?>
+					</p>
+				</div>
+			</div>
+
+			<button type="button" class="wp-embed-share-dialog-close" aria-label="<?php esc_attr_e( 'Close sharing dialog' ); ?>">
+				<span class="dashicons dashicons-no"></span>
+			</button>
+		</div>
+	</div>
+	<?php
+}
diff --git src/wp-includes/embed-template.php src/wp-includes/embed-template.php
index d1166e5..e9e9853 100644
--- src/wp-includes/embed-template.php
+++ src/wp-includes/embed-template.php
@@ -33,81 +33,13 @@ if ( ! headers_sent() ) {
 <?php
 if ( have_posts() ) :
 	while ( have_posts() ) : the_post();
-		// Add post thumbnail to response if available.
-		$thumbnail_id = false;
-
-		if ( has_post_thumbnail() ) {
-			$thumbnail_id = get_post_thumbnail_id();
-		}
-
-		if ( 'attachment' === get_post_type() && wp_attachment_is_image() ) {
-			$thumbnail_id = get_the_ID();
-		}
-
-		if ( $thumbnail_id ) {
-			$aspect_ratio = 1;
-			$measurements = array( 1, 1 );
-			$image_size   = 'full'; // Fallback.
-
-			$meta = wp_get_attachment_metadata( $thumbnail_id );
-			if ( is_array( $meta ) ) {
-				foreach ( $meta['sizes'] as $size => $data ) {
-					if ( $data['width'] / $data['height'] > $aspect_ratio ) {
-						$aspect_ratio = $data['width'] / $data['height'];
-						$measurements = array( $data['width'], $data['height'] );
-						$image_size   = $size;
-					}
-				}
-			}
-
-			/**
-			 * Filter the thumbnail image size for use in the embed template.
-			 *
-			 * @since 4.4.0
-			 *
-			 * @param string $image_size Thumbnail image size.
-			 */
-			$image_size = apply_filters( 'embed_thumbnail_image_size', $image_size );
-
-			$shape = $measurements[0] / $measurements[1] >= 1.75 ? 'rectangular' : 'square';
-
-			/**
-			 * Filter the thumbnail shape for use in the embed template.
-			 *
-			 * Rectangular images are shown above the title
-			 * while square images are shown next to the content.
-			 *
-			 * @since 4.4.0
-			 *
-			 * @param string $shape Thumbnail image shape. Either 'rectangular' or 'square'.
-			 */
-			$shape = apply_filters( 'embed_thumbnail_image_shape', $shape );
-		}
 		?>
 		<div <?php post_class( 'wp-embed' ); ?>>
-			<?php if ( $thumbnail_id && 'rectangular' === $shape ) : ?>
-				<div class="wp-embed-featured-image rectangular">
-					<a href="<?php the_permalink(); ?>" target="_top">
-						<?php echo wp_get_attachment_image( $thumbnail_id, $image_size ); ?>
-					</a>
-				</div>
-			<?php endif; ?>
+			<?php the_embed_header(); ?>
 
-			<p class="wp-embed-heading">
-				<a href="<?php the_permalink(); ?>" target="_top">
-					<?php the_title(); ?>
-				</a>
-			</p>
-
-			<?php if ( $thumbnail_id && 'square' === $shape ) : ?>
-				<div class="wp-embed-featured-image square">
-					<a href="<?php the_permalink(); ?>" target="_top">
-						<?php echo wp_get_attachment_image( $thumbnail_id, $image_size ); ?>
-					</a>
-				</div>
-			<?php endif; ?>
-
-			<div class="wp-embed-excerpt"><?php the_excerpt_embed(); ?></div>
+			<div class="wp-embed-excerpt">
+				<?php the_excerpt_embed(); ?>
+			</div>
 
 			<?php
 			/**
@@ -116,102 +48,13 @@ if ( have_posts() ) :
 			 * @since 4.4.0
 			 */
 			do_action( 'embed_content' );
-			?>
-
-			<div class="wp-embed-footer">
-				<div class="wp-embed-site-title">
-					<?php
-					$site_title = sprintf(
-						'<a href="%s" target="_top"><img src="%s" srcset="%s 2x" width="32" height="32" alt="" class="wp-embed-site-icon"/><span>%s</span></a>',
-						esc_url( home_url() ),
-						esc_url( get_site_icon_url( 32, admin_url( 'images/w-logo-blue.png' ) ) ),
-						esc_url( get_site_icon_url( 64, admin_url( 'images/w-logo-blue.png' ) ) ),
-						esc_html( get_bloginfo( 'name' ) )
-					);
-
-					/**
-					 * Filter the site title HTML in the embed footer.
-					 *
-					 * @since 4.4.0
-					 *
-					 * @param string $site_title The site title HTML.
-					 */
-					echo apply_filters( 'embed_site_title_html', $site_title );
-					?>
-				</div>
-
-				<div class="wp-embed-meta">
-					<?php
-					/**
-					 * Print additional meta content in the embed template.
-					 *
-					 * @since 4.4.0
-					 */
-					do_action( 'embed_content_meta');
-					?>
-					<?php if ( get_comments_number() || comments_open() ) : ?>
-						<div class="wp-embed-comments">
-							<a href="<?php comments_link(); ?>" target="_top">
-								<span class="dashicons dashicons-admin-comments"></span>
-								<?php
-								printf(
-									_n(
-										'%s <span class="screen-reader-text">Comment</span>',
-										'%s <span class="screen-reader-text">Comments</span>',
-										get_comments_number()
-									),
-									number_format_i18n( get_comments_number() )
-								);
-								?>
-							</a>
-						</div>
-					<?php endif; ?>
-					<div class="wp-embed-share">
-						<button type="button" class="wp-embed-share-dialog-open" aria-label="<?php esc_attr_e( 'Open sharing dialog' ); ?>">
-							<span class="dashicons dashicons-share"></span>
-						</button>
-					</div>
-				</div>
-			</div>
-			<div class="wp-embed-share-dialog hidden" role="dialog" aria-label="<?php esc_attr_e( 'Sharing options' ); ?>">
-				<div class="wp-embed-share-dialog-content">
-					<div class="wp-embed-share-dialog-text">
-						<ul class="wp-embed-share-tabs" role="tablist">
-							<li class="wp-embed-share-tab-button wp-embed-share-tab-button-wordpress" role="presentation">
-								<button type="button" role="tab" aria-controls="wp-embed-share-tab-wordpress" aria-selected="true" tabindex="0"><?php esc_html_e( 'WordPress Embed' ); ?></button>
-							</li>
-							<li class="wp-embed-share-tab-button wp-embed-share-tab-button-html" role="presentation">
-								<button type="button" role="tab" aria-controls="wp-embed-share-tab-html" aria-selected="false" tabindex="-1"><?php esc_html_e( 'HTML Embed' ); ?></button>
-							</li>
-						</ul>
-						<div id="wp-embed-share-tab-wordpress" class="wp-embed-share-tab" role="tabpanel" aria-hidden="false">
-							<input type="text" value="<?php the_permalink(); ?>" class="wp-embed-share-input" aria-describedby="wp-embed-share-description-wordpress" tabindex="0" readonly />
-
-							<p class="wp-embed-share-description" id="wp-embed-share-description-wordpress">
-								<?php _e( 'Copy and paste this URL into your WordPress site to embed' ); ?>
-							</p>
-						</div>
-						<div id="wp-embed-share-tab-html" class="wp-embed-share-tab" role="tabpanel" aria-hidden="true">
-							<textarea class="wp-embed-share-input" aria-describedby="wp-embed-share-description-html" tabindex="0" readonly><?php echo esc_textarea( get_post_embed_html( 600, 400 ) ); ?></textarea>
 
-							<p class="wp-embed-share-description" id="wp-embed-share-description-html">
-								<?php _e( 'Copy and paste this code into your site to embed' ); ?>
-							</p>
-						</div>
-					</div>
-
-					<button type="button" class="wp-embed-share-dialog-close" aria-label="<?php esc_attr_e( 'Close sharing dialog' ); ?>">
-						<span class="dashicons dashicons-no"></span>
-					</button>
-				</div>
-			</div>
-		</div>
-		<?php
+			the_embed_footer();
 	endwhile;
 else :
 	?>
 	<div class="wp-embed">
-		<p class="wp-embed-heading"><?php _e( 'Oops! That embed can&#8217;t be found.' ); ?></p>
+		<?php the_embed_header(); ?>
 
 		<div class="wp-embed-excerpt">
 			<p>
@@ -225,22 +68,7 @@ else :
 			</p>
 		</div>
 
-		<div class="wp-embed-footer">
-			<div class="wp-embed-site-title">
-				<?php
-				$site_title = sprintf(
-					'<a href="%s" target="_top"><img src="%s" srcset="%s 2x" width="32" height="32" alt="" class="wp-embed-site-icon"/><span>%s</span></a>',
-					esc_url( home_url() ),
-					esc_url( get_site_icon_url( 32, admin_url( 'images/w-logo-blue.png' ) ) ),
-					esc_url( get_site_icon_url( 64, admin_url( 'images/w-logo-blue.png' ) ) ),
-					esc_html( get_bloginfo( 'name' ) )
-				);
-
-				/** This filter is documented in wp-includes/embed-template.php */
-				echo apply_filters( 'embed_site_title_html', $site_title );
-				?>
-			</div>
-		</div>
+		<?php the_embed_footer(); ?>
 	</div>
 	<?php
 endif;
