# How the Identity Check Works

Every test starts with the identity check. It names the model behind the endpoint, or says that no model in the baseline fits.

## Probes

The probes are one-line requests such as "Name a random country", "从12到76之间随便选一个整数" (pick an integer from 12 to 76) or "Choose one: vorn, kelit, ashup, temba". Asked "at random", every model still has strong, stable preferences of its own: one says Kyrgyzstan where another says Uruguay, 47 where another says 67. Across 20 probes in English and Chinese, those preferences form a fingerprint. The English probes separate model families; the Chinese ones separate models within the Chinese families, such as GLM 5.3 from GLM 5.3 Flash.

## The Baseline

A baseline holds each model's answers to the same probes, collected many times from its official provider over several sessions. Answers are normalized before they're counted: reasoning is stripped, markdown and quotes unwrapped, case ignored. [Baselines](https://llm-id.sh/docs/baselines) lists what's installed.

## Scoring

A test's answers are scored under every model in the baseline. Two questions must agree for a verdict:

- **Which model fits best,** and by how much it leads the runner-up.
- **Do the answers fit the claimed model as well as its genuine tests do?** This catches a substitute that isn't in the baseline at all: the answers fit nothing well.

A third test looks for answers that come from several models at once; see [Mixed Routing](https://llm-id.sh/docs/mixed-routing).

## Calibration

The decision lines are set by simulating thousands of tests from the baseline's own data, including the variation between collection sessions. In those simulations a genuine endpoint is wrongly flagged in at most about 1% of tests, and each model is mistaken for another in at most about 0.5%. Real sessions held out of the baseline are scored as a further check; [Baselines](https://llm-id.sh/docs/baselines) gives the results.

## Siblings

A few models answer almost alike: MiMo-V2.5 and MiMo-V2.6-Flash are the closest pair. When the answers fit such a sibling slightly better than the claimed model, the report says the two can't be told apart and ends **Inconclusive**, rather than calling a substitution.

## Also in Every Test

- **Reasoning is set aside.** Thinking blocks and reasoning fields are ignored when answers are compared. Reasoning that comes back encrypted, or only as a token count, is counted as hidden, not missing.
- **Prompt tokens are compared.** Each model family has its own tokenizer and chat template, so the prompt-token count the endpoint reports for each probe is compared with the official route's. It's a hint only, since relays can rewrite usage figures.
- **Requests match the baseline.** Every request carries the same sampling settings the baseline was collected with.
- **Speed and cost are measured.** Every report includes latency, time to first token, tokens per second, reasoning, reliability and reported cost.

## Credit

The method follows meow-llm-detector by chen-006 and contributors, and the paper it credits: Tomas Bruckner, *One Token Is Enough: Fingerprinting and Verifying Large Language Models from Single-Token Output Distributions*. llm-id is an independent implementation with its own probes and baselines.

---

From the llm-id.sh guides: https://llm-id.sh/docs/identity
