---
title: "How Linkbreakers detects AI agents and automated browsers"
description: "Every visit is classified as Human, Bot, Agent, Automated or Unknown. Learn how each actor is decided, which AI agents are recognized by name, how headless and visible automated browsers are caught, and the limits."
canonical: "https://linkbreakers.com/help/article/how-linkbreakers-detects-ai-agents-and-automated-browsers"
last-updated: 2026-10-29
---

# How Linkbreakers detects AI agents and automated browsers

> Every visit is classified as Human, Bot, Agent, Automated or Unknown. Learn how each actor is decided, which AI agents are recognized by name, how headless and visible automated browsers are caught, and the limits.

## Short answer

Linkbreakers classifies every visit as one of five actors: **Human**, **Bot**, **Agent**, **Automated** or **Unknown**. Agents are AI agents that name themselves in their user agent, such as GPTBot, ChatGPT-User or Claude-User. Automated is a browser driven by software, whoever is behind it: an AI agent operating a browser, a load or QA test, a scraper or a monitor.

Most of this is decided from the request itself, with no delay for your visitors. Headless Chrome is recognized on every visit. A visible browser under automation sends the same request as a person, so it is only recognized when the link collects data at the **Advanced** level, and its routing changes from its next visit on.

## Quick summary

- **Human**: a person in a normal browser. This is the default
- **Bot**: crawlers that name themselves, such as Googlebot, Bingbot, link preview bots and ad verifiers
- **Agent**: AI agents that name themselves in their user agent
- **Automated**: a browser driven by software. Headless Chrome is caught from its request; a visible automated browser is caught by the Advanced data collection page
- **Unknown**: a request with no user agent
- Use the actor in a **Device Actor Condition** to route visits, and read it in analytics, the visitor profile, device details and the activity timeline

## How each actor is decided

Linkbreakers checks the request in this order.

### Unknown

A request that sends no user agent at all is **Unknown**. This usually comes from a script or a command-line tool.

### Automated: headless browsers

A headless browser runs without a window, which is how many tests, scrapers and browsing agents run Chrome. Headless Chrome names itself `HeadlessChrome`, in its user agent or in its `Sec-CH-UA` client hints. When either says so, the visit is **Automated**, with the actor name **Headless Chrome**. This works from the first visit, with no page in the browser.

### Agent: AI agents that name themselves

When the user agent names a known AI agent, the visit is **Agent**, with its name and origin:

| Actor name | Origin |
|---|---|
| GPTBot, ChatGPT-User, OAI-SearchBot | OpenAI |
| ClaudeBot, Claude-User, Claude-SearchBot | Anthropic |
| Perplexity-User, PerplexityBot | Perplexity |
| MistralAI-User | Mistral |
| Gemini (also matched by Google-Extended) | Google |
| Grok | xAI |
| Meta-ExternalAgent | Meta |
| cohere-ai | Cohere |

These are the agents that fetch a page themselves, for example when you ask ChatGPT or Claude to read a link.

### Bot: crawlers that name themselves

When the user agent names a crawler or another known bot, the visit is **Bot**. Examples include Googlebot, Bingbot, Applebot, link preview bots such as LinkedInBot or the Facebook preview fetcher, and ad verification bots.

### Human

Everything else is **Human**: a request with a user agent that does not say it is a bot, an AI agent or a headless browser.

## Why visible automated browsers need a page

A visible (headed) browser under automation is an ordinary browser with a window that software controls. Examples:

- Chrome showing the bar "Chrome is being controlled by automated test software"
- Playwright or Selenium running in headed mode
- An AI agent operating Chrome on your computer or in the cloud

Its requests carry the same user agent and headers as a person's, so the request alone cannot tell them apart. The browser does say it, though: browsers expose a property, `navigator.webdriver`, which is `true` when they are driven by automation. Reading it needs a page to run in the browser.

That is what the **Advanced** data collection level adds. When a link collects data at the Advanced level, a short page loads in the visitor's browser to read device details such as screen size and network information. It now also reads `navigator.webdriver`. If the browser reports automation:

- The device is recorded as **Automated**, with the actor name **Automated browser**
- That visit shows as Automated in analytics, the visitor profile, the device details and the activity timeline
- Every later visit from that device takes the **Automated** branch of a Device Actor Condition

