— EU AI Act, Article 50
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
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.
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
Go to the page where your chat assistant lives — usually the home page, sometimes a support or contact page.
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.
One of five results, below. Click the bookmark again to close the panel.
The widget states that visitors are interacting with an AI system before they type. That is what Article 50(1) asks for.
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.
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.
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.
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
| Your setup | What 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. |
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
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
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>