Subreality AI-Media-Label
Subreality AI-Media-Label
Description
Subreality AI-Media-Label helps you meet the transparency obligations of the EU AI Act for image material with as little effort as possible.
An editor decides once, in the media library, whether an image
- needs no label,
- was fully AI-generated, or
- was edited with AI.
From that moment on, the label appears automatically everywhere the image is used on the site – as a featured image, in Gutenberg blocks, in galleries, in the Classic Editor and on WooCommerce product images. Editors never have to think about it again when inserting the image.
Important: The plugin never modifies the image file itself. No image manipulation takes place (no GD, no Imagick, no watermark burned into the file). The label is rendered purely through an HTML wrapper plus CSS. It therefore works losslessly with JPEG, WebP, AVIF and any other format, and the design can be changed at any time without reprocessing existing images.
The plugin is fully translatable and ships with a German translation. The badge texts can be changed freely on the settings page, so the visible frontend label can be in any language you like.
How it works
- Three additional fields in the media edit dialog: label status, badge visibility, badge position.
- Automatic detection on upload: If an image file contains the IPTC/XMP standard value digitalSourceType (set by DALL-E and Adobe Firefly, among others), the label status is applied automatically. This can be switched off, and an existing label is never overwritten.
- Automatic coverage of attachment images through wp_get_attachment_image() (featured images, WooCommerce) as well as through rendered content (Gutenberg, Classic Editor, galleries).
- An additional safety net for images in block templates (full site editing), plus an optional JavaScript fallback for themes that only output images by their URL.
- Global settings page (Settings > Subreality AI-Media-Label) with a live preview: site-wide on/off switch, badge texts, badge position and visibility (optionally enforced for all images), a freely selectable background colour with an opacity slider – the badge text colour is chosen automatically for sufficient contrast.
- Media library tools: a dedicated “AI label” column in the list view, a status filter (including “not labelled”) and bulk actions to label many images at once.
- Machine-readable label: labelled images additionally receive a data-ai-status attribute in the HTML, which can be evaluated by search engines and tools even when the visible badge is hidden. This can be switched off.
- Live preview of the label directly in the block editor.
- No label is applied in RSS/Atom feeds and WooCommerce emails, because no plugin CSS is loaded there.
- Extensive filters and actions for developers, among other things to replace the badge design entirely and to add custom detection markers.
Privacy
This plugin does not collect, store or transmit any personal data about site visitors. It only stores editorial metadata (the label status) on the individual media attachment. The automatic detection reads the locally uploaded file only; no external services are contacted.
Bundled image files
The sample image used in the live preview (assets/img/beispielbild.webp) and the plugin logo (assets/img/ki-transparenz-logo.svg) were created by the plugin author with an AI image generator. No third-party rights apply to them; they are licensed under GPLv2 or later, just like the plugin.
Installation
- Upload the plugin folder to
/wp-content/plugins/, or upload the ZIP file via “Plugins > Add New”. - Activate the plugin.
- Edit an image in the media library and choose the appropriate status under “AI label” – or simply upload an AI image that carries the corresponding metadata, in which case it happens automatically.
Screenshots

Settings page: basic options (labelling, automatic detection, machine-readable output)

Settings page: badge position, visibility and appearance

Settings page: live preview of the badge

AI label fields in the media edit dialog

Media library list view with the status column

A labelled image in the frontend
Faq
No. The label is rendered purely through HTML and CSS while the page is being output. The original file is never touched.
Yes. The labelling hooks into WordPress core (wp_get_attachment_image, the_content, render_block) and is therefore independent of the theme in use. For themes that only output images by their URL (for example via get_the_post_thumbnail_url), an optional JavaScript fallback detection is available, as well as helper functions for theme developers.
Yes, on upload. Many generators (for example DALL-E and Adobe Firefly) embed the IPTC standard value digitalSourceType into the file. If the plugin finds this marker, the status is applied automatically. Images without metadata (for example screenshots taken from AI tools) still have to be labelled manually.
Yes. Badge texts, position, background colour and opacity are configurable on the settings page, with a live preview. The text colour is chosen automatically for sufficient contrast. For anything beyond that, developer filters are available, among them subreal_ai_badge_renderer for a completely custom badge design.
The label status stays stored, but no visible label is rendered in the frontend. The machine-readable label (the data-ai-status attribute) is still applied, provided that option is enabled.
The admin interface is in English and a German translation is included. Every string is translatable, so further translations are welcome. The badge texts shown in the frontend can be edited freely on the settings page as well, so the visible label can be in any language regardless of the interface language.
Reviews
Changelog
1.0.0
- First release.
- Labels AI-generated and AI-edited images purely through an HTML wrapper and CSS – the original file is never modified.
- Three fields per image in the media library: label status (none / AI-generated / AI-modified), badge visibility and badge position.
- Automatic coverage of featured images, WooCommerce images and images in post content; optional JavaScript fallback for images that themes only output by their URL.
- Settings page with live preview: badge texts, position, visibility, background colour and opacity; global defaults can be enforced for all images.
- Badge text colour is chosen automatically for sufficient contrast (light text on dark backgrounds and vice versa).
- Machine-readable
data-ai-statusattribute on every labelled image, even when the badge is hidden. - Automatic detection on upload based on the XMP/IPTC marker
digitalSourceType; existing labels are never overwritten. - Media library list view: “AI label” column, status filter and bulk actions for labelling and removing.
- No labelling inside WooCommerce emails; contexts and markup are extensible through filters.
- Fully translatable interface in English, with a German translation included.
- Optionally removes all plugin data on uninstall.