EU AI Act, Article 50

Is your AI notice there?

Article 50 says visitors must be told when they are talking to an AI system. This checks whether your own site does — in your own browser, on your own page. Nothing is sent anywhere.

01 Get it

One button. Drag it to your bookmarks bar.

It is a bookmarklet: a bookmark that runs a small script on whatever page you are looking at. Nothing to install, nothing to sign up for.

kalby.check

Drag this button onto your bookmarks bar. If the bar is hidden, press Ctrl+Shift+B (or +Shift+B on a Mac) to show it.

self-contained · 10.7 kB · no network

Clicking the button here does nothing on purpose: it needs to run on your site, not on this page.

02 How it works

Three clicks, and an honest answer.

  1. Open your own website

    Go to the page where your chat assistant lives — usually the home page, sometimes a support or contact page.

  2. Click the bookmark

    A panel appears in the top-right corner. If your chat has a launcher button, the check presses it first, the way a visitor would, so the greeting can be read.

  3. Read the verdict

    One of five results, below. Click the bookmark again to close the panel.

Disclosure found

The widget states that visitors are interacting with an AI system before they type. That is what Article 50(1) asks for.

No disclosure found

A widget is present and its visible text contains no such statement. If a human answers these chats, Article 50(1) does not apply and there is nothing to fix.

Unclear disclosure

Words like “virtual assistant” or “powered by AI” were found. Naming a product is not the same as telling someone they are talking to an AI system.

Widget found, but its text is sealed off

Hosted widgets run in a frame the browser will not let any script read. The check names the vendor and asks you to open the chat and read the first message yourself.

No chat widget found on this page

If your assistant lives elsewhere, or loads only for signed-in users, open that page and run the check there. If Kalby Disclose is installed, the check says so and stops.

03 What it sees

Everything on your page, and nothing beyond it.

Your setupWhat you get
Widget built into your own site A full answer. It reads the greeting and judges it against disclosure phrasings in all 24 official EU languages.
Hosted widget (Intercom, Zendesk, Tidio, Crisp, HubSpot, Drift, LiveChat, Tawk.to…) Vendor identified, text unreadable. The check says so plainly and hands the judgement to you.
AI chatbot platform (Botpress, Voiceflow, Chatbase…) Same as hosted — with the note that these are AI systems by design, so a notice is almost certainly needed.
Kalby Disclose already installed Confirms it, with the version, and stops bothering you.
Why the sealed-off case exists. Hosted widgets render inside a cross-origin frame, and your browser deliberately walls that off from the surrounding page. That is the same-origin policy protecting you; no browser tool can get around it, and one that claimed to would be lying. In that case the check tells you what it could not see rather than guessing. You know your own setup better than any scanner does.

Nothing leaves your browser

There is no server behind this. The check reads the page you are already looking at, in the browser you are already using, and shows you the answer. No account, no upload, no logs, nothing stored. The Copy result button puts a small text summary on your clipboard for your own records — that is the only way anything gets out, and you press it.

The test suite fails if the bookmarklet makes even one network request.

04 Manual install

If dragging is awkward.

On a phone, or in a browser without a bookmarks bar: create a bookmark by hand, name it kalby.check, and paste this as its address.

javascript:%2F*!%0A%20*%20Kalby%20Check%20v1.0.0%20%E2%80%94%20the%20no-server%20Article%2050%20checker.%0A%20*%20https%3A%2F%2Fgithub.com%2Fkalbydot%2Fkalby.ch…

05 The fix

If you need the notice, it is free too.

kalby.disclose adds the Article 50 notice in all 24 official EU languages, automatically, and labels AI-generated content. One line before </body>, no dependencies, 7 kB.

<script src="https://cdn.jsdelivr.net/gh/kalbydot/kalby.disclose@1.0.0/src/kalby-disclose.js"
        data-mode="both" data-lang="auto"></script>

Live demo and install guide, including WordPress →