{"id":296341,"date":"2026-04-30T08:38:08","date_gmt":"2026-04-30T08:38:08","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/img-performer\/"},"modified":"2026-08-31T20:50:11","modified_gmt":"2026-08-31T20:50:11","slug":"enfants-img-performer","status":"publish","type":"plugin","link":"https:\/\/ssw.wordpress.org\/plugins\/enfants-img-performer\/","author":23293963,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.3.9","stable_tag":"0.3.9","tested":"7.1","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Enfants Img Performer","header_author":"Enfants Terribles digital GmbH","header_description":"Converts uploaded images to WebP automatically \u2013 on your server, no API, 100% GDPR compliant.","assets_banners_color":"beb6c6","last_updated":"2026-08-31 20:50:11","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/img-performer.enfants.de","header_author_uri":"https:\/\/www.enfants.de","rating":5,"author_block_rating":0,"active_installs":10,"downloads":692,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.2.2":{"tag":"0.2.2","author":"maller","date":"2026-07-15 10:51:19","revision":3608693},"0.3.0":{"tag":"0.3.0","author":"maller","date":"2026-07-22 09:43:37","revision":3618375},"0.3.1":{"tag":"0.3.1","author":"maller","date":"2026-07-26 18:21:04","revision":3623701},"0.3.2":{"tag":"0.3.2","author":"maller","date":"2026-07-29 09:02:27","revision":3626950},"0.3.3":{"tag":"0.3.3","author":"maller","date":"2026-07-31 10:57:12","revision":3629868},"0.3.4":{"tag":"0.3.4","author":"maller","date":"2026-08-12 13:42:34","revision":3643530},"0.3.6":{"tag":"0.3.6","author":"maller","date":"2026-08-27 08:03:30","revision":3668304},"0.3.7":{"tag":"0.3.7","author":"maller","date":"2026-08-31 12:55:04","revision":3674252},"0.3.8":{"tag":"0.3.8","author":"maller","date":"2026-08-31 13:05:51","revision":3674275},"0.3.9":{"tag":"0.3.9","author":"maller","date":"2026-08-31 20:50:11","revision":3674947}},"upgrade_notice":{"0.3.0":"<p>New: AI image labeling for EU AI Act Art. 50 (applies to new uploads only).<\/p>","0.2.0":"<p>PRO users get Bulk Converter and AI Alt Text Generator.<\/p>","0.1.0":"<p>Initial release.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3519324,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3519324,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500-de_DE.png":{"filename":"banner-1544x500-de_DE.png","revision":3618304,"resolution":"1544x500","location":"assets","locale":"de_DE","width":1544,"height":500},"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3618304,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250-de_DE.png":{"filename":"banner-772x250-de_DE.png","revision":3618304,"resolution":"772x250","location":"assets","locale":"de_DE","width":772,"height":250},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3618304,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.2.2","0.3.0","0.3.1","0.3.2","0.3.3","0.3.4","0.3.6","0.3.7","0.3.8","0.3.9"],"block_files":[],"assets_screenshots":{"screenshot-1-de_DE.png":{"filename":"screenshot-1-de_DE.png","revision":3674245,"resolution":"1","location":"assets","locale":"de_DE","width":1811,"height":1246},"screenshot-1.png":{"filename":"screenshot-1.png","revision":3674245,"resolution":"1","location":"assets","locale":"","width":1802,"height":1217},"screenshot-10.png":{"filename":"screenshot-10.png","revision":3674245,"resolution":"10","location":"assets","locale":"","width":1802,"height":1197},"screenshot-11.png":{"filename":"screenshot-11.png","revision":3674245,"resolution":"11","location":"assets","locale":"","width":1802,"height":1197},"screenshot-12.png":{"filename":"screenshot-12.png","revision":3674245,"resolution":"12","location":"assets","locale":"","width":1802,"height":1197},"screenshot-13.png":{"filename":"screenshot-13.png","revision":3674245,"resolution":"13","location":"assets","locale":"","width":1802,"height":1197},"screenshot-14.png":{"filename":"screenshot-14.png","revision":3674245,"resolution":"14","location":"assets","locale":"","width":1802,"height":1198},"screenshot-15.png":{"filename":"screenshot-15.png","revision":3674245,"resolution":"15","location":"assets","locale":"","width":1802,"height":1198},"screenshot-16.png":{"filename":"screenshot-16.png","revision":3674245,"resolution":"16","location":"assets","locale":"","width":1802,"height":1198},"screenshot-17.png":{"filename":"screenshot-17.png","revision":3674245,"resolution":"17","location":"assets","locale":"","width":1802,"height":1198},"screenshot-18.png":{"filename":"screenshot-18.png","revision":3674245,"resolution":"18","location":"assets","locale":"","width":1802,"height":1197},"screenshot-19.png":{"filename":"screenshot-19.png","revision":3674245,"resolution":"19","location":"assets","locale":"","width":1802,"height":1198},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3674245,"resolution":"2","location":"assets","locale":"","width":1802,"height":1197},"screenshot-20.png":{"filename":"screenshot-20.png","revision":3674245,"resolution":"20","location":"assets","locale":"","width":1802,"height":1198},"screenshot-21.png":{"filename":"screenshot-21.png","revision":3674245,"resolution":"21","location":"assets","locale":"","width":1802,"height":1198},"screenshot-22.png":{"filename":"screenshot-22.png","revision":3674245,"resolution":"22","location":"assets","locale":"","width":1802,"height":1198},"screenshot-23.png":{"filename":"screenshot-23.png","revision":3674245,"resolution":"23","location":"assets","locale":"","width":1802,"height":1198},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3674245,"resolution":"3","location":"assets","locale":"","width":1802,"height":1197},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3674245,"resolution":"4","location":"assets","locale":"","width":1802,"height":1197},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3674245,"resolution":"5","location":"assets","locale":"","width":1802,"height":1197},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3674245,"resolution":"6","location":"assets","locale":"","width":1802,"height":1197},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3674245,"resolution":"7","location":"assets","locale":"","width":1802,"height":1197},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3674245,"resolution":"8","location":"assets","locale":"","width":1802,"height":1197},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3674245,"resolution":"9","location":"assets","locale":"","width":1802,"height":1197}},"screenshots":{"1":"Plugin overview in the WordPress plugin list \u2013 shows Img Performer installed and active.","2":"Settings page \u2013 configure WebP quality, opt into anonymous global statistics, and see your live CO\u2082 savings counter.","3":"Activity log \u2013 every converted image with timestamp, format and file name at a glance.","4":"AI Labeling settings tab \u2013 enable the visible badge; automatic detection explained, including its limits.","5":"Searchable, paginated history of classified uploads under Settings - AI Labeling.","6":"Media Library list view \u2013 \"Needs review\" filter and AI Labeling \/ Alt-Text status columns.","7":"Manual classification control in the Media Library attachment details \u2013 correct the automatic result in one click.","8":"Visible \"AI-generated\" badge shown on AI-generated images in the frontend.","9":"Real-world comparison: TheVenturer website \u2013 original PNG 2.1 MB, WordPress-resized PNG 1.7 MB, WebP 87 KB, AVIF 110 KB (PRO).","10":"Real-world comparison: ZEIT Magazin hero image \u2013 JPEG 329 KB, WebP 119 KB, AVIF 142 KB (PRO).","11":"Real-world comparison: EU Business News award page \u2013 original PNG 1 MB, WordPress-resized PNG 514 KB, WebP 61 KB, AVIF 53 KB (PRO).","12":"Real-world comparison: Global CEO Excellence Awards graphic \u2013 original PNG 1.1 MB, WordPress-resized PNG 698 KB, WebP 54 KB, AVIF 48 KB (PRO).","13":"PRO features tab \u2013 AVIF conversion, bulk optimisation and AI alt text generator with license key activation.","14":"PRO &amp; AI settings \u2013 active licence status, AI provider selection (Mistral, Claude, OpenAI) and BYOK API key input.","15":"PRO: AI Alt Text settings and bulk optimization of the existing media library.","16":"PRO: Activity log showing automatic WebP and AVIF conversion.","17":"PRO: AI Alt Text Generator example \u2013 automatically generated alt text, caption and description for a magazine cover photo.","18":"PRO: AI Alt Text Generator example \u2013 automatically generated alt text, caption and description for a startup website screenshot.","19":"PRO: AI Alt Text Generator example \u2013 automatically generated alt text, caption and description for an award announcement graphic.","20":"PRO: AI Alt Text Generator example \u2013 automatically generated alt text, caption and description for a real-world product photo.","21":"PRO: AI Alt Text Generator example \u2013 automatically generated alt text, caption and description for a LinkedIn announcement graphic.","22":"PRO: AI Alt Text Generator example \u2013 automatically generated alt text, caption and description for a promotional graphic.","23":"PRO: AI Alt Text Generator example \u2013 alt text, title, caption and description all generated automatically for a startup website mockup."}},"plugin_section":[],"plugin_tags":[275056,254921,254919,14361,254918],"plugin_category":[],"plugin_contributors":[261518,252540],"plugin_business_model":[],"class_list":["post-296341","plugin","type-plugin","status-publish","hentry","plugin_tags-ai-labeling","plugin_tags-ai-transparency","plugin_tags-article-50","plugin_tags-compliance","plugin_tags-eu-ai-act","plugin_contributors-maller","plugin_contributors-steffenmueller","plugin_committers-maller"],"banners":{"banner":"https:\/\/ps.w.org\/enfants-img-performer\/assets\/banner-772x250.png?rev=3618304","banner_2x":"https:\/\/ps.w.org\/enfants-img-performer\/assets\/banner-1544x500.png?rev=3618304","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/enfants-img-performer\/assets\/icon-128x128.png?rev=3519324","icon_2x":"https:\/\/ps.w.org\/enfants-img-performer\/assets\/icon-256x256.png?rev=3519324","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/enfants-img-performer\/assets\/screenshot-1.png?rev=3674245","caption":"Plugin overview in the WordPress plugin list \u2013 shows Img Performer installed and active."},{"src":"https:\/\/ps.w.org\/enfants-img-performer\/assets\/screenshot-2.png?rev=3674245","caption":"Settings page \u2013 configure WebP quality, opt into anonymous global statistics, and see your live CO\u2082 savings counter."},{"src":"https:\/\/ps.w.org\/enfants-img-performer\/assets\/screenshot-3.png?rev=3674245","caption":"Activity log \u2013 every converted image with timestamp, format and file name at a glance."},{"src":"https:\/\/ps.w.org\/enfants-img-performer\/assets\/screenshot-4.png?rev=3674245","caption":"AI Labeling settings tab \u2013 enable the visible badge; automatic detection explained, including its limits."},{"src":"https:\/\/ps.w.org\/enfants-img-performer\/assets\/screenshot-5.png?rev=3674245","caption":"Searchable, paginated history of classified uploads under Settings - AI Labeling."},{"src":"https:\/\/ps.w.org\/enfants-img-performer\/assets\/screenshot-6.png?rev=3674245","caption":"Media Library list view \u2013 \"Needs review\" filter and AI Labeling \/ Alt-Text status columns."},{"src":"https:\/\/ps.w.org\/enfants-img-performer\/assets\/screenshot-7.png?rev=3674245","caption":"Manual classification control in the Media Library attachment details \u2013 correct the automatic result in one click."},{"src":"https:\/\/ps.w.org\/enfants-img-performer\/assets\/screenshot-8.png?rev=3674245","caption":"Visible \"AI-generated\" badge shown on AI-generated images in the frontend."},{"src":"https:\/\/ps.w.org\/enfants-img-performer\/assets\/screenshot-9.png?rev=3674245","caption":"Real-world comparison: TheVenturer website \u2013 original PNG 2.1 MB, WordPress-resized PNG 1.7 MB, WebP 87 KB, AVIF 110 KB (PRO)."},{"src":"https:\/\/ps.w.org\/enfants-img-performer\/assets\/screenshot-10.png?rev=3674245","caption":"Real-world comparison: ZEIT Magazin hero image \u2013 JPEG 329 KB, WebP 119 KB, AVIF 142 KB (PRO)."},{"src":"https:\/\/ps.w.org\/enfants-img-performer\/assets\/screenshot-11.png?rev=3674245","caption":"Real-world comparison: EU Business News award page \u2013 original PNG 1 MB, WordPress-resized PNG 514 KB, WebP 61 KB, AVIF 53 KB (PRO)."},{"src":"https:\/\/ps.w.org\/enfants-img-performer\/assets\/screenshot-12.png?rev=3674245","caption":"Real-world comparison: Global CEO Excellence Awards graphic \u2013 original PNG 1.1 MB, WordPress-resized PNG 698 KB, WebP 54 KB, AVIF 48 KB (PRO)."},{"src":"https:\/\/ps.w.org\/enfants-img-performer\/assets\/screenshot-13.png?rev=3674245","caption":"PRO features tab \u2013 AVIF conversion, bulk optimisation and AI alt text generator with license key activation."},{"src":"https:\/\/ps.w.org\/enfants-img-performer\/assets\/screenshot-14.png?rev=3674245","caption":"PRO &amp; AI settings \u2013 active licence status, AI provider selection (Mistral, Claude, OpenAI) and BYOK API key input."},{"src":"https:\/\/ps.w.org\/enfants-img-performer\/assets\/screenshot-15.png?rev=3674245","caption":"PRO: AI Alt Text settings and bulk optimization of the existing media library."},{"src":"https:\/\/ps.w.org\/enfants-img-performer\/assets\/screenshot-16.png?rev=3674245","caption":"PRO: Activity log showing automatic WebP and AVIF conversion."},{"src":"https:\/\/ps.w.org\/enfants-img-performer\/assets\/screenshot-17.png?rev=3674245","caption":"PRO: AI Alt Text Generator example \u2013 automatically generated alt text, caption and description for a magazine cover photo."},{"src":"https:\/\/ps.w.org\/enfants-img-performer\/assets\/screenshot-18.png?rev=3674245","caption":"PRO: AI Alt Text Generator example \u2013 automatically generated alt text, caption and description for a startup website screenshot."},{"src":"https:\/\/ps.w.org\/enfants-img-performer\/assets\/screenshot-19.png?rev=3674245","caption":"PRO: AI Alt Text Generator example \u2013 automatically generated alt text, caption and description for an award announcement graphic."},{"src":"https:\/\/ps.w.org\/enfants-img-performer\/assets\/screenshot-20.png?rev=3674245","caption":"PRO: AI Alt Text Generator example \u2013 automatically generated alt text, caption and description for a real-world product photo."},{"src":"https:\/\/ps.w.org\/enfants-img-performer\/assets\/screenshot-21.png?rev=3674245","caption":"PRO: AI Alt Text Generator example \u2013 automatically generated alt text, caption and description for a LinkedIn announcement graphic."},{"src":"https:\/\/ps.w.org\/enfants-img-performer\/assets\/screenshot-22.png?rev=3674245","caption":"PRO: AI Alt Text Generator example \u2013 automatically generated alt text, caption and description for a promotional graphic."},{"src":"https:\/\/ps.w.org\/enfants-img-performer\/assets\/screenshot-23.png?rev=3674245","caption":"PRO: AI Alt Text Generator example \u2013 alt text, title, caption and description all generated automatically for a startup website mockup."}],"raw_content":"<!--section=description-->\n<p>Enfants IMG Performer detects AI-generated images on upload and applies a machine-readable and visible label as required by Article 50 of the EU AI Act. At the same time it converts every upload to WebP (free) and AVIF (Pro) locally on your own server - no cloud service, no account, no limit. The Pro version also generates WCAG 2.1 AA alt texts for the European Accessibility Act using your own AI API key.<\/p>\n\n<p>The separately available <strong>Enfants Img Performer PRO<\/strong> plugin unlocks AVIF conversion, bulk optimization and AI-powered alt text generation.<\/p>\n\n<h4>Why Img Performer?<\/h4>\n\n<p>Most image optimization plugins send your images to a third-party cloud service for processing \u2013 often with monthly quotas and accounts required. Img Performer is different: it uses PHP's built-in GD library (with Imagick as fallback) to convert images locally. Your images never leave your server. No account needed. No monthly limit.<\/p>\n\n<h4>What it does<\/h4>\n\n<ul>\n<li>Converts JPEG and PNG uploads to WebP automatically \u2013 unlimited, free<\/li>\n<li>Converts all registered image sizes (thumbnail, medium, large, custom)<\/li>\n<li>Rewrites <code>src<\/code>, <code>srcset<\/code>, <code>href<\/code> (lightbox) and lazy-load attributes in the frontend<\/li>\n<li>Deletes WebP files when the original image is deleted<\/li>\n<li>Logs all conversions for transparency<\/li>\n<li>Configurable quality setting (1\u2013100, default 85)<\/li>\n<li>CO\u2082 savings tracker with optional anonymous global statistics<\/li>\n<li>Detects AI-generated images on upload and labels them for EU AI Act Art. 50 compliance \u2013 see below<\/li>\n<\/ul>\n\n<p>The separately available <strong>Enfants Img Performer PRO<\/strong> plugin (installed alongside this plugin) adds:<\/p>\n\n<ul>\n<li>AVIF conversion \u2013 up to 50% smaller than WebP<\/li>\n<li>Bulk Converter \u2013 convert your entire media library in one click<\/li>\n<li>AI Alt Text Generator \u2013 WCAG-compliant alt texts via Mistral, Claude or OpenAI<\/li>\n<li>AI labeling in Alt-Text \u2013 optionally append a disclosure note to the alt text of AI-classified images<\/li>\n<\/ul>\n\n<h4>EU AI Act Art. 50: AI image labeling<\/h4>\n\n<p>From August 2, 2026, AI-generated images published on a website must carry machine-readable labeling under Article 50 of the EU AI Act. WordPress itself strips this information the moment it generates thumbnails on upload (<a href=\"https:\/\/github.com\/WordPress\/ai\/issues\/421\">WordPress\/ai issue #421<\/a>, unresolved) \u2013 Img Performer works around that:<\/p>\n\n<ul>\n<li>Detects AI provenance in newly uploaded images (based on embedded metadata such as C2PA manifests, where present)<\/li>\n<li>Writes its own hosting-independent labeling into the original and every generated image size \u2013 no Imagick required<\/li>\n<li>Shows a visible \"AI-generated\" badge on the frontend, toggleable<\/li>\n<li>Lets you manually correct the automatic classification directly in the Media Library<\/li>\n<li>Shows an \"AI Labeling\" status column and Alt-Text presence indicator in the Media Library list view, with a \"Needs review\" filter for unclassified images<\/li>\n<li>Only applies to new uploads \u2013 your existing media library is not scanned or changed retroactively<\/li>\n<\/ul>\n\n<p>The separately available PRO plugin additionally lets you append a disclosure note to the image's alt text itself when it's classified as AI-generated (optional, per image).<\/p>\n\n<p>This labeling is based on the IPTC \"Digital Source Type\" standard field and meets the technology-neutral requirements from the EU AI Act Code of Practice. It is not a cryptographically signed C2PA manifest \u2013 producing one would require certification through the official C2PA Conformance Programme, a separate process this plugin does not perform.<\/p>\n\n<h4>GDPR \/ DSGVO<\/h4>\n\n<p>Enfants Img Performer processes all images exclusively on your own server. No image data, IP addresses or personal information is transferred to external services. No API keys required.<\/p>\n\n<p>The only optional external connection is the anonymous CO\u2082 statistics feature (opt-in, disabled by default). When enabled, it sends only total bytes saved to our EU-based server \u2013 no IP address, no domain, no personal data.<\/p>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>WordPress 6.0 or higher<\/li>\n<li>PHP 7.4 or higher<\/li>\n<li>GD extension with WebP support (<code>imagewebp<\/code>)<\/li>\n<\/ul>\n\n<h3>External Services<\/h3>\n\n<p>This plugin can optionally send anonymous usage data to an external service operated by Enfants Terribles digital GmbH.<\/p>\n\n<p><strong>CO\u2082 Statistics (opt-in, disabled by default)<\/strong><\/p>\n\n<p>When you enable \"Global sustainability stats\" in the plugin settings, the plugin sends the following data once per day to our EU-based server:<\/p>\n\n<ul>\n<li>An anonymous random site ID (UUID v4, generated locally, no personal data)<\/li>\n<li>Total bytes saved through WebP conversion<\/li>\n<\/ul>\n\n<p>No images, no IP addresses, no domain names and no personal data are transmitted. The anonymous site ID cannot be traced back to you or your website.<\/p>\n\n<p>This data is used solely to display a global CO\u2082 savings counter on the plugin website.<\/p>\n\n<ul>\n<li>Service: Enfants Terribles digital GmbH (EU-based server, Netcup, Germany)<\/li>\n<li>Endpoint: https:\/\/tools.enfants.de\/imp-stats\/<\/li>\n<li>Privacy Policy: https:\/\/img-performer.enfants.de\/datenschutz\/<\/li>\n<li>Terms of Use: https:\/\/img-performer.enfants.de\/nutzungsbedingungen\/<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin to <code>\/wp-content\/plugins\/img-performer\/<\/code> or install via the WordPress plugin directory.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Go to <strong>Settings \u2192 Img Performer<\/strong> to configure the quality.<\/li>\n<li>Upload an image \u2013 WebP is created automatically.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20send%20images%20to%20an%20external%20server%3F\"><h3>Does this plugin send images to an external server?<\/h3><\/dt>\n<dd><p>No. All conversions happen locally using PHP's GD library (with Imagick as fallback). Your images never leave your server.<\/p><\/dd>\n<dt id=\"is%20there%20a%20monthly%20limit%3F\"><h3>Is there a monthly limit?<\/h3><\/dt>\n<dd><p>No. Img Performer converts unlimited images for free. There are no quotas, no credits and no subscription required for the basics.<\/p><\/dd>\n<dt id=\"which%20image%20formats%20are%20supported%3F\"><h3>Which image formats are supported?<\/h3><\/dt>\n<dd><p>JPEG and PNG are converted to WebP. Other formats (GIF, SVG, WebP) are skipped. AVIF conversion is available via the separately installable Enfants Img Performer PRO plugin.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20my%20server%20doesn%27t%20support%20webp%3F\"><h3>What happens if my server doesn't support WebP?<\/h3><\/dt>\n<dd><p>The plugin checks for WebP support automatically. If not available, conversion is silently skipped and the original image is served. No errors, no broken images.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20page%20builders%20like%20elementor%20or%20divi%3F\"><h3>Does it work with page builders like Elementor or Divi?<\/h3><\/dt>\n<dd><p>It works well with Gutenberg and the classic editor. Page builders like Elementor or Divi sometimes use their own image rendering pipelines \u2013 a quick test on your setup is recommended.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20lazy-load%20plugins%3F\"><h3>Does it work with lazy-load plugins?<\/h3><\/dt>\n<dd><p>Yes. Img Performer replaces URLs in <code>data-src<\/code>, <code>data-full<\/code>, <code>data-large<\/code> and <code>data-lazy-src<\/code> attributes used by popular lazy-load plugins like WP Rocket and Jetpack.<\/p><\/dd>\n<dt id=\"does%20it%20replace%20images%20in%20lightboxes%3F\"><h3>Does it replace images in lightboxes?<\/h3><\/dt>\n<dd><p>Yes. When you enable \"Expand on click\" in Gutenberg, the lightbox link (<code>href<\/code>) is also rewritten to serve WebP or AVIF.<\/p><\/dd>\n<dt id=\"does%20the%20ai%20image%20labeling%20send%20any%20data%20externally%3F\"><h3>Does the AI image labeling send any data externally?<\/h3><\/dt>\n<dd><p>No. Detection and labeling both run entirely locally on your own server, the same as WebP conversion. No image data, API keys or cloud connection involved.<\/p><\/dd>\n<dt id=\"will%20the%20ai%20labeling%20detect%20every%20ai-generated%20image%3F\"><h3>Will the AI labeling detect every AI-generated image?<\/h3><\/dt>\n<dd><p>Only if the image itself carries embedded provenance data (such as a C2PA manifest) from the tool that generated it. Not every AI tool embeds this yet, and re-saving, editing or screenshotting an image removes it. Images without a usable signal are marked \"Unknown\" so you can review and correct them manually.<\/p><\/dd>\n<dt id=\"how%20do%20i%20label%20ai-generated%20images%20in%20wordpress%20for%20the%20eu%20ai%20act%3F\"><h3>How do I label AI-generated images in WordPress for the EU AI Act?<\/h3><\/dt>\n<dd><p>Enfants IMG Performer checks every upload for signals that an image is AI-generated (C2PA \/\nContent Credentials manifests, EXIF metadata, heuristics). Detected images get a visible label\non the front end and a machine-readable marker written into the file. You can correct edge\ncases manually in the media library - for example when an image is AI-generated but obviously\nartificial and does not need a visible label.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20write%20c2pa%20%2F%20content%20credentials%20metadata%3F\"><h3>Does the plugin write C2PA \/ Content Credentials metadata?<\/h3><\/dt>\n<dd><p>The plugin reads existing C2PA \/ Content Credentials manifests on upload and writes a\nmachine-readable marker into the original image and into every image size WordPress generates,\nembedded as an XMP packet using the IPTC \"Digital Source Type\" property. This keeps the label\nintact in the thumbnails, where WordPress normally strips metadata. It is not a cryptographically\nsigned C2PA manifest - producing one would require certification through the official C2PA\nConformance Programme, which this plugin does not perform.<\/p><\/dd>\n<dt id=\"does%20image%20optimization%20work%20without%20a%20cloud%20service%20or%20an%20account%3F\"><h3>Does image optimization work without a cloud service or an account?<\/h3><\/dt>\n<dd><p>Yes. WebP and AVIF conversion and AI image detection run entirely locally on your server. No\nimages are sent to any external service, you don't need an account, and there is no quota for\nconversion. Only the optional AI alt-text feature uses an AI provider of your choice through\nyour own API key.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20generate%20accessible%20alt%20texts%20%28european%20accessibility%20act%20%2F%20bfsg%29%3F\"><h3>Does the plugin generate accessible alt texts (European Accessibility Act \/ BFSG)?<\/h3><\/dt>\n<dd><p>Yes, in the Pro version. IMG Performer generates WCAG 2.1 AA alt texts on upload through an AI\nprovider of your choice - recommended: Mistral (hosted in France, GDPR-compliant),\nalternatively Claude or OpenAI. You use your own API key, there is no credit system and no cap.\nExisting media can be processed in bulk.<\/p><\/dd>\n<dt id=\"how%20is%20this%20different%20from%20shortpixel%20and%20imagify%3F\"><h3>How is this different from ShortPixel and Imagify?<\/h3><\/dt>\n<dd><p>ShortPixel and Imagify process images in their cloud and require an account with a credit\nquota. IMG Performer runs locally on your server, with no account and no limit for conversion.\nIt also labels AI-generated images for EU AI Act Art. 50 - something neither of them does.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.3.9<\/h4>\n\n<ul>\n<li>Fixed: The Media Library list view status chip displayed \"AI generated\" for images actually classified as \"AI modified\" \u2013 the two statuses were grouped under one label. They are now shown distinctly, matching the dropdown options.<\/li>\n<\/ul>\n\n<h4>0.3.8<\/h4>\n\n<ul>\n<li>Improved: readme.txt tags reordered to prioritize EU AI Act compliance discoverability (eu-ai-act, article-50, ai-labeling, ai-transparency, compliance now lead; format\/optimization tags moved down)<\/li>\n<\/ul>\n\n<h4>0.3.7<\/h4>\n\n<ul>\n<li>Improved: readme.txt rewritten for better AI\/GEO visibility \u2013 tags, short description and first paragraph now focus on EU AI Act labeling and local processing; five new FAQ entries added<\/li>\n<li>Improved: Store screenshots refreshed (23 total, including a new PRO AI Alt Text Generator example)<\/li>\n<\/ul>\n\n<h4>0.3.6<\/h4>\n\n<ul>\n<li>New: Change the AI labeling status directly in the Media Library list view \u2013 click the label for a dropdown that saves instantly, or use the new bulk action to update several images at once<\/li>\n<li>New: \"Optimize All Images\" is now also available on the \"File Optimization\" tab and the Dashboard, not just hidden on the \"Alt Text\" tab<\/li>\n<li>Fix: AI-generated image alt text suffix (PRO) didn't match the EU AI Act format recommendation \u2013 square brackets and the Art. 50 citation offered no screen reader benefit per WCAG\/WebAIM review. New format: \"\u2026 (AI-generated).\" \/ \"\u2026 (AI-edited).\"<\/li>\n<li>Fix: The \"not classified retroactively\" notice on the AI Labeling tab contradicted the PRO retroactive bulk scan directly below it \u2013 now only shown without an active PRO license<\/li>\n<li>Fix: Savings notice in the attachment edit dialog didn't span the full width in the Media Library sidebar<\/li>\n<\/ul>\n\n<h4>0.3.5<\/h4>\n\n<ul>\n<li>Fix: Re-uploading an image already labeled by this plugin wasn't recognized as such, because the classifier only looked for third-party C2PA manifests, not its own XMP marker \u2013 affected WebP thumbnails in particular (the default conversion target), which had no read support at all. JPEG APP1, PNG iTXt and WebP XMP-RIFF containers are now checked in addition to C2PA (AVIF too, for PRO)<\/li>\n<li>Fix: AI-labeling area in the media modal only used about 65% of the sidebar width and its buttons wrapped unevenly on narrow windows; title and buttons repositioned\/redistributed<\/li>\n<\/ul>\n\n<h4>0.3.4<\/h4>\n\n<ul>\n<li>Fix: AI-labeling XMP\/IPTC marker (DigitalSourceType) was completely lost when converting to the AVIF sidecar (PRO) \u2013 affected the original and every thumbnail size. WebP was not affected.<\/li>\n<\/ul>\n\n<h4>0.3.3<\/h4>\n\n<ul>\n<li>Fix: AI label wasn't detected on themes that render images manually without WordPress's own wp-image-{ID} class (e.g. custom Blade\/Tailwind templates) \u2013 detection now also matches by image URL, with fallbacks for resized filenames, for files renamed by the plugin's own WebP conversion, for WebP size variants generated independently by WordPress core, and for WordPress's own \"-scaled\" suffix on auto-downscaled originals<\/li>\n<li>Fix: Badge appeared below the image instead of on top of it on themes that set a vertical margin on images (e.g. Tailwind Typography)<\/li>\n<li>Fix: Labeled images rendered narrower than unlabeled ones when image width was set via a CSS class (e.g. Tailwind's w-full) instead of inline style<\/li>\n<\/ul>\n\n<h4>0.3.2<\/h4>\n\n<ul>\n<li>Fix: AI-labeling badge broke the Gutenberg Gallery block's \"Crop images to fit\" option and images with a fixed height (e.g. Featured Images using object-fit: cover) \u2013 images fell back to their natural aspect ratio instead of cropping<\/li>\n<li>Fix: Small gap below labeled images caused by a missing vertical-align on the badge wrapper<\/li>\n<li>Fix: Dashboard \"Review markings\" button now links directly to the filtered Media Library view instead of the settings tab<\/li>\n<li>Fix: \"WebP quality\" label corrected to \"Quality\", since the setting also applies to AVIF (PRO)<\/li>\n<\/ul>\n\n<h4>0.3.1<\/h4>\n\n<ul>\n<li>Fix: Long filenames no longer break the History table layout (AI Labeling and File Optimization tabs) \u2013 truncated with an ellipsis, full name shown on hover<\/li>\n<li>Fix: AI-labeling badge position was incorrect on images rendered without the theme's own display:block reset (e.g. ACF image fields) \u2013 now positioned consistently everywhere<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>New: AI image labeling for EU AI Act Art. 50 compliance \u2013 detects AI-generated images on upload and writes hosting-independent labeling into every generated image size<\/li>\n<li>New: Visible \"AI-generated\" frontend badge, toggleable<\/li>\n<li>New: Manual correction control in the Media Library attachment details<\/li>\n<li>New: \"Needs review\" filter and status columns (AI Labeling, Alt-Text) in the Media Library list view<\/li>\n<li>New: Searchable, paginated history in Settings \u2192 AI Labeling<\/li>\n<li>Applies to new uploads only \u2013 existing media library images are not scanned or changed retroactively<\/li>\n<\/ul>\n\n<h4>0.2.2<\/h4>\n\n<ul>\n<li>Renamed internal prefix from IMP to EIMP (4+ characters) to comply with WordPress.org plugin review guidelines<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>PRO: Bulk Converter \u2013 converts entire media library to WebP\/AVIF including all thumbnail sizes<\/li>\n<li>PRO: Background Queue via WP-Cron for batch processing without PHP timeout risk<\/li>\n<li>PRO: AI Alt Text Generator \u2013 generates alt text, caption and description on upload (Mistral, Claude, OpenAI)<\/li>\n<li>PRO: Bulk AI queue fills missing alt texts, captions and descriptions for all existing images<\/li>\n<li>Fixed: Bulk conversion now correctly creates WebP and AVIF for all registered image sizes<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>WebP conversion on upload via GD (Imagick fallback)<\/li>\n<li>AVIF conversion (PRO) with automatic best-format selection by file size<\/li>\n<li>Replacement of src, srcset, href and data-* attributes in frontend<\/li>\n<li>Configurable quality setting<\/li>\n<li>CO\u2082 savings tracker with animated tree visualization<\/li>\n<li>Optional anonymous global statistics (opt-in)<\/li>\n<li>Activity log in admin<\/li>\n<\/ul>","raw_excerpt":"Labels AI-generated images automatically for the EU AI Act (Art. 50) and converts uploads to WebP\/AVIF locally - no cloud, no account.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ssw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/296341","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ssw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ssw.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ssw.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=296341"}],"author":[{"embeddable":true,"href":"https:\/\/ssw.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/maller"}],"wp:attachment":[{"href":"https:\/\/ssw.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=296341"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ssw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=296341"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ssw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=296341"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ssw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=296341"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ssw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=296341"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ssw.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=296341"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}