AI label and chatbot disclosure checker

Drag one link to your bookmarks bar. Click it on any live page, including a staging site, localhost or a page behind a login, and it finds the AI labels and chat widgets on the page and reports how each one is delivered: real text or only pixels, what a screen reader gets, text contrast, and where it sits next to the image it labels.

Published . Last reviewed .

Free · No signup · Runs entirely in your browser. The page you check is never sent anywhere

Get the bookmarklet

What it checks

It reads the page as your browser has rendered it, so it sees what a scanner working from the HTML a server sends cannot: content added by JavaScript, the colors that are painted, and the page as you left it, logged in. It reads only. It never clicks, opens, scrolls or types on the page.

  • AI label wording. Phrases such as "AI-generated", "AI-modified", "made with AI", "created with Midjourney", "synthetic performer", "virtually staged", "KI-generiert" and "IA generada", in English, German, Spanish, French, Italian, Portuguese and Dutch. It looks in page text (up to 200 characters per element), alt text, aria-label and title attributes, SVG titles, the file names of icon images and CSS background images. A bare "AI" badge counts only when it sits on or beside an image.
  • How each label is delivered. Real text, or only a picture or CSS background; its accessible name; whether it is hidden from screen readers with aria-hidden, visually hidden, or only in a title attribute (a hover tooltip); its text contrast, where one plain color is behind it; and where it sits next to the image it labels, including whether the markup ties it to that image.
  • Images whose alt text mentions AI. Listed with whether the page also shows a visible label near the image. Alt text is not shown on screen when the image loads, so alt text on its own tells a visitor who looks at the image nothing.
  • Chat and AI agent widgets. Signatures for 35 chat and AI agent products, matched against script and frame addresses, element ids and inline script text, plus any fixed box in a lower corner of the window whose id, class or label says chat. For each widget: the launcher's accessible name and visible text, and whether AI-disclosure wording such as "AI", "virtual assistant", "bot" or "not a human" is visible. Greeting text is read only where it is already on the page or in a frame from the same site.
  • What it could not check. A cookie or consent banner that appears to be showing, images that have not finished loading, frames from other sites and widgets that load later are listed on every run, so a quiet result is never mistaken for a clean one.

Every finding has a plain explanation, the element it is about, and a Show on page button that scrolls to the element and draws a box around it. It reads at most 15,000 elements per page, at most 400 images and at most 1,000 labels, and shows at most 200 findings per category.

What the panel reports for each AI label
Line in the panelWhat it tells you
Real text or pixelsReal text in the page, or only a picture or CSS background image. Text drawn into pixels is not readable by screen readers, and a CSS background image has no text alternative.
Accessible nameWhat a screen reader announces for the label, worked out with a simplified version of the W3C accessible name algorithm. "None" when the label is hidden or has no name.
Hidden from screen readersThe label, or something around it, has aria-hidden="true", or is not displayed. If the image's alt text carries the same wording, the panel says so.
Hover onlyThe wording is only in a title attribute. A title shows as a tooltip when a mouse pointer rests on the element, so a visitor has to act to get it.
Visually hiddenThe label is exposed to screen readers but painted at one pixel, clipped or moved off the page, so a visitor who looks at the image gets no label from it.
Text contrastThe ratio of the text color to the color behind it, against the WCAG 1.4.3 thresholds, when one plain color is behind the text. Otherwise it says why it did not measure.
PositionOver the image (and which part), above, below or beside it, with the gap in pixels, and whether the markup ties the label to the image: the same figure or figcaption, aria-describedby, or only by position.

Why these checks: what the sources say

Each line below was checked against the primary text on October 21, 2026. This tool reports how a label is delivered. It does not say whether a law applies to you or whether a label is enough, and nothing on this page is legal advice.

