TinyPNG – JPEG, PNG & WebP image compression Security & Risk Analysis

wordpress.org/plugins/tiny-compress-images

Speed up your website. Optimize your JPEG, PNG, and WebP images automatically with TinyPNG.

100K active installs v3.6.12 PHP + WP 4.0+ Updated Feb 16, 2026
compress-imagescompressionimage-sizepage-speedperformance
99
A · Safe
CVEs total1
Unpatched0
Last CVESep 30, 2024
Download
Safety Verdict

Is TinyPNG – JPEG, PNG & WebP image compression Safe to Use in 2026?

Generally Safe

Score 99/100

TinyPNG – JPEG, PNG & WebP image compression has a strong security track record. Known vulnerabilities have been patched promptly.

1 known CVELast CVE: Sep 30, 2024Updated 1mo ago
Risk Assessment

The tiny-compress-images v3.6.12 plugin exhibits a mixed security posture. While it demonstrates strengths in SQL query handling with 100% prepared statements and a good number of capability and nonce checks, significant concerns arise from its attack surface. A large proportion of its AJAX handlers, 12 out of 13, lack authentication checks, creating a substantial entry point for potential exploitation. The presence of the `unserialize` function also warrants attention, as it can be a vector for remote code execution if used with untrusted input, though the taint analysis did not reveal critical or high severity flows in this version.

The vulnerability history indicates a past medium-severity issue, specifically a Cross-Site Request Forgery (CSRF). The absence of currently unpatched vulnerabilities is positive, but the past CSRF highlights a recurring area of concern that requires careful attention in development. The taint analysis, while not revealing critical issues, did identify one flow with unsanitized paths, which, even at lower severity, points to potential areas where user input might not be handled with sufficient care.

In conclusion, the plugin has some good security practices, particularly regarding database interactions. However, the unprotected AJAX endpoints represent a significant risk that needs immediate remediation. The historical CSRF vulnerability suggests that input validation and CSRF protection mechanisms should be robust and continuously reviewed. The use of `unserialize` and the identified unsanitized path flow are also points of concern that, while not currently leading to critical vulnerabilities, could be exploited in conjunction with other weaknesses.

Key Concerns

  • Unprotected AJAX handlers
  • Dangerous function (unserialize)
  • Unsanitized path flow
  • Output escaping (43% properly escaped)
  • Past medium severity vulnerability (CSRF)
Vulnerabilities
1

TinyPNG – JPEG, PNG & WebP image compression Security Vulnerabilities

CVEs by Year

1 CVE in 2024
2024
Patched Has unpatched

Severity Breakdown

Medium
1

1 total CVE

CVE-2024-47635medium · 4.3Cross-Site Request Forgery (CSRF)

TinyPNG <= 3.4.3 - Cross-Site Request Forgery

Sep 30, 2024 Patched in 3.4.4 (11d)
Code Analysis
Analyzed Mar 16, 2026

TinyPNG – JPEG, PNG & WebP image compression Code Analysis

Dangerous Functions
2
Raw SQL Queries
0
1 prepared
Unescaped Output
117
87 escaped
Nonce Checks
10
Capability Checks
10
File Operations
8
External Requests
2
Bundled Libraries
0

Dangerous Functions Found

unserialize$wp_metadata = unserialize( (string) $result[ $i ]['meta_value'] );src\class-tiny-bulk-optimization.php:108
unserializeunserialize( (string) $result[ $i ]['tiny_meta_value'] ) :src\class-tiny-bulk-optimization.php:110

SQL Query Safety

100% prepared1 total queries

Output Escaping

43% escaped204 total outputs
Data Flows
1 unsanitized

Data Flow Analysis

5 flows1 with unsanitized paths
async_compress_on_upload (src\class-tiny-plugin.php:388)
Source (user input) Sink (dangerous op) Sanitizer Transform Unsanitized Sanitized
Attack Surface
12 unprotected

TinyPNG – JPEG, PNG & WebP image compression Attack Surface

Entry Points13
Unprotected12

AJAX Handlers 13

