Title: Grafiduo AI Content Flag
Author: grafiduo
Published: <strong>September 17, 2026</strong>
Last modified: September 17, 2026

---

Search plugins

![](https://ps.w.org/grafiduo-ai-content-flag/assets/banner-772x250.png?rev=3699939)

![](https://ps.w.org/grafiduo-ai-content-flag/assets/icon-256x256.png?rev=3699939)

# Grafiduo AI Content Flag

 By [grafiduo](https://profiles.wordpress.org/grafiduo/)

[Download](https://downloads.wordpress.org/plugin/grafiduo-ai-content-flag.zip)

 * [Details](https://wordpress.org/plugins/grafiduo-ai-content-flag/#description)
 * [Reviews](https://wordpress.org/plugins/grafiduo-ai-content-flag/#reviews)
 *  [Installation](https://wordpress.org/plugins/grafiduo-ai-content-flag/#installation)
 * [Development](https://wordpress.org/plugins/grafiduo-ai-content-flag/#developers)

 [Support](https://wordpress.org/support/plugin/grafiduo-ai-content-flag/)

## Description

AI Content Flag lets you mark content as AI-generated or AI-modified and shows a
visible label to your readers, in line with the transparency duty in Article 50 
of the EU AI Act.

Labelling is manual and deliberate: nothing is detected, guessed, or sent anywhere.
You tick a box, the plugin renders the label — on the image, in the lightbox, and
at the top or the bottom of the article.

#### Three label types

The plugin uses the three official European Commission labels:

 * **AI (basic)** — artificial intelligence was involved in creating the content.
 * **AI Generated (fully)** — the content was produced entirely by AI, with no human
   element beyond the prompt.
 * **AI Modified (partially)** — authentic material was partially changed by AI.

The editor box explains when each one applies, so the decision does not have to 
be looked up every time.

#### What gets labelled

 * **Images and video** in the media library — an overlay badge appears on the front
   end, including inside PhotoSwipe / lightbox views and on CSS background images.
 * **Posts and pages** — a disclosure note is printed at the start or the end of
   the content.
 * Featured images, gallery and cover blocks, and markup produced by Elementor, 
   Beaver Builder, Divi, and Bricks.

#### Other features

 * Four EU icon variants: black, white, and 50% transparent versions of each.
 * Every label carries an accessible name, so screen readers announce what it means.
 * Bulk actions in the media library to label or unlabel many files at once.
 * An “AI” column in the media library and in post list tables, so you can see at
   a glance what is labelled.
 * Works in the block editor and the classic editor. There is no block to insert
   and no shortcode to remember.
 * Every label is a standard gettext string, so translations from translate.wordpress.
   org or your own .po file apply.
 * Choose where the post disclosure sits: at the start of the content or at the 
   end.
 * On deletion the plugin asks whether to keep your labels and settings, and keeps
   them by default.

#### Performance

Nothing runs on the front end until something is actually labelled. The stylesheet
loads only on pages that carry a label. On WordPress 6.9 or newer a full-page scan
uses Core’s template enhancement output buffer, and only once at least one media
file is labelled. The list of labelled media is built once, cached for a day, and
rebuilt only when media is added, edited, or removed.

#### External services

None. The plugin makes no outbound requests, loads no remote assets, sets no cookies,
and collects no data. The settings screen links to the European Commission’s page
about the icons, but nothing is loaded from it.

#### Bundled icons

The icons in `assets/icons/` are the AI labelling icons published by the European
Commission — three label types in four color variants. The Commission states on 
its page that they are “made publicly available for everyone to use freely”, with
no attribution required. Source: https://digital-strategy.ec.europa.eu/en/policies/
eu-icons-labelling-ai-generated-content

This plugin is an independent project. It is not affiliated with, endorsed by, or
connected to the European Commission or the European Union. Using the icons does
not signal that a site has signed the Code of Practice on marking and labelling 
AI-generated content, and this plugin makes no such claim.

#### Add-on

An optional commercial add-on, Grafiduo AI Content Flag Pro, renders the labels 
its own way: a text badge with your own wording and colors in a corner of your choice,
a styled keyboard-reachable tooltip with editable sentences, the document-level 
disclosure on further post types, and WooCommerce product-gallery hooks.

Everything described above works without it. The free plugin contains no license
check and withholds nothing.

## Screenshots

[⌊An AI-labelled product image in a shop listing. The badge sits in the corner of
the image, on top of the theme's own markup, and only on the product that carries
a label.⌉⌊An AI-labelled product image in a shop listing. The badge sits in the 
corner of the image, on top of the theme's own markup, and only on the product that
carries a label.⌉[

An AI-labelled product image in a shop listing. The badge sits in the corner of 
the image, on top of the theme’s own markup, and only on the product that carries
a label.

[⌊The same label on the single product page.⌉⌊The same label on the single product
page.⌉[

The same label on the single product page.

[⌊A post with the document-level disclosure printed at the start of the content.⌉⌊
A post with the document-level disclosure printed at the start of the content.⌉[

A post with the document-level disclosure printed at the start of the content.

[⌊The label box in the post editor sidebar, with guidance on when each of the three
EU label types applies.⌉⌊The label box in the post editor sidebar, with guidance
on when each of the three EU label types applies.⌉[

The label box in the post editor sidebar, with guidance on when each of the three
EU label types applies.

[⌊The media library, with the AI column showing at a glance what is labelled.⌉⌊The
media library, with the AI column showing at a glance what is labelled.⌉[

The media library, with the AI column showing at a glance what is labelled.

[⌊Bulk actions in the media library: label or unlabel many files in one go.⌉⌊Bulk
actions in the media library: label or unlabel many files in one go.⌉[

Bulk actions in the media library: label or unlabel many files in one go.

[⌊The same AI column in the post list table, so labelled posts are visible without
opening them.⌉⌊The same AI column in the post list table, so labelled posts are 
visible without opening them.⌉[

The same AI column in the post list table, so labelled posts are visible without
opening them.

## Installation

 1. Upload the plugin to `/wp-content/plugins/`, or install it from Plugins  Add New.
 2. Activate it through the Plugins screen.
 3. Go to Settings  AI Flag to choose the icon variant and where the post disclosure
    sits.
 4. Label a file from Media  Library (the “AI label” field), or a post from the “AI
    label (Art. 50)” box in the editor sidebar.

## FAQ

### Does this detect AI content automatically?

No. Every label is applied by hand. Automatic detection is unreliable, and the AI
Act places the disclosure duty on the person publishing the content.

### Does using this plugin make my site compliant with the AI Act?

It gives you the tooling to disclose, but compliance depends on what you label and
how. The plugin is not legal advice.

### Where do the icons come from?

They are the labelling icons published by the European Commission for AI-generated
content. See the link on the settings screen for the Commission’s own guidance on
when to use each one.

### Do I have to use the EU icons?

This plugin renders the official icons, in the black, white, and 50% transparent
variants, because those are the labels the Commission publishes. A text badge of
your own is what the add-on is for.

### Will the page scan slow my site down?

It does not run at all until at least one file carries a label. Once something is
labelled, the plugin works from a cached index of those files rather than querying
the database per image. On WordPress 6.9 or newer the full-page pass uses Core’s
template enhancement output buffer. If you would rather it never scanned the whole
page, return false from the `aicft_output_buffer` filter.

### Can I translate the labels?

Yes. Every label and accessible name is a standard gettext string, so a translation
from translate.wordpress.org or your own .po/.mo for the locale applies.

### Can I label WooCommerce products or a custom post type?

Images are labelled wherever they appear, products included. The document-level 
disclosure covers posts and pages; the add-on extends it to further post types.

### My theme’s lightbox does not show the badge.

The bundled script covers PhotoSwipe and the WordPress core lightbox. If your theme
ships a different one, filter `aicft_lightbox_config` to feed it the same data.

### What happens to my labels if I delete the plugin?

They are kept. On deletion the plugin asks, and keeping them is the default, so 
reinstalling restores every label and setting.

## Reviews

![](https://secure.gravatar.com/avatar/cb431f81b92284976d59317856849db1cf112fa7d5b8c2ce7bbfff6154a41ccb?
s=60&d=retro&r=g)

### 󠀁[Clean, easy, effective](https://wordpress.org/support/topic/clean-easy-effective-3/)󠁿

 [kubaz11011](https://profiles.wordpress.org/kubaz11011/) September 17, 2026

Simple, manual AI labeling, clean labels on images and posts, easy to pick the right
type, and it plays nicely with Gutenberg. Great lightweight tool for EU AI Act compliance.
Highly recommend!

![](https://secure.gravatar.com/avatar/768072c2da695878b4437c6465bd10ada17b7b0ec16b71a068414f24583fb306?
s=60&d=retro&r=g)

### 󠀁[Really useful little plugin](https://wordpress.org/support/topic/really-useful-little-plugin-2/)󠁿

 [pgramcow](https://profiles.wordpress.org/pgramcow/) September 17, 2026

It’s simple to use, doesn’t add unnecessary complexity

 [ Read all 2 reviews ](https://wordpress.org/support/plugin/grafiduo-ai-content-flag/reviews/)

## Contributors & Developers

“Grafiduo AI Content Flag” is open source software. The following people have contributed
to this plugin.

Contributors

 *   [ grafiduo ](https://profiles.wordpress.org/grafiduo/)
 *   [ pgramcow ](https://profiles.wordpress.org/pgramcow/)

[Translate “Grafiduo AI Content Flag” into your language.](https://translate.wordpress.org/projects/wp-plugins/grafiduo-ai-content-flag)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/grafiduo-ai-content-flag/),
check out the [SVN repository](https://plugins.svn.wordpress.org/grafiduo-ai-content-flag/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/grafiduo-ai-content-flag/)
by [RSS](https://plugins.trac.wordpress.org/log/grafiduo-ai-content-flag/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.6.5

 * Added a one-line pointer to the Pro add-on on this plugin’s own Settings  AI 
   Flag screen, plus a dismissible notice there (nowhere else) for anyone who hasn’t
   seen it yet. Purely informational; nothing in this plugin depends on the add-
   on or is restricted without it. Hidden automatically once the Pro add-on is installed
   and active.

#### 1.6.4

 * Give the document-level disclosure a 300px-wide slot so hover text next to the
   label can wrap at a readable width instead of the icon.

#### 1.6.3

 * Scan the full page through WordPress 6.9’s template enhancement output buffer
   instead of leaving a plugin-owned ob_start() open until shutdown.

#### 1.6.2

 * Sanitize badge and disclosure markup returned from filters with wp_kses before
   it is printed on the_content and render_block.
 * Sanitize lightbox badge HTML after the aicft_lightbox_config filter, and encode
   the inline script payload so it cannot break out of a script tag.
 * Escape the media-library field label, help text, and HTML that WordPress prints
   from attachment_fields_to_edit.

#### 1.6.1

 * Removed the code for the custom text badge, badge colors and corner, tooltips
   and their sentences, extra content types, and the Polylang/WPML string registration.
   None of it was reachable from this plugin’s own screen; the separately distributed
   add-on now implements those features itself.
 * Labels are the official EU icon plus an accessible name. There is no tooltip 
   code in this plugin any more.
 * Added the aicft_badge_html and aicft_disclosure_html filters so add-ons can replace
   the label markup, and removed the add-on pointer from the settings screen.

#### 1.6.0

 * Renamed to Grafiduo AI Content Flag (slug: grafiduo-ai-content-flag) at the Plugins
   Team’s request, for a more distinctive name.
 * Fixed the Plugin URI, which pointed at a page that no longer resolves.
 * Stopped bundling compiled translation files; the plugin relies on translate.wordpress.
   org and no longer calls load_plugin_textdomain().

#### 1.5.1

 * Stop parsing the whole page with DOMDocument when injecting badges. Markup is
   now updated with targeted replacements, so inline scripts, styles, and HTML5 
   templates are left intact.
 * Resolve labelled media from the cached index instead of querying post meta for
   every image. Unlabelled archives no longer pay a database round-trip per thumbnail.
 * Prime the post-meta cache when the index is first built, and store only filenames
   in the index and the lightbox payload.
 * Skip block and content filters while the page buffer is running, exclude feeds
   from decoration, and flush the index when attachment image sizes are regenerated.

#### 1.5.0

 * First release in the WordPress.org plugin directory: manual AI labelling for 
   images, video, posts and pages, with the official European Commission icons.

## Meta

 *  Version **1.6.5**
 *  Last updated **6 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 5.8 or higher **
 *  Tested up to **7.1**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [AI](https://wordpress.org/plugins/tags/ai/)[ai act](https://wordpress.org/plugins/tags/ai-act/)
   [disclosure](https://wordpress.org/plugins/tags/disclosure/)[labelling](https://wordpress.org/plugins/tags/labelling/)
   [transparency](https://wordpress.org/plugins/tags/transparency/)
 *  [Advanced View](https://wordpress.org/plugins/grafiduo-ai-content-flag/advanced/)

## Ratings

 5 out of 5 stars.

 *  [  2 5-star reviews     ](https://wordpress.org/support/plugin/grafiduo-ai-content-flag/reviews/?filter=5)
 *  [  0 4-star reviews     ](https://wordpress.org/support/plugin/grafiduo-ai-content-flag/reviews/?filter=4)
 *  [  0 3-star reviews     ](https://wordpress.org/support/plugin/grafiduo-ai-content-flag/reviews/?filter=3)
 *  [  0 2-star reviews     ](https://wordpress.org/support/plugin/grafiduo-ai-content-flag/reviews/?filter=2)
 *  [  0 1-star reviews     ](https://wordpress.org/support/plugin/grafiduo-ai-content-flag/reviews/?filter=1)

[Your review](https://wordpress.org/support/plugin/grafiduo-ai-content-flag/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/grafiduo-ai-content-flag/reviews/)

## Contributors

 *   [ grafiduo ](https://profiles.wordpress.org/grafiduo/)
 *   [ pgramcow ](https://profiles.wordpress.org/pgramcow/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/grafiduo-ai-content-flag/)