Title: wp_get_image_encode_quality
Published: August 20, 2026

---

# wp_get_image_encode_quality( string $mime_type, array $size = array(), int|null $default_quality = null ): int

## In this article

 * [Description](https://developer.wordpress.org/reference/functions/wp_get_image_encode_quality/?output_format=md#description)
 * [Parameters](https://developer.wordpress.org/reference/functions/wp_get_image_encode_quality/?output_format=md#parameters)
 * [Return](https://developer.wordpress.org/reference/functions/wp_get_image_encode_quality/?output_format=md#return)
 * [Source](https://developer.wordpress.org/reference/functions/wp_get_image_encode_quality/?output_format=md#source)
 * [Hooks](https://developer.wordpress.org/reference/functions/wp_get_image_encode_quality/?output_format=md#hooks)
 * [Related](https://developer.wordpress.org/reference/functions/wp_get_image_encode_quality/?output_format=md#related)
 * [Changelog](https://developer.wordpress.org/reference/functions/wp_get_image_encode_quality/?output_format=md#changelog)

[ Back to top](https://developer.wordpress.org/reference/functions/wp_get_image_encode_quality/?output_format=md#wp--skip-link--target)

Determines the encode quality WordPress would use for an image.

## 󠀁[Description](https://developer.wordpress.org/reference/functions/wp_get_image_encode_quality/?output_format=md#description)󠁿

Resolves the quality the same way [WP_Image_Editor::set_quality()](https://developer.wordpress.org/reference/classes/wp_image_editor/set_quality/)
does when no explicit quality is supplied: it starts from the per-format default,
applies the ‘wp_editor_set_quality’ filter, then the ‘jpeg_quality’ filter for JPEG
output, resets out-of-range values to the per-format default, and squashes 0 to 
1.

This lets code outside of an image editor instance – such as the REST API, which
reports the quality client-side processing should use – resolve the same value the
server would apply, without loading the image into an editor.

## 󠀁[Parameters](https://developer.wordpress.org/reference/functions/wp_get_image_encode_quality/?output_format=md#parameters)󠁿

 `$mime_type`stringrequired

The output image MIME type, e.g. `'image/jpeg'`.

`$size`arrayoptional

Dimensions of the image, passed to the ‘wp_editor_set_quality’ filter.

 * `width` int
 * The image width in pixels.
 * `height` int
 * The image height in pixels.

Default:`array()`

`$default_quality`int|nulloptional

Starting quality before filters are applied.
 Defaults to the per-format default(
86 for WebP, 82 otherwise).

Default:`null`

## 󠀁[Return](https://developer.wordpress.org/reference/functions/wp_get_image_encode_quality/?output_format=md#return)󠁿

 int Encode quality between 1 and 100.

## 󠀁[Source](https://developer.wordpress.org/reference/functions/wp_get_image_encode_quality/?output_format=md#source)󠁿

    ```php
    function wp_get_image_encode_quality( string $mime_type, array $size = array(), ?int $default_quality = null ): int {
    	if ( null === $default_quality ) {
    		// Mirror WP_Image_Editor::get_default_quality(): WebP defaults to 86, everything else to 82.
    		$default_quality = ( 'image/webp' === $mime_type ) ? 86 : 82;
    	}

    	/** This filter is documented in wp-includes/class-wp-image-editor.php */
    	$quality = apply_filters( 'wp_editor_set_quality', $default_quality, $mime_type, $size );

    	if ( 'image/jpeg' === $mime_type ) {
    		/** This filter is documented in wp-includes/class-wp-image-editor.php */
    		$quality = apply_filters( 'jpeg_quality', $quality, 'image_resize' );
    	}

    	if ( ! is_numeric( $quality ) ) {
    		$quality = $default_quality;
    	} else {
    		$quality = (int) $quality;
    	}

    	// Reset out-of-range values to the default, matching WP_Image_Editor::set_quality().
    	if ( $quality < 0 || $quality > 100 ) {
    		$quality = $default_quality;
    	}

    	// Allow 0, but squash to 1, matching WP_Image_Editor::set_quality().
    	if ( 0 === $quality ) {
    		$quality = 1;
    	}

    	return $quality;
    }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-includes/media.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/7.1/src/wp-includes/media.php#L1006)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/7.1/src/wp-includes/media.php#L1006-L1037)

## 󠀁[Hooks](https://developer.wordpress.org/reference/functions/wp_get_image_encode_quality/?output_format=md#hooks)󠁿

 [apply_filters( ‘jpeg_quality’, int $quality, string $context )](https://developer.wordpress.org/reference/hooks/jpeg_quality/)

Filters the JPEG compression quality for backward-compatibility.

 [apply_filters( ‘wp_editor_set_quality’, int $quality, string $mime_type, array $size )](https://developer.wordpress.org/reference/hooks/wp_editor_set_quality/)

Filters the default image compression quality setting.

## 󠀁[Related](https://developer.wordpress.org/reference/functions/wp_get_image_encode_quality/?output_format=md#related)󠁿

| Uses | Description | 
| [apply_filters()](https://developer.wordpress.org/reference/functions/apply_filters/)`wp-includes/plugin.php` |

Calls the callback functions that have been added to a filter hook.

  |

| Used by | Description | 
| [WP_REST_Attachments_Controller::prepare_item_for_response()](https://developer.wordpress.org/reference/classes/wp_rest_attachments_controller/prepare_item_for_response/)`wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php` |

Prepares a single attachment output for response.

  |

## 󠀁[Changelog](https://developer.wordpress.org/reference/functions/wp_get_image_encode_quality/?output_format=md#changelog)󠁿

| Version | Description | 
| [7.1.0](https://developer.wordpress.org/reference/since/7.1.0/) | Introduced. |

## User Contributed Notes

You must [log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2Fwp_get_image_encode_quality%2F)
before being able to contribute a note or feedback.