authwp_ajax_tiny_download_diagnosticssrc\class-tiny-diagnostics.php:41
authwp_ajax_tiny_dismiss_noticesrc\class-tiny-notices.php:44
authwp_ajax_tiny_async_optimize_upload_new_mediasrc\class-tiny-plugin.php:84
authwp_ajax_tiny_compress_image_from_librarysrc\class-tiny-plugin.php:89
authwp_ajax_tiny_compress_image_for_bulksrc\class-tiny-plugin.php:94
authwp_ajax_tiny_get_optimization_statisticssrc\class-tiny-plugin.php:99
authwp_ajax_tiny_get_compression_statussrc\class-tiny-plugin.php:104
authwp_ajax_tiny_mark_image_as_compressedsrc\class-tiny-plugin.php:109
noprivwp_ajax_tiny_rpcsrc\class-tiny-plugin.php:116
authwp_ajax_tiny_image_sizes_noticesrc\class-tiny-settings.php:67
authwp_ajax_tiny_account_statussrc\class-tiny-settings.php:72
authwp_ajax_tiny_settings_create_api_keysrc\class-tiny-settings.php:77
authwp_ajax_tiny_settings_update_api_keysrc\class-tiny-settings.php:82
WordPress Hooks 31
filterpre_update_option_tinypng_logging_enabledsrc\class-tiny-logger.php:72
actionadmin_noticessrc\class-tiny-notices.php:155
actionadmin_noticessrc\class-tiny-notices.php:299
actiontemplate_redirectsrc\class-tiny-picture.php:72
filterjpeg_qualitysrc\class-tiny-plugin.php:50
filterwp_editor_set_qualitysrc\class-tiny-plugin.php:55
filterwp_generate_attachment_metadatasrc\class-tiny-plugin.php:60
actiondelete_attachmentsrc\class-tiny-plugin.php:67
actionwr2x_upload_retinasrc\class-tiny-plugin.php:122
actionwr2x_retina_file_addedsrc\class-tiny-plugin.php:129
actionwr2x_retina_file_removedsrc\class-tiny-plugin.php:136
actionwp_dashboard_setupsrc\class-tiny-plugin.php:146
actionadmin_enqueue_scriptssrc\class-tiny-plugin.php:151
actionadmin_action_tiny_bulk_actionsrc\class-tiny-plugin.php:156
actionadmin_action_-1src\class-tiny-plugin.php:161
actionadmin_action_tiny_bulk_mark_compressedsrc\class-tiny-plugin.php:166
filtermanage_media_columnssrc\class-tiny-plugin.php:171
actionmanage_media_custom_columnsrc\class-tiny-plugin.php:176
actionattachment_submitbox_misc_actionssrc\class-tiny-plugin.php:183
actioninitsrc\class-tiny-wp-base.php:61
actionrest_api_initsrc\class-tiny-wp-base.php:62
actioninitsrc\class-tiny-wp-base.php:65
actionadmin_initsrc\class-tiny-wp-base.php:67
actionadmin_initsrc\class-tiny-wp-base.php:69
actionadmin_menusrc\class-tiny-wp-base.php:70
actioncli_initsrc\class-tiny-wp-base.php:74
actionas3cf_pre_upload_objectsrc\compatibility\as3cf\class-tiny-as3cf.php:65
filtertiny_replace_with_picturesrc\compatibility\woocommerce\class-tiny-woocommerce.php:37
actionwpml_after_duplicate_attachmentsrc\compatibility\wpml\class-tiny-wpml.php:29
actionwpml_after_copy_attached_file_postmetasrc\compatibility\wpml\class-tiny-wpml.php:38
actionwpml_updated_attached_filesrc\compatibility\wpml\class-tiny-wpml.php:46
Maintenance & Trust

TinyPNG – JPEG, PNG & WebP image compression Maintenance & Trust

Maintenance Signals

WordPress version tested6.9.4
Last updatedFeb 16, 2026
PHP min version
Downloads5.0M

Community Trust

Rating90/100
Number of ratings156
Active installs100K
Developer Profile

TinyPNG – JPEG, PNG & WebP image compression Developer Profile

TinyPNG

1 plugin · 100K total installs

93
trust score
Avg Security Score
99/100
Avg Patch Time
11 days
View full developer profile
Detection Fingerprints

How We Detect TinyPNG – JPEG, PNG & WebP image compression

Patterns used to identify this plugin on WordPress sites during automated security audits and web crawling.

Asset Fingerprints

Asset Paths
/wp-content/plugins/tiny-compress-images/assets/css/tiny-compress-images-admin.css/wp-content/plugins/tiny-compress-images/assets/js/tiny-compress-images-admin.js/wp-content/plugins/tiny-compress-images/assets/js/tinylitbox.js/wp-content/plugins/tiny-compress-images/assets/js/tinydropzone.js/wp-content/plugins/tiny-compress-images/assets/js/tiny-compress-images-bulk.js
Script Paths
/wp-content/plugins/tiny-compress-images/assets/js/tiny-compress-images-admin.js/wp-content/plugins/tiny-compress-images/assets/js/tinylitbox.js/wp-content/plugins/tiny-compress-images/assets/js/tinydropzone.js/wp-content/plugins/tiny-compress-images/assets/js/tiny-compress-images-bulk.js

HTML / DOM Fingerprints

CSS Classes
tiny-compress-images-noticetiny-compress-images-containertiny-compress-images-bulk-optimizationtiny-compress-images-bulk-itemtiny-compress-images-compress-buttontiny-compress-images-optimized-indicator
HTML Comments
Tiny Compress Images NoticeBulk Optimization SectionImage Item StartImage Item End
Data Attributes
data-tiny-compress-iddata-tiny-compress-actiondata-tinydropzone-container
JS Globals
tinyCompressImagesAdmintinyLitboxtinyDropzonetinyCompressImagesBulk
REST Endpoints
/wp-json/tinify/v1/optimize/wp-json/tinify/v1/bulk_status
FAQ

Frequently Asked Questions about TinyPNG – JPEG, PNG & WebP image compression