VAKSEL Lab
Last run 2026-11-02 · rules 2026-11-02.1
19 public test sites. Each one changes exactly one thing from the control, so you can see whether an AI visibility tool notices. Point any tool at them, ours included.
How to use it
- Run your tool on baseline-lab.vaksel.com first. It should come back clean.
- Then run it on the others. Each row says what changed and what a correct tool should report.
- The firewall sites decide by user agent, the way most real firewalls do. They answer the same way to every IP address.
The sites
Grades are Get in / Read / Cite, as described in How we grade.
| Site | What changes | Expected | VAKSEL | |
|---|---|---|---|---|
| baseline-lab.vaksel.com | Control: nothing changed. robots.txt allows all, full structured data, text without JavaScript. | S/S/S | S/S/S ✓ | Report |
| robots-disallow-all-lab.vaksel.com | robots.txt says Disallow: / for everyone. | C/S/S | C/S/S ✓ | Report |
| robots-block-oai-lab.vaksel.com | robots.txt disallows only OAI-SearchBot (ChatGPT search). | B/S/S | B/S/S ✓ | Report |
| robots-block-training-lab.vaksel.com | Only training crawlers are disallowed (GPTBot, ClaudeBot, CCBot, Google-Extended); search crawlers are allowed. Should cost nothing. | S/S/S | S/S/S ✓ | Report |
| robots-503-lab.vaksel.com | robots.txt returns 503. Under RFC 9309 crawlers must treat the site as fully disallowed. | C/S/S | C/S/S ✓ | Report |
| robots-404-lab.vaksel.com | No robots.txt (404). That means no restrictions and should cost nothing. | S/S/S | S/S/S ✓ | Report |
| fw-ai-403-lab.vaksel.com | robots.txt allows all, but the firewall returns 403 to AI search user agents while browsers and Googlebot get the page. A silent block. | C/S/S | C/S/S ✓ | Report |
| fw-verify-bots-lab.vaksel.com | The firewall rejects every request claiming to be a crawler, fake Googlebot included. This mimics a site that verifies crawler IPs, where real crawlers likely get through, so it should only warn. | A/S/S | A/S/S ✓ | Report |
| fw-unknown-bots-lab.vaksel.com | The firewall allows Googlebot and other classic crawlers but rejects every other bot, AI search crawlers included. | C/S/S | C/S/S ✓ | Report |
| fw-ai-challenge-lab.vaksel.com | AI search crawlers get HTTP 200, but the body is a “Just a moment...” challenge page. The status code looks fine. | C/S/S | C/S/S ✓ | Report |
| fw-ai-thin-lab.vaksel.com | AI search crawlers get HTTP 200, but the text is cut down to one sentence. | A/S/S | A/S/S ✓ | Report |
| meta-noindex-lab.vaksel.com | Homepage has <meta name="robots" content="noindex">. | C/C/S | C/C/S ✓ | Report |
| header-noindex-lab.vaksel.com | The HTML is clean, but the response header says X-Robots-Tag: noindex. | C/C/S | C/C/S ✓ | Report |
| nosnippet-lab.vaksel.com | Homepage has <meta name="robots" content="nosnippet">. Google says AI Overviews only cite pages eligible for a snippet. | S/C/S | S/C/S ✓ | Report |
| js-only-lab.vaksel.com | All text is rendered by JavaScript; the HTML has only an empty <div id="root">. | S/C/S | S/C/S ✓ | Report |
| llms-html-lab.vaksel.com | /llms.txt returns 200 with an HTML page. llms.txt should not affect grades, only be flagged. | S/S/S | S/S/S ✓ | Report |
| faq-mismatch-lab.vaksel.com | The FAQPage structured data lists questions that are not on the page. | S/S/B | S/S/B ✓ | Report |
| jsonld-broken-lab.vaksel.com | The JSON-LD has a syntax error and fails to parse. | S/S/B | S/S/B ✓ | Report |
| canonical-other-host-lab.vaksel.com | The canonical tag points to another domain. | S/A/S | S/A/S ✓ | Report |
VAKSEL matches 19 of 19 on the latest run.
What it caught in our own engine
Our first run matched 3 of 19. The lab found four bugs, now fixed:
- Huawei’s PetalBot wasn’t in our crawler list, so a site that blocked everyone in robots.txt was graded B instead of C. The same bug hid a robots.txt 503.
- An X-Robots-Tag: noindex header was missed when we fetched through our fallback server.
- When a site refused our direct request, its sitemap was reported missing, because the sitemap check had no fallback server.
- A page that merely mentioned “Just a moment” was mistaken for a challenge page. We changed the test site; real challenge detection still uses page size.
Limits
The sites simulate common setups. They don’t reproduce IP-based verification by real vendors, JavaScript challenges that need a browser, or rate limits. Expected grades follow our published rules; another tool may use different labels and still be right.