Sources behind the label checks, verified October 21, 2026
SourceWhat it saysWhat the check does with it
EU AI Act, Article 50(5) (Regulation (EU) 2024/1689). Applies from August 2, 2026 (Guidelines, paragraph 153). The information about AI interaction and AI-generated content must be given "in a clear and distinguishable manner" and "shall conform to the applicable accessibility requirements". Reports whether a label can be perceived without sight (accessible name, aria-hidden) and without a mouse (hover only).
Commission Guidelines on Article 50, C(2026) 5054 (published July 20, 2026; "non-binding", paragraph 5). Paragraph 142: information is clear where it is "noticeable, easy to understand by and accessible for the natural person concerned (including persons with disabilities)", and not where it "can be easily overlooked or missed". Paragraph 144: "Article 50 AI Act does not impose distinct or additional accessibility requirements." Treats label accessibility as quality measured against the accessibility rules that already apply to you. It does not add an AI Act accessibility test of its own.
Code of Practice on transparency of AI-generated content (final June 10, 2026), Section 2, Measures 1.1 and 1.2. Signatories ensure accessible disclosure, including "high contrast icons or equivalent labels and screen-reader compatibility" and "detectability of the icon or equivalent label by assistive technologies". The top right corner of an image is an example placement, and the label should "remain visible against any background". Reports contrast, accessible name and position. The Code binds only its signatories (95 for Section 1 and 192 for Section 2 as of July 31, 2026), it names no contrast ratio, and the top right corner is an example, not a rule.
Commission EU icons page (last update October 13, 2026). "If possible, the icon should be readable by assistive technologies using alt text or ARIA labels." The page also says using the icons "does not establish legal compliance by itself". Flags icon images, found by their file names, that have no alt text or accessible name.

What the contrast number means

The ratio is measured against the thresholds of WCAG 1.4.3 (4.5:1, or 3:1 for large text) because that is the standard way to measure text contrast. Neither the AI Act nor the Code names a ratio. WCAG 1.4.3 also has no requirement for text that is part of a picture with significant other visual content, so a label drawn into a photo can pass WCAG and still miss the Code's test that a label "remain visible against any background". Labels over photos are therefore listed for a manual check. The image contrast checker measures a patch of pixels you choose.

Does a small shop have to make its label accessible?

Whether accessibility rules bind your site is a separate question from whether Article 50 applies. The European Accessibility Act (Directive 2019/882) covers e-commerce services for consumers, but it exempts microenterprises, which it defines as fewer than 10 persons and an annual turnover or balance sheet total of no more than EUR 2 million, from the service accessibility requirements. For many small shops an accessible label is good practice rather than a legal duty. Public sector bodies follow Directive 2016/2102. The standard EU law refers to today is EN 301 549 version 3.2.1, which is based on WCAG 2.1 Level AA; version 4.1.1, based on WCAG 2.2, is not yet the legal reference (AccessibleEU, September 7, 2026).

Chatbot disclosure: who is bound

The EU and the US put the duty in different places, so read the two paragraphs apart. Both were checked against the primary text on October 21, 2026, and neither is legal advice.

In the EU, the duty sits with the provider of the chatbot

Article 50(1) requires providers to design AI systems that interact directly with people so that those people are told they are dealing with an AI system, unless that is obvious. The Guidelines (paragraph 11) treat a company that supplies a chatbot under its own name or trademark, or builds one in-house and puts it into service under its own name, as the provider. If your chat widget comes from a vendor, ask the vendor how it meets Article 50(1) and (5). The Guidelines also say the notice must be given "in an accessible format for natural persons with disabilities" (paragraph 34), recommend a first-turn greeting that may be combined with "persistent badges or labels visible throughout the interaction" (paragraph 37), and say that unclear signals such as a generic reference to an assistant, and a general disclosure such as "Services on this website use AI", are insufficient when used alone (paragraph 38).

In the US, the duty sits with the business that uses the bot

