diff --git src/wp-includes/class-wp-image-editor.php src/wp-includes/class-wp-image-editor.php
index 7dcdc91d5a..adad9e1f91 100644
--- src/wp-includes/class-wp-image-editor.php
+++ src/wp-includes/class-wp-image-editor.php
@@ -316,6 +316,36 @@ abstract class WP_Image_Editor {
 			$new_ext   = $file_ext;
 		}
 
+		/**
+		 * Filters the image editor output format.
+		 *
+		 * Enables filtering the mime type used to save images. By default,
+		 * the mime type matches the source image.
+		 *
+		 * @see src/wp-includes/class-wp-image-editor.php -> get_output_format()
+		 *
+		 * @since 5.8.0
+		 *
+		 * @param array $wp_image_editor_output_format {
+		 *     An array of mime type mappings. Maps a source mime type to a new
+		 *     destination mime type. Empty by default.
+		 *
+		 *     @type array $mime_type The source mime type {
+		 *         @type string $mime_type The new mime type.
+		 *     }
+		 * @param string $mime_type The source image mime type.
+		 * }
+		 */
+		$wp_image_editor_output_format = apply_filters( 'image_editor_output_format', array(), $mime_type );
+
+		if (
+			isset( $wp_image_editor_output_format[ $mime_type ] ) &&
+			$this->supports_mime_type( $wp_image_editor_output_format[ $mime_type ] )
+		) {
+			$mime_type = $wp_image_editor_output_format[ $mime_type ];
+			$new_ext = $this->get_extension( $mime_type );
+		}
+
 		// Double-check that the mime-type selected is supported by the editor.
 		// If not, choose a default instead.
 		if ( ! $this->supports_mime_type( $mime_type ) ) {
diff --git src/wp-includes/media.php src/wp-includes/media.php
index 82d1b32627..6008c69254 100644
--- src/wp-includes/media.php
+++ src/wp-includes/media.php
@@ -3749,12 +3749,26 @@ function _wp_image_editor_choose( $args = array() ) {
 			continue;
 		}
 
-		if ( isset( $args['mime_type'] ) &&
-			! call_user_func(
-				array( $implementation, 'supports_mime_type' ),
-				$args['mime_type']
-			) ) {
-			continue;
+		if ( isset( $args['mime_type'] ) {
+
+			/* This filter is documented in src/wp-includes/media.php */
+			$wp_image_editor_output_format = apply_filters( 'image_editor_output_format', array(),  $args['mime_type'] );
+
+			if (
+				isset( $wp_image_editor_output_format[ $args['mime_type'] ) &&
+				! call_user_func(
+					array( $implementation, 'supports_mime_type' ),
+					$wp_image_editor_output_format[ $args['mime_type'] )
+				) ) {
+				continue;
+			}
+
+			if ( ! call_user_func(
+					array( $implementation, 'supports_mime_type' ),
+					$args['mime_type']
+				) ) {
+				continue;
+			}
 		}
 
 		if ( isset( $args['methods'] ) &&
