ValidiscanBot: what it requests and how to block it
ValidiscanBot is the crawler of Validiscan: it loads an online shop’s pages in a browser to test them for accessibility failures, and it names itself in every request. To block it, disallow ValidiscanBot in your robots.txt: a free check then stops after requesting your home page and robots.txt.
Last updated:
On this page: 8 answers
Who runs ValidiscanBot?
Validiscan ApS, a company registered in Denmark, operates ValidiscanBot, and one person runs the company: William Quaade Rasmussen. ValidiscanBot does Validiscan’s scanning: it loads a shop’s pages in a headless Chromium browser and tests them with axe-core and with Validiscan’s own checks.
Details: the company, the service, and the browser ValidiscanBot uses
ValidiscanBot is operated by Validiscan ApS, a company registered in Denmark. One person runs the company: William Quaade Rasmussen. Validiscan’s legal notice gives the address and the register number.
Validiscan is a web accessibility remediation service for EU online shops on Shopify, Shopware, WooCommerce and Magento. It scans a shop against WCAG 2.2 AA and EN 301 549, delivers the fixes as changes to the shop’s own source code, and documents the result in a dated Remediation Evidence Package. ValidiscanBot does the scanning. It loads a shop’s pages in a headless Chromium browser and tests them with axe-core and with Validiscan’s own checks. Because it is a real browser, it runs your pages’ scripts and loads their styles, images and fonts like a visitor’s browser does.
Which user agent does ValidiscanBot send?
ValidiscanBot sends ValidiscanBot/1.0 (+https://validiscan.com; info@validiscan.com) with every request at desktop size, and the same string with the word Mobile at the end at phone size. Requests made outside the browser, such as those for robots.txt and sitemaps, carry the desktop string. In robots.txt, both match the name ValidiscanBot.
- At desktop size, 1440 by 900 pixels
-
ValidiscanBot/1.0 (+https://validiscan.com; info@validiscan.com) - At phone size, 390 by 844 pixels, with touch input
-
ValidiscanBot/1.0 (+https://validiscan.com; info@validiscan.com) Mobile - Name in robots.txt, for both strings
-
ValidiscanBot
Details: the two strings, the two screen sizes, and requests that copy the string
ValidiscanBot sends one of two user agent strings with every request:
- at desktop size:
ValidiscanBot/1.0 (+https://validiscan.com; info@validiscan.com) - at phone size, the same string with the word Mobile at the end:
ValidiscanBot/1.0 (+https://validiscan.com; info@validiscan.com) Mobile
Each page is loaded at two sizes: at 1440 by 900 pixels with the first string, and at 390 by 844 pixels, with touch input, with the second. The word Mobile is there for shops that serve phones a layout of their own. Requests made outside the browser, such as those for robots.txt and sitemaps, carry the desktop string. In robots.txt, both strings match the name ValidiscanBot.
Any program can put this string in its requests. If requests that carry it do not behave as this page describes, write to info@validiscan.com with your host name, the times of the requests and the IP addresses they came from.
Why is ValidiscanBot visiting my shop?
ValidiscanBot visits a shop for one of two reasons: a free check of the shop’s public pages, or a scan of a shop whose owner has engaged Validiscan and given consent. Only a person at Validiscan can start a free check: no public form starts one, and no schedule repeats it.
-
A free check
Loads a sample of a shop’s public pages. It uses no login and no password, and it does not scan a staging copy.
-
Scans of a customer’s shop
The baseline scan, the verification scan and the re-scans of regression protection. They run only after the owner’s consent has been recorded.
Details: the free check and the scans of a customer’s shop
ValidiscanBot visits a shop for one of two reasons: a free check of the shop’s public pages, or a scan of a shop whose owner has engaged Validiscan and given consent.
- A free check loads a sample of a shop’s public pages. It uses no login and no password, and it does not scan a staging copy. Only a person at Validiscan can start a free check: no public form starts one, and no schedule repeats it. What the free check reports
- Scans of a customer’s shop are the baseline scan, the verification scan and the re-scans of regression protection. They run only after the owner’s consent has been recorded, and they work under other limits, described further down this page.
What does a free check request, and how often?
A free check loads at most 15 pages in its browser, one at a time; to choose them it first makes plain requests, so it makes more requests than it loads pages. Each request it starts itself waits at least 1 s after the previous one, with one known exception.
- Pages in its browser
- At most 15, one at a time, each first at desktop size and then at phone size
- Gap between the requests it starts itself
- At least 1 s, per origin
- One known exception
- A redirect answering a page load in the browser is followed at once, without the gap and without checking robots.txt
- Crawl-delay
- Followed once robots.txt is read, up to 10 s; a shorter one does not narrow the gap
- Requests to find pages
- At most 45, counting the home page request; redirect hops come on top
- Sitemap files
- At most 50
- Never
- Adds a product to a cart, opens the cart or the checkout, sends forms, logs in
Details: pages and pace
A free check loads at most 15 pages of a shop in its browser, one page at a time, each at desktop size and at phone size. Each request it starts itself waits at least 1 s after the previous one, or longer when robots.txt sets a Crawl-delay, up to 10 s. It never adds a product to a cart and never opens a checkout. The files a page loads itself, such as styles, scripts and images, load as in any browser.
In what order does a free check make its requests?
- The home page. The first request is a plain HTTP request for the home page, made outside the browser. It shows whether the shop answers and which platform it runs on. Redirects are followed one hop at a time, at most 10. This request and its redirects come before robots.txt is read, so they are made even when robots.txt disallows everything. If the home page answers with an error status, such as 403, 429 or 503, or does not answer at all, the free check ends there.
- robots.txt. Next, ValidiscanBot reads robots.txt at the root of the host the home page ended on, for example
https://www.example.com/. If robots.txt disallows the home page for ValidiscanBot, or cannot be read because the server answers with a server error (5xx), with 429 (too many requests) or not at all, the free check stops and requests nothing else. A missing robots.txt (any other 4xx status) or an empty one allows everything. For a shop that lives below a path, such asrobots.txt /de/, and has no robots.txt or an empty one at the root of its host, it also reads the one in that path. - Sitemaps. It reads the shop’s
sitemap.xml, the sitemaps robots.txt names, and the sitemaps those list: at most 50 sitemap files. A sitemap file that robots.txt disallows is skipped, unless robots.txt names it. - Finding pages. It requests candidate pages as plain HTML, to sort them by type (product lists, product pages, content pages, legal pages and others) and to find links to more pages. The addresses come from the sitemaps and from links on the pages it has read, and only addresses on the shop’s own domain are considered. It skips every address robots.txt disallows and makes at most 45 of these requests, counting the home page request of step 1; redirect hops come on top.
- Search and login. To find a search results page, it requests the platform’s usual search address with words taken from page titles, then with common words, until one answers. The login page comes from a link on the home page or, without one, from the platform’s usual login addresses. Contact and legal pages come from the home page’s links, with no extra request. If it has found fewer than 15 pages by then, it goes back to finding pages, within the same 45 requests.
- The pages in the browser. Last, it loads the chosen pages in its browser, at most 15, one at a time, each first at desktop size and then at phone size.
Why does a free check make more requests than it loads pages?
The limit of 15 pages counts the pages ValidiscanBot tests, not its requests. Besides the two loads of each page in the browser, a free check makes the plain requests of steps 1 to 5. Each redirect hop is a request of its own. A page load that fails is tried up to two more times. Some tests load a page again; the cookie banner test, for example, opens it in a fresh browser window without cookies. If a free check breaks off, for example because its browser crashed or the scanning service was stopped, it is started again from the beginning. How many requests this makes in total depends on the shop.
How far apart are the requests?
Each request ValidiscanBot starts itself to your shop waits until at least 1 s after the previous one started, and after that one was answered, whichever is later. The rule covers the plain requests, every redirect hop they follow, and every page load in the browser, the fresh window of the cookie banner test included. It is kept per origin: scheme, host name and port. For a page load in the browser, “answered” means that the page’s response has arrived, not that the page has finished loading.
After robots.txt has been read, a Crawl-delay longer than 1 s widens the gap, up to 10 s. A shorter one does not narrow it.
The files a page loads itself, such as styles, scripts, images, fonts, data requests and frames, are part of loading that page. They load as in any browser, without the gap.
One exception is known. When your shop answers a page load in the browser with a redirect, the browser follows it at once, without the gap and without checking robots.txt. Validiscan has recorded this as an open gap in its scanner.
What does a free check never do?
- It never adds a product to a cart and never opens the cart or the checkout. Cart and checkout pages are not part of a free check.
- It sends no forms and does not log in. The login page is loaded as a page to test, nothing more.
- It uses no password and does not scan a staging copy of the shop.
What does ValidiscanBot do inside its own browser?
ValidiscanBot operates each page as a visitor would, inside its own browser. It moves through the page with the keyboard. It tests the cookie banner and then accepts it, so the rest of the page can be tested; to try the banner’s reject or close control and the Escape key, it uses a fresh window without cookies. Where a page has a product variant control, it switches to another variant and then back. Where a page has a password field, it checks whether pasting into the field is blocked, with a test paste that leaves the field as it was. Your pages’ own scripts may react as they would for any visitor, for example by recording the cookie choice.
Its browser sends no requests to a list of known analytics, advertising and chat services, and it loads no video or audio files. Consent services are not on that list, because the cookie banner is part of what is tested.
How does ValidiscanBot read robots.txt?
In a free check, ValidiscanBot follows robots.txt and its Crawl-delay, up to 10 s, and checks addresses on your shop’s host against Disallow and Allow before requesting them, with exceptions such as the home page request. It follows the group for ValidiscanBot or, without one, the group for all crawlers (User-agent: *).
- Name to use
-
ValidiscanBot, in any letter case; a version after a slash is ignored;Validiscandoes not match - Group it follows
- Its own group or, without one, the
*group - Its own group
- Replaces the
*group for Disallow and Allow: repeat there the*rules you want it to keep - Crawl-delay
- In seconds, decimals work, up to 10 s; from its own group or, when that sets none, from the
*group
Details: the name to use and Crawl-delay
In a free check, ValidiscanBot follows robots.txt and its Crawl-delay, up to 10 s. It checks addresses on your shop’s host against Disallow and Allow before it requests them, with the exceptions listed below. It follows the group for ValidiscanBot in your robots.txt and, when there is none, the group for all crawlers (User-agent: *).
- The name to use is
ValidiscanBot. Letter case does not matter, and a version after a slash is ignored, sovalidiscanbotandValidiscanBot/1.0match too. A shorter name such asValidiscandoes not. The desktop and the phone pass follow the same group. - Crawl-delay is read in seconds, and decimals such as 2.5 work. ValidiscanBot takes it from its own group or, when its own group sets none, from the
*group.
What changes when robots.txt has a group for ValidiscanBot?
A group for ValidiscanBot replaces the * group: ValidiscanBot then follows only the Disallow and Allow lines of its own group. If you add a group for ValidiscanBot, repeat in it the * rules you want it to keep. With the lines below, ValidiscanBot stays out of /account/ but may load pages under /drafts/:
User-agent: *
Disallow: /drafts/
User-agent: ValidiscanBot
Disallow: /account/
What does robots.txt apply to?
In a free check, robots.txt is checked for sitemap files other than those robots.txt names, for every address taken from sitemaps and links, for the search and login requests, for every redirect hop of the plain requests, and for the pages and frames the browser loads from your shop’s host. A page whose plain request was redirected to a disallowed address is dropped.
It is not checked for:
- the home page request and its redirects, which come before robots.txt is read;
- the files an allowed page loads itself, even from a path robots.txt disallows;
- redirects the browser follows during a page load (the open gap described above);
- pages outside your shop’s origin. ValidiscanBot reads only the robots.txt of the scheme, host name and port your home page ended on. A page on another host name of the same domain that your shop links to, such as
blog.example.comnext towww.example.com, can be included without that host’s robots.txt being read.
How do I block ValidiscanBot?
To block ValidiscanBot, add a group for it with Disallow: / to the robots.txt of your shop’s host. A free check then requests your home page, with the redirects it answers with, and robots.txt. It stops there, records the shop as blocked and requests nothing else.
User-agent: ValidiscanBot
Disallow: /
Details: what a free check then requests, and other ways to limit ValidiscanBot
A free check then requests your home page, with the redirects it answers with, and robots.txt. It stops there, records the shop as blocked and requests nothing else.
Other ways to limit it:
- Keep it out of part of your shop. Disallow those paths in a group for ValidiscanBot, and repeat there the
*rules you want it to keep. - Slow it down. Add a line such as
Crawl-delay: 5to its group or to the*group. Values above 10 s count as 10 s. A group for ValidiscanBot replaces the*group even when it holds nothing but a Crawl-delay line, so repeat there the*rules you want it to keep. - Refuse it at your server. If your home page answers ValidiscanBot with an error status, such as 403, a free check ends after that request.
Does ValidiscanBot behave the same on a customer’s shop?
No. Scans of a customer’s shop send the same user agent, but they run only with the owner’s recorded consent, sample up to 150 pages by default, with some pages on top, and also open the cart and the first checkout step. They never complete a purchase or enter payment data.
| Question | Free check | Scan of a customer’s shop |
|---|---|---|
| When it runs | When a person at Validiscan starts it; no public form starts one, no schedule repeats it | Only after the owner’s consent has been recorded |
| Pages | At most 15, one at a time | Set per shop, by default 150 sampled; some pages can come on top |
| Pace | At least 1 s between the requests it starts itself, with one known exception, or longer with a Crawl-delay | By default two pages at the same time, each waiting half a second before its next page, or longer with a Crawl-delay |
| Cart and checkout | Never | One product in stock added to the cart, then the cart and the first checkout step opened; never a purchase, never payment data |
| robots.txt | Followed; it stops when robots.txt disallows the home page or cannot be read (a server error, 429 or no answer) | Followed by default, less strictly: the home page is always loaded, and a robots.txt that cannot be read allows everything; can be set to ignore it with the owner’s recorded consent |
| Login and staging | No login, no password, no staging copy | A staging copy or a shop behind a password, when the owner provides access |
Details: consent, pages, pace, cart and checkout, robots.txt, access, and the platform check
No. When a shop’s owner has engaged Validiscan, the baseline scan, the verification scan and the re-scans of regression protection send the same user agent, but they run with the owner’s consent and under other limits.
- Consent. They run only after the owner’s consent has been recorded. Without it, Validiscan’s application refuses to start a scan, and regression protection skips its run.
- Pages. The number of pages sampled is set per shop; by default it is 150. Search results, the login page, contact and legal pages, the cart and the first checkout step, which the scan looks for separately, can come on top. A verification scan also revisits the pages where the failures it checks were last seen.
- Pace. By default ValidiscanBot loads two pages at the same time, and each of the two waits half a second before its next page, or longer when robots.txt sets a Crawl-delay.
- Cart and checkout. At desktop size and again at phone size, it adds one product that is in stock to the cart, then opens the cart and the first step of the checkout. It never completes a purchase and never enters payment data.
- robots.txt. It follows robots.txt by default, less strictly than a free check: the home page is always loaded, and a robots.txt that cannot be read counts as allowing everything. With the owner’s recorded consent, the scans of that shop can be set to ignore robots.txt.
- Access. When the owner provides access, it can scan a staging copy of the shop or a shop behind a password.
One more request carries the same user agent: when Validiscan enters the address of a customer’s shop in its application, the application requests that address once, following its redirects, to detect the platform.
How a project runs, from the baseline scan to regression protectionWhom do I contact about ValidiscanBot?
Write to info@validiscan.com, the address in the user agent. William Quaade Rasmussen, who runs Validiscan, reads and answers it.
Details: what to include, and how Validiscan handles data and security
Write to info@validiscan.com, the address in the user agent. William Quaade Rasmussen, who runs Validiscan, reads and answers it. It helps to include your host name, the date and time of the requests, and the IP addresses they came from.
How Validiscan handles data and securityStart with a free check of your shop.
Send your shop’s address. Validiscan scans it and replies with every failure the scan can prove, with the page and the code.
Request a free checkOr write to info@validiscan.com.
What the free check covers, and what it leaves out- You send
- your shop’s address
- Pages scanned
- up to 15
- You get
- every failure the scan can prove, with the page and the code
- On your shop
- public pages only; no login, nothing bought, no forms sent
- What it is not
- a full audit