How common are soft 404s and AI crawler blocks on Show HN sites?

Menso ran its free site check on 516 sites posted to Show HN in the six weeks to November 11, 2026. 67 answered a made-up address as if the page existed: a soft 404. 39 name at least one AI training crawler in robots.txt and ask it to stay out. 26 of them use a Cloudflare setting. 4 of the 39 also turn away a search or answer crawler. Of the 73 pricing pages the check could read, 65 had a price in the HTML text. These counts cover one sample on one day. They are not rates for the web.

Last updated

  • 516sites posted to Show HN were each checked once
  • 67sites answered a made-up address as if the page existed
  • 39sites ask at least one AI training crawler to stay out
  • 65of the 73 pricing pages read had a price in the HTML text

Method

Which sites were checked, and how

We started from every Show HN story posted between September 30, 2026 and November 11, 2026, found through the Hacker News search API. Posts without a link were left out. So were links to a shared platform instead of a site of the project's own: code hosts, app and extension stores, package registries, social networks and publishing platforms. Each site counts once, and its highest-scoring story needed at least 5 points. That is 516 different sites. We fixed the rule before the first request. No site was added or dropped after its result came in.

Each site got the requests the free site check sends. It requests robots.txt first, then the homepage and one made-up address. Next come 15 addresses people guess, such as /pricing and /login, and the pricing page if the check finds one. That is about 20 plain HTTP requests, a quarter second apart, sent under the name MensoSiteCheck. No scripts ran. The check used no AI model.

No site owner asked for these checks, so the batch behaved like a crawler. It followed each site's robots.txt rules for MensoSiteCheck. If the file had none, it used the rules for all crawlers. It never requested an address those rules disallow. On 10 sites it stopped at robots.txt. 2 of them disallow every crawler. On the other 8 the file could not be fetched. The batch stayed out of those sites, as RFC 9309 asks a crawler to do when robots.txt is unreachable. 7 more homepages timed out or refused the request. The remaining 499 homepages answered.

Scripts did the counting. An AI agent then reread the robots.txt files behind the crawler counts. No person reviewed the sites one by one. We do not publish the list or name any site.

What a made-up address returned

The check asks each site for one address that cannot exist. The right answer is 404.

  • 404, the page does not exist. 425 of 516 sites.
  • Soft 404: the address answered as if the page existed. 67 of 516 sites.
  • Could not tell: the request failed, was refused or timed out. 11 of 516 sites.
  • Not requested: robots.txt disallows it. 13 of 516 sites.
What one made-up address returned on each Show HN site in the sample
AnswerSites, of 516
404, the page does not exist425
Soft 404: the address answered as if the page existed67
Could not tell: the request failed, was refused or timed out11
Not requested: robots.txt disallows it13

41 of the 67 soft 404s are script shells: the made-up address returned a page with scripts and almost no text. On such a site the server sends the same small HTML file for any address, and browser scripts decide what to show. The check runs no scripts, so it cannot see whether they show a not-found message. A crawler that runs no scripts gets status 200 and almost no text. The other 26 answered with status 200 too. On 21 of them, most of the guessed addresses returned the same page as the homepage.

Which crawlers robots.txt turns away

These counts cover homepage rules for the 499 sites that answered. The 2 sites that disallow every crawler are not in the table. The batch stopped at their robots.txt.

Show HN sites whose robots.txt disallows the homepage, by crawler
CrawlerWhat it gathers pages forSites that disallow it, of 499
GPTBotTraining AI models39
ClaudeBotTraining AI models38
Google-ExtendedTraining AI models35
OAI-SearchBotSearch results and answers3
PerplexityBotSearch results and answers4
GooglebotSearch results and answers0
BingbotSearch results and answers0

39 sites disallow at least one training crawler. 26 have the block Cloudflare writes when its managed robots.txt setting is on. 13 name the crawlers in their own rules.

4 sites disallow a search or answer crawler. All of them are among the 39 that disallow a training crawler. Keeping a training crawler out is a site's choice. Turning away a search crawler can remove the site from that engine's results or answers. The check cannot tell whether a site intended that.

The file itself varies more than the rules do. 346 sites serve a robots.txt with at least one rule. 101 have no robots.txt. 31 serve comments without rules. 30 of those show the same Cloudflare notice. 21 answer /robots.txt with an HTML page. A crawler treats all except the first group as having no rules. 9 homepages carry noindex.

  • A file with at least one rule. 346 of 499 sites.
  • No robots.txt. 101 of 499 sites.
  • A file with comments and no rules. 31 of 499 sites.
  • An HTML page. 21 of 499 sites.
What /robots.txt returned on the Show HN sites whose homepages answered
What /robots.txt returnedSites, of 499
A file with at least one rule346
No robots.txt101
A file with comments and no rules31
An HTML page21

Which guessed addresses open

People type an address instead of looking for the link, and so do AI users. The median site opens 1 of the 15 addresses the check tries. An address opens when it returns a page of its own. Redirects count unless they end on the homepage.

How many Show HN sites open each guessed address
AddressSites where it opens, of 499
/privacy169
/terms133
/about121
/blog97
/docs76
/pricing70
/contact60
/login27
/faq24
/signup21
/help11
/signin7
/register7
/plans3
/price2

Many of these sites are free tools and side projects with nothing to sell. No page at /pricing is often the honest answer. What matters is how the missing address answers: a 404 says so, and a soft 404 does not. On 18 sites, robots.txt disallows at least one guessed address. The check did not request those addresses.

Whether the price is in the HTML

