LM Fingerpoint Detector
Identify the LLM behind an API from a few hundred casually written integers.
A relay or third-party API may claim to serve one model while actually routing to another. LM Fingerpoint Detector checks this with a task unrelated to meaning: it asks the model to write about 300 integers between 1 and 355 on first instinct. The "random numbers" a language model writes are not uniform, and each model has relatively stable preferences for values, ranges, and final digits. The detector compares the distribution with its reference bank and reports the closest candidate models.
Quick start
npx lmfpd in a terminal.Website
Command line
fpd.How it works
Features
- Two entry points: the website supports manual pasting and direct API access; the
fpdcommand line tool provides a live terminal interface, multi-round detection, and JSON output. - Three protocols: OpenAI Responses, Chat Completions, and Anthropic Messages, with SSE streaming by default.
- Reference bank: covers common model families such as GPT, Claude, Gemini, Grok, Qwen, and DeepSeek. The website's reference library can be browsed and exported read-only.
- Tokenizer probe (optional, off by default): turn on “Tokenizer probe” in the API configuration, or add
--tokenizeron the command line. Detection then sends about 12 more short requests and identifies the upstream tokenizer (the rule a model uses to cut text into tokens) from the token counts in the API usage. It checks the tokenizer against the model you entered. The result is reference only: the ranking and the confidence come from the number fingerprint alone and do not wait for the probe. Many models share one tokenizer, so a matching tokenizer does not prove the model identity. - Choose how to connect: pick Auto, Direct, This site's proxy (the default), or Own Worker in the API configuration. Auto calls the API directly from the browser when it allows web pages to (CORS) and otherwise goes through this site's proxy; you can switch to a Cloudflare Worker you deploy yourself.
- Traceable data maintenance:
fpd sample,fpd enroll, andfpd retrainhandle sampling, enrollment, and offline retraining. Failed records and previous attempts are always kept.
Results rank the reference bank only
Detection results are a closed-set ranking within the reference bank. A model outside the bank still receives a "closest" candidate, and neither ranking scores nor confidence prove identity. To judge whether a channel is trustworthy, keep request parameters fixed, repeat several rounds, and combine the result with other evidence.
About these docs
The docs are built with the repository and published under /docs of the detector site. Every page has a Chinese and an English version, except the proxy API reference pages generated from worker/openapi.json, which have one version. The buttons at the top of each page copy the page as Markdown or open its source file on GitHub; llms.txt and llms-full.txt at the docs root provide a plain-text version of the whole site for LLM tools.
Acknowledgments
Thanks to xqy2006/ModelTrace for the algorithmic ideas and part of the original data. The project is released under the MIT license.
Last updated on