Live dashboard
Aggregated data from the tracker at track.jsseo.dev. Rebuilt at landing build time (daily). Individual hit details and IPs are not exposed — this is rollup only. See /data for raw data and citation.
Snapshot
Tracker data generated at 2026-08-28T09:26:11.817Z.
Build fetched it at 2026-08-28T09:26:12.071Z.
- 25986 hits total
- 154 in last 24h
- 999 in last 7 days
- 30 distinct bot classes
- 56 distinct cells
By JS content pattern (v0.4 primary axis)
One row per js_content_pattern. Pattern definitions in the
methodology.
| pattern | hits | last 24h | bot classes | page types | ✓ verified bots |
|---|---|---|---|---|---|
(legacy/non-cell) |
13329 | 64 | 29 | 1 | 916 |
clean |
3991 | 26 | 26 | 5 | 665 |
click-reveal |
1534 | 8 | 18 | 5 | 231 |
js-images |
1520 | 16 | 18 | 5 | 224 |
js-links |
1383 | 14 | 18 | 5 | 136 |
js-fetched |
1222 | 6 | 18 | 5 | 128 |
mixed |
1112 | 10 | 21 | 5 | 170 |
late-loaded |
1062 | 6 | 18 | 5 | 123 |
hash-routing |
833 | 4 | 16 | 5 | 106 |
Pattern × ua_class survival matrix
Each row: (pattern, bot class) pair. hits = request observations (Layer 1+2).
js_exec = how many times the bot's renderer actually ran JavaScript on the cell (Layer 3 beacon firing). % = js_exec / hits — the survival signal. Batch crawlers without a JS renderer (GPTBot, ClaudeBot) should stay near 0%; Googlebot WRS and JS-executing on-demand fetchers approach 100% on clean cells. The (pattern × bot) delta at js_exec_pct is the signal for H3–H6.
| pattern | ua_class | hits | js_exec | % | 24h | ✓ | ✗ |
|---|---|---|---|---|---|---|---|
clean |
human |
1992 | 58 | 2.9% | 14 | 0 | 0 |
clean |
cf-internal |
333 | 0 | 0% | 0 | 0 | 0 |
clean |
seo-tools |
321 | 0 | 0% | 0 | 0 | 0 |
clean |
bingbot |
265 | 8 | 3% | 0 | 256 | 9 |
clean |
gptbot |
261 | 4 | 1.5% | 12 | 253 | 8 |
clean |
other-bot |
243 | 17 | 7% | 0 | 0 | 0 |
clean |
claudebot |
141 | 0 | 0% | 0 | 0 | 0 |
clean |
amazonbot |
108 | 0 | 0% | 0 | 0 | 0 |
clean |
meta-external |
54 | 24 | 44.4% | 0 | 0 | 0 |
clean |
google-readaloud |
42 | 3 | 7.1% | 0 | 42 | 0 |
clean |
ccbot |
39 | 0 | 0% | 0 | 0 | 0 |
clean |
applebot |
39 | 15 | 38.5% | 0 | 35 | 4 |
clean |
google-inspection |
31 | 13 | 41.9% | 0 | 27 | 4 |
clean |
googlebot |
27 | 2 | 7.4% | 0 | 26 | 1 |
clean |
google-other |
24 | 0 | 0% | 0 | 20 | 4 |
clean |
programmatic |
13 | 0 | 0% | 0 | 0 | 0 |
clean |
facebook-preview |
12 | 0 | 0% | 0 | 0 | 0 |
clean |
headless-chrome |
9 | 10 | 111.1% | 0 | 0 | 0 |
clean |
google-notebooklm |
8 | 1 | 12.5% | 0 | 0 | 0 |
clean |
truncated-ua |
7 | 0 | 0% | 0 | 0 | 0 |
clean |
chatgpt-user |
6 | 0 | 0% | 0 | 2 | 4 |
clean |
perplexity-user |
4 | 0 | 0% | 0 | 4 | 0 |
clean |
oai-searchbot |
4 | 0 | 0% | 0 | 0 | 4 |
clean |
claude-user |
4 | 0 | 0% | 0 | 0 | 0 |
clean |
perplexitybot |
2 | 0 | 0% | 0 | 0 | 2 |
clean |
claude-code |
2 | 0 | 0% | 0 | 0 | 0 |
click-reveal |
human |
752 | 19 | 2.5% | 2 | 0 | 0 |
click-reveal |
seo-tools |
138 | 0 | 0% | 0 | 0 | 0 |
click-reveal |
cf-internal |
137 | 0 | 0% | 0 | 0 | 0 |
click-reveal |
bingbot |
133 | 0 | 0% | 0 | 133 | 0 |
click-reveal |
other-bot |
110 | 13 | 11.8% | 2 | 0 | 0 |
click-reveal |
gptbot |
62 | 0 | 0% | 2 | 62 | 0 |
click-reveal |
claudebot |
59 | 0 | 0% | 0 | 0 | 0 |
click-reveal |
amazonbot |
52 | 0 | 0% | 2 | 0 | 0 |
click-reveal |
google-other |
20 | 0 | 0% | 0 | 14 | 6 |
click-reveal |
meta-external |
15 | 3 | 20% | 0 | 0 | 0 |
click-reveal |
ccbot |
13 | 0 | 0% | 0 | 0 | 0 |
click-reveal |
googlebot |
12 | 3 | 25% | 0 | 12 | 0 |
click-reveal |
applebot |
12 | 5 | 41.7% | 0 | 10 | 2 |
click-reveal |
perplexitybot |
8 | 0 | 0% | 0 | 0 | 8 |
click-reveal |
headless-chrome |
4 | 4 | 100% | 0 | 0 | 0 |
click-reveal |
chatgpt-user |
4 | 0 | 0% | 0 | 0 | 4 |
click-reveal |
programmatic |
2 | 0 | 0% | 0 | 0 | 0 |
click-reveal |
truncated-ua |
1 | 0 | 0% | 0 | 0 | 0 |
hash-routing |
human |
415 | 12 | 2.9% | 2 | 0 | 0 |
hash-routing |
seo-tools |
95 | 0 | 0% | 0 | 0 | 0 |
hash-routing |
cf-internal |
57 | 0 | 0% | 0 | 0 | 0 |
hash-routing |
other-bot |
53 | 0 | 0% | 0 | 0 | 0 |
hash-routing |
bingbot |
50 | 0 | 0% | 0 | 50 | 0 |
hash-routing |
claudebot |
42 | 0 | 0% | 0 | 0 | 0 |
hash-routing |
gptbot |
30 | 0 | 0% | 2 | 30 | 0 |
hash-routing |
amazonbot |
30 | 0 | 0% | 0 | 0 | 0 |
hash-routing |
meta-external |
22 | 11 | 50% | 0 | 0 | 0 |
hash-routing |
google-readaloud |
11 | 0 | 0% | 0 | 11 | 0 |
hash-routing |
ccbot |
10 | 0 | 0% | 0 | 0 | 0 |
hash-routing |
google-other |
9 | 0 | 0% | 0 | 9 | 0 |
hash-routing |
google-inspection |
4 | 0 | 0% | 0 | 4 | 0 |
hash-routing |
programmatic |
2 | 0 | 0% | 0 | 0 | 0 |
hash-routing |
applebot |
2 | 1 | 50% | 0 | 2 | 0 |
hash-routing |
truncated-ua |
1 | 0 | 0% | 0 | 0 | 0 |
js-fetched |
human |
657 | 17 | 2.6% | 2 | 0 | 0 |
js-fetched |
seo-tools |
133 | 0 | 0% | 0 | 0 | 0 |
js-fetched |
other-bot |
98 | 4 | 4.1% | 0 | 0 | 0 |
js-fetched |
gptbot |
68 | 0 | 0% | 2 | 66 | 2 |
js-fetched |
cf-internal |
59 | 0 | 0% | 0 | 0 | 0 |
js-fetched |
claudebot |
54 | 0 | 0% | 0 | 0 | 0 |
js-fetched |
amazonbot |
50 | 0 | 0% | 2 | 0 | 0 |
js-fetched |
google-readaloud |
34 | 2 | 5.9% | 0 | 34 | 0 |
js-fetched |
meta-external |
20 | 4 | 20% | 0 | 0 | 0 |
js-fetched |
bingbot |
16 | 0 | 0% | 0 | 14 | 2 |
js-fetched |
ccbot |
11 | 0 | 0% | 0 | 0 | 0 |
js-fetched |
applebot |
8 | 4 | 50% | 0 | 8 | 0 |
js-fetched |
headless-chrome |
4 | 4 | 100% | 0 | 0 | 0 |
js-fetched |
google-inspection |
4 | 0 | 0% | 0 | 4 | 0 |
js-fetched |
google-other |
2 | 0 | 0% | 0 | 2 | 0 |
js-fetched |
chatgpt-user |
2 | 0 | 0% | 0 | 0 | 2 |
js-fetched |
truncated-ua |
1 | 0 | 0% | 0 | 0 | 0 |
js-fetched |
oai-searchbot |
1 | 0 | 0% | 0 | 0 | 1 |
js-images |
human |
788 | 22 | 2.8% | 12 | 0 | 0 |
js-images |
seo-tools |
135 | 0 | 0% | 0 | 0 | 0 |
js-images |
bingbot |
114 | 0 | 0% | 0 | 109 | 5 |
js-images |
other-bot |
110 | 5 | 4.5% | 2 | 0 | 0 |
js-images |
cf-internal |
104 | 0 | 0% | 0 | 0 | 0 |
js-images |
gptbot |
67 | 0 | 0% | 2 | 67 | 0 |
js-images |
claudebot |
56 | 0 | 0% | 0 | 0 | 0 |
js-images |
amazonbot |
44 | 0 | 0% | 0 | 0 | 0 |
js-images |
google-readaloud |
24 | 2 | 8.3% | 0 | 24 | 0 |
js-images |
applebot |
20 | 5 | 25% | 0 | 12 | 8 |
js-images |
meta-external |
19 | 9 | 47.4% | 0 | 0 | 0 |
js-images |
google-other |
12 | 2 | 16.7% | 0 | 12 | 0 |
js-images |
ccbot |
12 | 0 | 0% | 0 | 0 | 0 |
js-images |
perplexitybot |
6 | 0 | 0% | 0 | 0 | 6 |
js-images |
oai-searchbot |
4 | 0 | 0% | 0 | 0 | 4 |
js-images |
programmatic |
2 | 0 | 0% | 0 | 0 | 0 |
js-images |
chatgpt-user |
2 | 0 | 0% | 0 | 0 | 2 |
js-images |
truncated-ua |
1 | 0 | 0% | 0 | 0 | 0 |
js-links |
human |
744 | 8 | 1.1% | 8 | 0 | 0 |
js-links |
seo-tools |
132 | 0 | 0% | 0 | 0 | 0 |
js-links |
other-bot |
110 | 4 | 3.6% | 0 | 0 | 0 |
js-links |
cf-internal |
95 | 0 | 0% | 0 | 0 | 0 |
js-links |
gptbot |
66 | 3 | 4.5% | 2 | 66 | 0 |
js-links |
claudebot |
55 | 0 | 0% | 0 | 0 | 0 |
js-links |
bingbot |
52 | 0 | 0% | 0 | 50 | 2 |
js-links |
amazonbot |
47 | 0 | 0% | 4 | 0 | 0 |
js-links |
meta-external |
20 | 9 | 45% | 0 | 0 | 0 |
js-links |
applebot |
13 | 5 | 38.5% | 0 | 9 | 4 |
js-links |
ccbot |
12 | 0 | 0% | 0 | 0 | 0 |
js-links |
programmatic |
10 | 0 | 0% | 0 | 0 | 0 |
js-links |
oai-searchbot |
8 | 0 | 0% | 0 | 0 | 8 |
js-links |
google-other |
6 | 0 | 0% | 0 | 6 | 0 |
js-links |
perplexitybot |
5 | 0 | 0% | 0 | 0 | 5 |
js-links |
google-readaloud |
5 | 1 | 20% | 0 | 5 | 0 |
js-links |
googlebot |
2 | 0 | 0% | 0 | 0 | 2 |
js-links |
truncated-ua |
1 | 0 | 0% | 0 | 0 | 0 |
late-loaded |
human |
546 | 11 | 2% | 2 | 0 | 0 |
late-loaded |
seo-tools |
107 | 0 | 0% | 0 | 0 | 0 |
late-loaded |
cf-internal |
89 | 0 | 0% | 0 | 0 | 0 |
late-loaded |
other-bot |
72 | 0 | 0% | 0 | 0 | 0 |
late-loaded |
gptbot |
52 | 0 | 0% | 2 | 51 | 1 |
late-loaded |
claudebot |
40 | 0 | 0% | 0 | 0 | 0 |
late-loaded |
bingbot |
40 | 0 | 0% | 0 | 39 | 1 |
late-loaded |
amazonbot |
34 | 0 | 0% | 2 | 0 | 0 |
late-loaded |
meta-external |
31 | 20 | 64.5% | 0 | 0 | 0 |
late-loaded |
applebot |
11 | 6 | 54.5% | 0 | 11 | 0 |
late-loaded |
google-readaloud |
10 | 0 | 0% | 0 | 10 | 0 |
late-loaded |
ccbot |
10 | 0 | 0% | 0 | 0 | 0 |
late-loaded |
googlebot |
6 | 0 | 0% | 0 | 6 | 0 |
late-loaded |
google-other |
6 | 0 | 0% | 0 | 6 | 0 |
late-loaded |
chatgpt-user |
4 | 0 | 0% | 0 | 0 | 4 |
late-loaded |
oai-searchbot |
2 | 0 | 0% | 0 | 0 | 2 |
late-loaded |
truncated-ua |
1 | 0 | 0% | 0 | 0 | 0 |
late-loaded |
programmatic |
1 | 0 | 0% | 0 | 0 | 0 |
mixed |
human |
475 | 22 | 4.6% | 4 | 0 | 0 |
mixed |
seo-tools |
131 | 0 | 0% | 0 | 0 | 0 |
mixed |
other-bot |
80 | 8 | 10% | 0 | 0 | 0 |
mixed |
cf-internal |
69 | 0 | 0% | 0 | 0 | 0 |
mixed |
claudebot |
62 | 0 | 0% | 0 | 0 | 0 |
mixed |
gptbot |
60 | 0 | 0% | 4 | 60 | 0 |
mixed |
amazonbot |
46 | 0 | 0% | 2 | 0 | 0 |
mixed |
bingbot |
44 | 1 | 2.3% | 0 | 44 | 0 |
mixed |
google-readaloud |
28 | 4 | 14.3% | 0 | 28 | 0 |
mixed |
meta-external |
24 | 3 | 12.5% | 0 | 0 | 0 |
mixed |
ccbot |
22 | 0 | 0% | 0 | 0 | 0 |
mixed |
googlebot |
16 | 3 | 18.8% | 0 | 16 | 0 |
mixed |
applebot |
14 | 7 | 50% | 0 | 14 | 0 |
mixed |
programmatic |
10 | 0 | 0% | 0 | 0 | 0 |
mixed |
google-other |
10 | 0 | 0% | 0 | 8 | 2 |
mixed |
google-notebooklm |
8 | 0 | 0% | 0 | 0 | 0 |
mixed |
perplexitybot |
4 | 0 | 0% | 0 | 0 | 4 |
mixed |
headless-chrome |
4 | 4 | 100% | 0 | 0 | 0 |
mixed |
truncated-ua |
2 | 0 | 0% | 0 | 0 | 0 |
mixed |
chatgpt-user |
2 | 0 | 0% | 0 | 0 | 2 |
mixed |
oai-searchbot |
1 | 0 | 0% | 0 | 0 | 1 |
JS executions per bot (Layer 3 beacon totals)
Total Layer 3 beacon firings per bot class, summed across all patterns — how many times each
bot's renderer actually executed JavaScript on a cell. Batch crawlers that never run JS stay at
0 and do not appear; renderers (Googlebot WRS, Applebot, on-demand fetchers, humans) accumulate
fires. The inline vs client-component split below is the delivery
channel — an inline <script> vs a React useEffect.
| ua_class | JS executions | last 24h |
|---|---|---|
human |
169 | 0 |
meta-external |
83 | 0 |
other-bot |
51 | 1 |
applebot |
48 | 0 |
headless-chrome |
22 | 0 |
google-inspection |
15 | 0 |
google-readaloud |
12 | 0 |
bingbot |
9 | 0 |
googlebot |
8 | 0 |
gptbot |
7 | 0 |
google-other |
2 | 0 |
google-notebooklm |
1 | 0 |
By delivery channel (inline <script> vs React client component):
| source | beacons | bot classes | last 24h |
|---|---|---|---|
inline |
220 | 7 | 0 |
client-component |
207 | 11 | 1 |
By verification method
How each hit's bot-class claim was confirmed. rdns = Google/Bing/Apple.
ip-range = OpenAI/Perplexity/Anthropic. none = explicit
auto-unverified (anthropic-legacy). (none/pending) = no verification
path or queue still pending.
| method | hits | ✓ | ✗ | ? | last 24h |
|---|---|---|---|---|---|
(none/pending) |
22624 | 0 | 0 | 22624 | 120 |
rdns |
2187 | 1654 | 533 | 0 | 1 |
ip-range |
1175 | 1045 | 130 | 0 | 33 |
By pathway
Batch crawlers (indexing) vs on-demand fetchers (LLM responding to user prompt) vs AI search infrastructure (search) vs ads-related crawlers (ads). Transitional taxonomy until end-of-Phase-1 refactor.
| pathway | hits | last 24h |
|---|---|---|
n/a |
14171 | 67 |
batch |
6698 | 70 |
unknown |
4677 | 17 |
on-demand |
434 | 0 |
deprecated |
6 | 0 |