US chatbot disclosure laws that bind the business using the bot, verified October 21, 2026
LawWho it bindsWhat it says
California SB 1001, Business and Professions Code 17940 to 17943 (operative July 1, 2019). Any person using a bot to communicate with someone in California online, with the intent to mislead them about its artificial identity in order to incentivize a purchase or sale or to influence a vote. "A person using a bot shall not be liable under this section if the person discloses that it is a bot." The disclosure "shall be clear, conspicuous, and reasonably designed to inform" people that it is a bot.
Maine, 10 MRSA 1500-Y (Public Law 2025, chapter 294, approved June 12, 2025). Any person using an AI chatbot "or any other computer technology" in trade and commerce with a consumer. A violation is a violation of the Maine Unfair Trade Practices Act. No use in a way that may mislead a reasonable consumer into believing they are dealing with a human "unless the consumer is notified in a clear and conspicuous manner that the consumer is not engaging with a human being".
Utah, Code 13-75-103 and 13-75-104 (SB 226, effective May 7, 2025). A supplier that uses generative AI to interact with an individual in connection with a consumer transaction. A duty to say so when asked. A person is not subject to enforcement if the AI "clearly and conspicuously discloses" at the outset of the interaction, and throughout it, that it is generative AI, is not human or is an AI assistant.

California AB 1609 (approved September 28, 2026) adds a chatbot disclosure duty for businesses with more than $500 million in revenue, enforced by public prosecutors only. What the bookmarklet reports for a widget is the wording a visitor can see and what the launcher is called. It cannot tell you whether a widget uses AI, and a widget being there does not show that AI answers.