The Advanced page was already there, and the extra check is reading one property, so no delay is added for your visitors.

## How to turn on Advanced data collection

1. Open **Settings** in your workspace
2. Under **Data Collection**, choose **Advanced data collection**

Advanced data collection is locked on the Free plan. See [what data you can collect from QR code scans](/help/article/what-data-you-can-collect-from-qr-code-scans-location-device-behavior) for what each level (None, Basic, Advanced) records, and check that your privacy notice covers it.

## Route agents and automated browsers

Add a **Device Actor Condition** to the link's workflow and connect a step to each actor you care about. Visits that match no option follow the condition's fallback. In the editor, picking **Agent** or **Automated** shows a short note on what that option catches, with a link to this article.

Agent and Automated are separate options because an automated browser is not always an AI agent: it can be your own QA test or an uptime monitor. To treat AI agents and automated browsers the same way, connect both the **Agent** and the **Automated** options to the same step.

To send coworkers to a document you share in chat while AI agents get something else, see [how to make sure coworkers read a shared link themselves, not an AI summary](/help/article/how-to-make-sure-coworkers-read-a-shared-link-themselves-not-an-ai-summary).

In the API and MCP tools, the condition value is `DEVICE_ACTOR_CONDITION_VALUE_AUTOMATED`, and a device's actor is `DEVICE_ACTOR_AUTOMATED`. The Advanced page sends the browser's report as `automated` on the device input.

## Limits and caveats

- **The first visit of a visible automated browser is routed as human.** The Advanced page that detects it runs after the workflow has routed that visit. The visit itself is still recorded as Automated, and the device is routed as Automated from its next visit.
- **Links without Advanced data collection never learn it.** At None or Basic, no page runs in the browser, so a visible automated browser stays Human. Headless Chrome is still recognized from its request.
- **Stealth setups are not detected.** A browser configured to hide `navigator.webdriver`, as stealth plugins do, looks like a person's browser.
- **It is remembered per device, for about a year.** A device is recognized by its browser cookie, so a browser that clears its cookies or starts from a fresh profile is a new device, and its first visit is routed as human again.
- **Names can be faked.** Agent and Bot rely on what the user agent says. An agent that sends an ordinary browser user agent is not recognized as an agent.

## Privacy

`navigator.webdriver` is a property of the browser, a yes or no about whether software is driving it. It contains no personal data, and Linkbreakers reads nothing else for this check. The Advanced level as a whole does record more device details, which are listed in the [data collection article](/help/article/what-data-you-can-collect-from-qr-code-scans-location-device-behavior).

## Frequently asked questions

### Does detection work when a link collects no data?

For routing, yes: an Actor condition reads the request on every visit, whatever the data collection level, so Unknown, Bot, Agent and headless Automated visits are routed at every level. Recording the actor on the device, so that it shows in analytics and on the visitor profile, needs the Basic level or above. Recognizing a visible browser under automation needs the Advanced level.

### Is an AI agent operating a browser an Agent or Automated?

Automated. Agent covers AI agents that name themselves in their user agent. An agent that drives a browser sends that browser's requests, so it shows as Automated when it is recognized, and as Human otherwise.

### Why was my first test visit counted as Human in routing?

If you tested with a visible automated browser, the page that detects it runs after routing. Open the link again from the same browser and it takes the Automated branch.

### Does detection slow down my links?

No. Agent, Bot, Unknown and headless detection come from the request. The webdriver check runs on the Advanced page that links at that level already load.

### Can I catch Playwright, Puppeteer or Selenium?

In headless Chrome, yes, on every visit. In a visible browser, from the second visit on, when the link uses Advanced data collection and the browser does not hide `navigator.webdriver`.

### Will my own uptime monitor or QA tests show as Automated?

Yes, if they drive a browser. Route the Automated option to a step of its own if you want them kept out of your main path.

## Sources

- Linkbreakers Device Actor Condition and Advanced data collection, checked in the product on 2026-10-29.
- MDN Web Docs, Navigator.webdriver: https://developer.mozilla.org/en-US/docs/Web/API/Navigator/webdriver
- W3C WebDriver specification, the webdriver-active flag: https://www.w3.org/TR/webdriver2/

## Last reviewed

2026-10-29 by Laurent Schaffner.