The check looks for a pricing page at the guessed addresses and among the homepage's links. It reads the page's HTML without running scripts. Crawlers that run no scripts read it the same way. Vercel's December 2024 analysis found that crawlers from OpenAI, Anthropic and Perplexity ran no scripts (Vercel, The rise of the AI crawler).

  • No pricing page found. 352 of 516 sites.
  • Pricing page read: a price is in the HTML text. 65 of 516 sites.
  • Pricing page read: a price is only inside the page's scripts. 6 of 516 sites. Pricing page read: no price found. 2 of 516 sites.
  • Could not tell: different addresses return the same page. 57 of 516 sites. Could not tell: the pricing address leads to another site. 5 of 516 sites. Could not tell: the request failed, was refused or timed out. 16 of 516 sites.
  • Not requested: robots.txt disallows it. 13 of 516 sites.
What the pricing check found on each Show HN site in the sample
ResultSites, of 516
No pricing page found352
Pricing page read: a price is in the HTML text65
Pricing page read: a price is only inside the page's scripts6
Pricing page read: no price found2
Could not tell: different addresses return the same page57
Could not tell: the pricing address leads to another site5
Could not tell: the request failed, was refused or timed out16
Not requested: robots.txt disallows it13

Of the 73 pricing pages the check could read, 65 show a price to a reader that runs no scripts. On 57 sites, different addresses return the same page: the homepage or a script shell. On those sites, the check cannot tell whether a pricing page exists.

What a guessed address does in a real test

Two public runs from the Product Hunt board include review notes. In both, the AI user was deciding whether to sign up. It typed the usual pricing address instead of following a link. One site answered with its plans. The other answered with a not-found page. The AI user then decided not to sign up. An AI user test shows what a visitor does next. The counts above show only how the address answers.

Every run here used Menso's Purchase intent template: the persona Zainab Salazar, a freelance UX consultant, reads the homepage, the pricing page and the FAQ, decides whether she would buy or sign up, and stops before paying. It is a route-specific diagnostic, not a product-wide score.

tiun.

TRACES 83.5/100

Product Hunt week 38 (Sep 14 – 20, 2026), #2 on Product Hunt's board · tested Sep 21, 2026 · one AI user, one run (n=1) · Deep test · 16 of 16 steps · tiun.io

Zainab scrolled the homepage for five steps without finding a pricing link, and at step 6 typed the pricing address herself. At step 8 she reached the Free vs Enterprise table, then read the help centre and the docs FAQ, and at step 16 decided to sign up for the free tier.

T 4 · R 4.5 · A 4 · C 4 · E 4.5 · S 4 (each out of 5)

Review note: The actor never opened the top-right menu, where Pricing sits; this is not a claim that the site has no pricing link.

AINA

TRACES 64.5/100

Product Hunt week 38 (Sep 14 – 20, 2026), #7 on Product Hunt's board · tested Sep 21, 2026 · one AI user, one run (n=1) · Deep test · 14 of 16 steps · aina-tech.io

Zainab scrolled the candidate page and opened the FAQ. At step 7 she expanded “What does it cost?”, and at step 8 she read the answer: $49 a month, which she took to be the company plan. At step 13 she typed the usual pricing address; at step 14 it returned a not-found page, and she decided not to sign up.

T 4 · R 4 · A 2.5 · C 4 · E 2 · S 2.5 (each out of 5)

Review note: The run mixed the candidate and recruiter purchase contexts; the $49 figure describes the recruiter service, not the free candidate profile.

Made one of these products? Write to support@menso.io and we will correct or remove the example as soon as we can.

Limits

What these counts cannot tell you

  • Show HN is not the web. These are mostly new projects from developers, many of them free tools and demos. The counts say nothing about established companies or online stores.
  • The counts come from one run on one network on November 11, 2026. A site that treats other countries or networks differently would answer differently.
  • The check was corrected on this sample. A trial run earlier the same day showed cases it misread, such as a robots.txt with only comments counted like a file with rules. We fixed those rules and ran every site again. Every count here comes from that final run.
  • The check is not GPTBot or Googlebot. A firewall or CDN can refuse a real crawler by its address or name without a line in robots.txt. It can also let a crawler in where it refused us. The check cannot see either.
  • robots.txt is a request. These counts show what sites ask crawlers to do, not what any crawler did.
  • No scripts ran. A page built in the browser looks almost empty to the check. The check labels those sites “Could not tell.”
  • The counts are small. 4 sites and 9 homepages are too few to turn into a rate, so this page gives none.

Questions people ask

What is a soft 404?

A soft 404 is a missing page whose status code does not say it is missing. The server returns 200 or redirects the visitor to the homepage. Google recommends returning 404 for a missing page (Search Console help). The free site check tests this with one made-up address.

How many sites block GPTBot?

In this sample, 39 of the 499 Show HN sites that answered disallow GPTBot on the homepage. 26 of the 39 sites that disallow a training crawler do it through a Cloudflare setting. 2 more sites disallow every crawler. This is one sample of new projects on one day. It is not a figure for the web.

Does blocking GPTBot keep a site out of ChatGPT search?

No. GPTBot gathers content that may be used to train OpenAI's models. ChatGPT search uses a different crawler, OAI-SearchBot. OpenAI says each setting is independent of the others (OpenAI crawler docs). In this sample, 39 sites disallow GPTBot and 3 disallow OAI-SearchBot.

Why would a site answer 200 for a page that does not exist?

Most often, the site is an app that runs in the browser. The host is set to send the same HTML file for every address. The app's scripts decide what to show. 41 of the 67 soft 404s here returned a file like that: scripts and almost no text.

How do I run the same check on my site?

Enter your address in the free site check. It sends the same requests this run did and shows the result for your site only. You do not need an account.