Install it in your browser

  1. Show your bookmarks bar

  2. Drag the link onto the bar

    Drag the "GotAlt AI label check" link from the box above onto the bar. In Firefox you can also right-click it and choose Bookmark Link.

  3. Or make the bookmark manually

    Dragging needs a mouse or trackpad. Without one, press "Copy bookmarklet code", add a bookmark for any page (Ctrl+D, or Cmd+D on a Mac), edit that bookmark (in Safari, Control-click it to edit its address; see Apple's instructions), call it "GotAlt AI label check", and paste the code into its address or URL field. Paste it there, not into the browser's address bar: some browsers remove the javascript: start of the code when you paste it into the address bar.

  4. Click it on any page

    Open the page you want to check and click the bookmark. A panel opens at the side of the page. Click the bookmark again, press Escape, or use the Close button to remove it. "Run the checks again" re-reads the page, which is what you want after a cookie banner is dealt with, after you scroll, or after a chat widget has loaded.

Or press "Try it on this page" above to run it on this guide. It will list the example phrases quoted on this page as labels, because it reads wording: that is what it is for.

It sits beside our accessibility bookmarklet, which checks alt text, headings, link names, form labels and text contrast. They are separate bookmarklets, and you can install both.

Nothing leaves your browser unless you click

The bookmarklet reads the page in your tab and shows its results in a panel in the same tab. It makes no network requests, loads no other scripts and writes nothing to storage, and it has no analytics, so we do not know that you ran it. The links in the panel (the Site Image Check, our guide to accessible AI labels, the AI label generator and, when a label sits over a photo, our image contrast checker) only load if you click them. They open in a new tab and send no referrer.

The Site Image Check link is the one that carries something: the address of the site you checked, such as https://example.com, never the page you were on or anything on it, so that the order page can fill it in, and a short tag saying the click came from this bookmarklet. If you do not click it, we never receive either.

A bookmarklet runs with the same access as the page you click it on, so only use ones you have read. This one is a single readable file: gotalt-ai-check.js. The bookmarklet is the same code with its comments, spare spaces and line breaks taken out, so it fits in a bookmark. It carries its own copy of the contrast maths, so it never downloads a second script, and a site that blocks scripts from other places cannot stop it loading part of itself. Whether a site's security settings let a bookmarklet run at all depends on your browser; see the limits below.

What it can and can't do

What this bookmarklet can't do

  • It never decides whether something is AI-generated. It reads wording and markup. A page with no label found may still contain AI content or need a label, and a label found does not show that the content is AI-generated.
  • It does not say whether a law applies or is met. It reports how a label is delivered. Whether Article 50, a US state law or a platform rule applies to you, and whether your label is enough, is for you and your adviser. It does not certify anything, and a quiet result means only that these checks found nothing.
  • Labels drawn into the pixels of a picture are not read. A label burned into an image is invisible to it. Look at those by eye, and give them a text equivalent next to the image.
  • Contrast is measured only where one plain color is behind the text. Backgrounds are found by walking up from the label and blending background colors until one is opaque, and, when the label is on screen, by asking the browser what is painted behind it at three points. Text over an image, a gradient, another element, a faded box or a page with no background color is listed for a manual check. A label that is off screen is estimated from its parents and says so. Elements with pointer-events: none are not seen by the stacking lookup.
  • Accessible names are simplified. They follow a simplified version of the W3C accessible name algorithm, and the panel says so. A screen reader may announce something slightly different.
  • Chat widgets are found by their scripts, ids and position. A widget being there does not show that AI answers. The check never opens or clicks a widget, so a greeting shown only after it opens is not read, and a widget in a frame from another site can be named but not read.
  • It sees one page, once. Content that loads later, or only after consent, is seen only if you run it again. Frames from other sites and closed shadow DOM cannot be inspected; open shadow DOM and frames from the same site are. The panel says how many frames it could not read.
  • It shows at most 200 findings per category. If there are more, it says how many it left out.
  • Some sites can block it. A site's security settings (a Content-Security-Policy) can stop bookmarklets running, and browsers differ here: Firefox applies the site's policy to bookmarklets, which is a long-standing open Firefox bug report. A site with a modal dialog open can also cover the panel. Our automated tests run it in a Chromium-based browser.

Questions

Does this tell me whether my AI label meets the EU AI Act?

No. It reports how a label is delivered: whether it is real text, what a screen reader gets, whether it is hidden or hover only, its text contrast and its position. The Commission's own icons page says using its icons "does not establish legal compliance by itself", and the Guidelines are not binding. Whether Article 50 applies to you, and what it asks, is a question for you and your adviser.

Can it tell whether an image or a text is AI-generated?

No, and it does not try. It reads the wording a page uses to disclose AI, such as "AI-generated" or "made with AI". An image with no label is not reported as human-made, and a label is not taken as proof that something is AI-generated.

Why does it say a label is "pixels only"?

The label is an icon file or a CSS background image, so there is no text in the page for a screen reader to read. The Commission's icons page says the icon should be readable by assistive technologies using alt text or ARIA labels where possible. Alt text, a caption or visible text next to the image gives screen reader users the same information.

Why does it say "check manually" for contrast?

When a label sits over a photo, a gradient or another element, there is no single background color to read from the page, and guessing would give false passes and false failures. Those labels are listed so you can test them yourself with the image contrast checker.

Does it click my chat widget?

No. It never clicks, opens, scrolls or types on the page. It reads the launcher's name and visible text, and the text already on the page in the widget's box or in a frame from the same site. A greeting that appears only after the chat opens is not read, so open the chat yourself and look at the first message.

Does my small shop need an accessible AI label?

It depends on which rules bind your site. The European Accessibility Act exempts microenterprises from its service accessibility requirements, and the Commission's Guidelines say Article 50 adds no distinct accessibility requirement of its own, so for many small shops an accessible label is good practice rather than a legal duty. It is also the clearest way to make sure every visitor gets the label. This is not legal advice.

Why a bookmarklet and not a browser extension?

There is nothing to install from a store, and it only runs on the page when you click it. Extensions often ask for permission to read every page you visit. A bookmarklet only has the page you clicked it on. The trade-off is that a site's security settings can block a bookmarklet in some browsers, Firefox in particular; the limits above say more.

Does it work on localhost, staging and pages behind a login?

Yes, because it runs in the tab you already have open. Nothing is sent to a server, so GotAlt never needs to reach your page. That is the difference from our free scan, which fetches pages from the outside and so cannot see anything private. The one exception is the link near the end of the results to order a Site Image Check: if you click it, gotalt.com opens with the site's address in the link and nothing else from your page. That check reads public pages from the outside, like the free scan.

This checks one page, when you remember to click it

The Site Image Check reads up to 50 pages of your site for $49 (250 for $149), once, with no subscription. Its AI disclosure section lists, for the images the check opens, the AI markers each file declares (a C2PA manifest, an IPTC DigitalSourceType, XMP keywords such as contains-synthetic-performer) and whether the page shows AI-label text with the image (alt text, a figcaption or adjacent text), and, for each page, known chat widgets and whether AI-disclosure wording appears in the page's HTML. It never decides whether an image is AI-generated, and it does not measure label contrast or screen reader exposure: this bookmarklet does that on the pages you click it on.

Check my site once from $49