{"id":374295,"date":"2026-09-24T16:57:48","date_gmt":"2026-09-24T16:57:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/one2image-image-optimizer\/"},"modified":"2026-09-24T16:57:14","modified_gmt":"2026-09-24T16:57:14","slug":"one2image","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/one2image\/","author":20758186,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.3.0","stable_tag":"1.3.0","tested":"7.1.2","requires":"6.7","requires_php":"8.0","requires_plugins":null,"header_name":"One2Image \u2013 Image Optimizer","header_author":"One2Image","header_description":"Compress, resize and convert WordPress images directly in your browser.","assets_banners_color":"bdc6b6","last_updated":"2026-09-24 16:57:14","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/www.one2image.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":41,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.3.0":{"tag":"1.3.0","author":"kameltalbi","date":"2026-09-24 16:57:14","revision":3711718}},"upgrade_notice":{"1.3.0":"<p>WordPress.org pre-review compliance: settings restricted to administrators; sources included in the package. Processing remains local in the browser.<\/p>","1.2.6":"<p>WordPress.org Plugin Check compliance fixes. Image processing remains local in the browser.<\/p>","1.2.1":"<p>Adds an after-upload optimization suggestion. Processing stays in your browser.<\/p>","1.1.1":"<p>Improves the batch completion experience after Quick Optimize.<\/p>","1.1.0":"<p>Adds Dashboard, Media Optimizer batch, and Settings. Originals remain untouched.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3711729,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3711729,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-772x250.png":{"filename":"banner-772x250.png","revision":3711741,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.3.0"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"One2Image Dashboard","2":"Media Optimizer table and Quick Optimize","3":"Manual single-image optimizer"}},"plugin_section":[],"plugin_tags":[73458,56174,29158,2703,15376],"plugin_category":[],"plugin_contributors":[282539],"plugin_business_model":[],"class_list":["post-374295","plugin","type-plugin","status-publish","hentry","plugin_tags-browser-based","plugin_tags-compress-images","plugin_tags-image-optimizer","plugin_tags-resize","plugin_tags-webp","plugin_contributors-kameltalbi","plugin_committers-kameltalbi"],"banners":{"banner":"https:\/\/ps.w.org\/one2image\/assets\/banner-772x250.png?rev=3711741","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/one2image\/assets\/icon-128x128.png?rev=3711729","icon_2x":"https:\/\/ps.w.org\/one2image\/assets\/icon-256x256.png?rev=3711729","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>One2Image \u2013 Image Optimizer compresses, resizes and converts WordPress media in your browser. Unlike cloud image APIs, processing runs locally in the browser Canvas \u2014 images are never sent to One2Image for optimization.<\/p>\n\n<p><strong>What makes it different<\/strong><\/p>\n\n<ul>\n<li>Browser-based compression, resize and format conversion (JPEG \/ PNG \/ WebP)<\/li>\n<li>No external image-processing service, API key, account, or quota<\/li>\n<li>Original Media Library files stay intact \u2014 saves create a new attachment<\/li>\n<li>Works for roles that can upload media; site-wide settings require an administrator<\/li>\n<\/ul>\n\n<p><strong>Local processing<\/strong><\/p>\n\n<ul>\n<li>Image processing happens locally in your browser.<\/li>\n<li>Your images are never sent to One2Image.<\/li>\n<li>No One2Image API key, account, subscription, or quota is required.<\/li>\n<li>The only network transfer in the main workflow is between your browser and your own WordPress site, when you choose to save.<\/li>\n<\/ul>\n\n<p><strong>Features<\/strong><\/p>\n\n<ul>\n<li>Dashboard with library stats (no invented \u201cpotential savings\u201d)<\/li>\n<li>Media Optimizer table with filters and search<\/li>\n<li>Quick Optimize \/ batch (up to 20 images, sequential)<\/li>\n<li>Smart format selection (keeps the lightest real result; skips if nothing is smaller)<\/li>\n<li>Manual optimize: compress, resize, convert (JPEG\/PNG\/WebP), rotate<\/li>\n<li>Save as a new Media Library attachment (original always stays intact)<\/li>\n<li>Settings for quality, max width, preferred format, batch size (administrators only)<\/li>\n<\/ul>\n\n<p><strong>Privacy<\/strong><\/p>\n\n<p>Canvas re-encoding typically strips embedded EXIF \/ IPTC \/ XMP metadata. WordPress attachment fields (title, alt text, caption, description) are copied to the new image when you save.<\/p>\n\n<h3>Development<\/h3>\n\n<p>Human-readable JavaScript \/ TypeScript sources ship with the plugin in <code>src\/<\/code>.<\/p>\n\n<p>Compiled assets under <code>assets\/js\/<\/code> are produced with esbuild (see <code>package.json<\/code>).<\/p>\n\n<p>Rebuild:<\/p>\n\n<ol>\n<li><code>npm install<\/code><\/li>\n<li><p><code>npm run build:js<\/code><\/p>\n\n<p>media-bridge.js is maintained as readable JavaScript and is not built from TypeScript.<\/p><\/li>\n<\/ol>\n\n<p>Translations for WordPress.org are managed on translate.wordpress.org (Text Domain: <code>one2image<\/code>).<\/p>\n\n<h3>Privacy<\/h3>\n\n<p>This plugin does not phone home. It does not embed advertising trackers, analytics beacons, or telemetry to One2Image.<\/p>\n\n<p>Optional links to one2image.com \/ one2pdf.com are voluntary navigation only and use non-personal UTM parameters (<code>utm_source=wordpress_plugin<\/code>).<\/p>\n\n<p>When you click <strong>Save as new image<\/strong> (or batch save), the optimized file is sent from your browser to your WordPress site using the WordPress REST API on your domain.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>one2image<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install the ZIP via Plugins \u2192 Add Plugin \u2192 Upload Plugin.<\/li>\n<li>Activate <strong>One2Image \u2013 Image Optimizer<\/strong>.<\/li>\n<li>Open <strong>One2Image \u2192 Dashboard<\/strong> in the admin sidebar.<\/li>\n<li>Click <strong>Optimize Media Library<\/strong>, select images, then <strong>Quick Optimize<\/strong>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"are%20my%20images%20uploaded%20to%20one2image%3F\"><h3>Are my images uploaded to One2Image?<\/h3><\/dt>\n<dd><p>No. Processing runs in your browser. Images are never sent to One2Image. When you save, the optimized file is uploaded only to your own WordPress site.<\/p><\/dd>\n<dt id=\"do%20i%20need%20an%20api%20key%20or%20account%3F\"><h3>Do I need an API key or account?<\/h3><\/dt>\n<dd><p>No. The plugin is free and works without an account, API key, or subscription.<\/p><\/dd>\n<dt id=\"does%20it%20replace%20my%20original%20image%3F\"><h3>Does it replace my original image?<\/h3><\/dt>\n<dd><p>No. It only creates a new Media Library attachment. The original remains unchanged.<\/p><\/dd>\n<dt id=\"why%20was%20an%20image%20skipped%3F\"><h3>Why was an image skipped?<\/h3><\/dt>\n<dd><p>Quick Optimize only saves a new file when the result is actually smaller than the original.<\/p><\/dd>\n<dt id=\"does%20it%20optimize%20uploads%20automatically%3F\"><h3>Does it optimize uploads automatically?<\/h3><\/dt>\n<dd><p>Not yet. The setting is reserved for a future version.<\/p><\/dd>\n<dt id=\"who%20can%20change%20plugin%20settings%3F\"><h3>Who can change plugin settings?<\/h3><\/dt>\n<dd><p>Only users with the <code>manage_options<\/code> capability (typically Administrators). Editors and Authors can still optimize media they can edit.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>WordPress.org pre-review: Contributors set to submitting account; settings require manage_options<\/li>\n<li>Include human-readable JS\/TS sources and package.json in the distribution ZIP<\/li>\n<li>Remove bundled fr_FR translation files (use translate.wordpress.org)<\/li>\n<li>Document browser-based local processing and the Development build steps<\/li>\n<\/ul>\n\n<h4>1.2.6<\/h4>\n\n<ul>\n<li>Plugin Check cleanup for WordPress.org (translator comments, WP upload\/delete APIs, automatic textdomain loading, safer Media Library DOM)<\/li>\n<li>Plugin URI removed so it is not identical to Author URI<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Suggest optimization after image upload (Media Library, Featured Image, Gutenberg via REST)<\/li>\n<li>Batch upload suggestion (single notice, Optimize all \/ Review \/ Not now)<\/li>\n<li>Setting: Suggest optimization after image upload (on by default)<\/li>\n<li>Automatic optimize on upload remains Coming soon<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Batch completion UX: success state, clear selection, refresh list, view optimized \/ optimize more<\/li>\n<li>Distinguish optimized \/ skipped \/ failed in batch summary<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Top-level One2Image admin menu (Dashboard, Media Optimizer, Settings)<\/li>\n<li>Library table with filters, search, pagination<\/li>\n<li>Quick Optimize batch (max 20, sequential, local)<\/li>\n<li>Smart result selection (skip if not smaller)<\/li>\n<li>Real optimization stats via attachment meta<\/li>\n<li>Settings page<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Compress, resize, convert (JPEG\/PNG\/WebP), rotate<\/li>\n<li>Local browser processing<\/li>\n<li>Save as new Media Library image<\/li>\n<\/ul>","raw_excerpt":"Compress, resize and convert WordPress images directly in your browser, without an external image-processing service. Free. No API key.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/374295","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=374295"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/kameltalbi"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=374295"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=374295"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=374295"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=374295"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=374295"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=374295"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}