CrawlCheck

Directory · Voice, speech and transcription

Speechify — what a crawler receives from speechify.com

Website measurement, not a product review. This page records what machine clients received from speechify.com. It does not evaluate Speechify software, features, pricing or support.

76
Cgrade

Answer engines can reach and read this site. It needs more it can quote.

AI visibility 76/100, measured 2026-10-12 22:07 UTC from outside its network, as each named AI and search crawler and as a browser. An engine can reach and read this site. What is left is giving it something specific to say.

Held at C A medium-severity finding sets the letter.

Open the full report speechify.com ↗

7

findings

✓

llms.txt on its host

✗

entity map on its host

6

scans on record since 2026-09-18

The three stages, in the order an engine hits a site

Each stage gates the next. An engine that cannot reach a page never reads it; one that cannot read it never quotes it. That is why reach is a ceiling and not just a weight.

85

Stage 1 · 40% of the score

Reach

Can a named answer-engine crawler get your pages at all?

Every named crawler was served the same page a browser gets.

71

Stage 2 · 30% of the score

Read

Once it has the bytes, can it find the words?

The content is buried in markup, or the files that guide a crawler are missing.

69

Stage 3 · 30% of the score

Quote

Is there a specific fact it can state and attribute?

An assistant would have to paraphrase your page instead of quoting a fact.

The stage to fix first is quote, because the three run in order.

What to fix

7 findings on this site, 2 of them scored serious. Every one is named below; the top one is shown in full, free. What we saw, why each matters, how to fix it and the bytes behind it are what a licence buys — or we implement the whole list for you.

2 Medium 1 Low 4 Note

1robots.txt rules do not apply to named agents2 named User-agent groups (7 agents) do not repeat 2 of the Disallow rules the `*` group carries. A crawler obeys only its own most-specific group and ignores `MediumSetting

What we saw

2 named User-agent groups (7 agents) do not repeat 2 of the Disallow rules the `*` group carries. A crawler obeys only its own most-specific group and ignores `*` entirely, so those rules do not apply to any of the named agents (some declare their own, different rules). Worst group: `oai-searchbot, chatgpt-user, gptbot, claudebot, claude-user, claude-searchbot` bypasses /*?landing=, /onboarding/. /robots.txt

Why it matters

A crawler reads only the User-agent group that matches it best and ignores every other group, including `*`. Naming an agent and giving it only `Allow: /` therefore deletes all of your `*` Disallow rules for that agent. The file still parses and the agent still reaches your homepage, so this is invisible on inspection — but the paths you meant to keep out of search are open, and search engines will crawl and may index them.

How to fix it

Every User-agent group that names a crawler must repeat the Disallow rules you want applied. A named group with no rules means 'allow everything' for that crawler.

Setting: a setting on the server, CDN, DNS or a plugin — no code and no writing

On Next.js (detected)

  1. App Router: add app/robots.ts that returns a MetadataRoute.Robots object (rules per userAgent, sitemap URL). Pages Router or static export: put robots.txt in public/.
  2. Ship one of the two, not both: the route handler and a public/robots.txt collide.

In Cloudflare (this site is behind it)

  1. If Cloudflare's managed robots.txt is on (Security → Bots, or AI Crawl Control → robots.txt), Cloudflare adds its own lines above yours. Turn it off, or keep it knowing those lines are there.
  2. Robots.txt is cached at the edge: purge it (Caching → Configuration → Custom purge → the robots.txt URL) after you change it.

All Next.js fixes

Why this was decided
RuleROBOTS_RULES_SHADOWED · rule pack sv31 · scope core
Evaluated2026-10-12 22:07:54 UTC
Decisiond1:d4a48c19928f9c131ec2 · finding f1:527978b9e4cf4a432ad3 resolve either at /api/graph/<id> with a key
Observercrawlcheck-worker build a0b27a0e · audit v4

What it rests on

IdentityStatusBytessha256Kept
read: /robots.txt200389b8aef0e6da77already_held

23 more in the manifest.

Artifacts: manifest:735f748dbf6e6a58e9b65e0f100293a42f43c53623c0237c70ccd9c0917f8c90

Grade effect Caps the letter at C together with 1 other medium-severity finding; the letter rises only when all of them are gone. Moves no points.

Rule ROBOTS_RULES_SHADOWED under scoring rules v31 · fingerprint ROBOTS_RULES_SHADOWED|/robots.txt · persisting (7 scans)

Verify the fix Re-scan after the change. This finding is cleared when ROBOTS_RULES_SHADOWED is no longer reported at /robots.txt; if it comes back after clearing, it is marked a regression, not a new finding.

ROBOTS_RULES_SHADOWED · full transcript

2Almost nothing a machine receives from this page is readable text🔒 What we saw, why it matters, the fix and the evidence bytes are in the licensed report.Medium
3The sitemap does not say when anything changed/sitemap.xml🔒 What we saw, why it matters, the fix and the evidence bytes are in the licensed report.Low
4The homepage is reached through a chain of redirects🔒 What we saw, why it matters, the fix and the evidence bytes are in the licensed report.Note
5CSP violation reporting is misconfigured🔒 What we saw, why it matters, the fix and the evidence bytes are in the licensed report.Note
6A missing agent file answers with a full page🔒 What we saw, why it matters, the fix and the evidence bytes are in the licensed report.Note
7Visitors and crawlers are being served an old copy of this page🔒 What we saw, why it matters, the fix and the evidence bytes are in the licensed report.Note

Open the other 6

What we saw, why it matters, how to fix it, and the evidence bytes for every finding — on this report and every re-scan. From $29 a month.

Unlock the findings

Or have them fixed

We implement the list on your site and re-measure, with a sealed before and after. One site, $749 once.

Get this fixed — $749

The chain a crawler follows

The chain breaks at entity graph. Everything after that point is only reachable by a crawler guessing the conventional path.

✓robots.txtEvery crawler reads this first
✓sitemapNamed in robots.txt and resolves
✓llms.txtPoints onward, links stay on this host
✗entity graphParses as JSON and points home

A machine file that does not parse is worth less than one that is absent, because it looks present. Rows behind this.

Where the bytes go

Of the 1,199,708 decompressed bytes the homepage delivers, 1.7% is text a reader or a model can actually use. Most of what a crawler downloads here is not words.

  • Readable text 1.7% · 20,534 B
  • Markup & attributes 32.3% · 387,687 B
  • Inline CSS 0% · 134 B
  • Inline JavaScript 54.5% · 654,354 B
  • Inline SVG 11.4% · 136,793 B
  • HTML comments 0% · 206 B

The individual blocks that weigh the most, so the fix is a search rather than a hunt:

  • Inline JavaScript · 85,258 B (7.1%) — unnamedopens self.__next_f.push([1,"21:[\"$\",\"body\",null,{\"className\":\"abc_di
  • Inline JavaScript · 68,626 B (5.7%) — unnamedopens self.__next_f.push([1,"ab:[\"$\",\"$Lec\",null,{\"ctaUrl\":\"/onboardi
  • Inline JavaScript · 33,623 B (2.8%) — unnamedopens self.__next_f.push([1,"3d:[\"$\",\"$Led\",null,{\"blockType\":\"block-
  • Inline JavaScript · 23,805 B (2%) — unnamedopens (self.__next_s=self.__next_s||[]).push([0,{"type":"application/ld+json
  • Inline JavaScript · 23,325 B (1.9%) — unnamedopens self.__next_f.push([1,"14d:[\"$\",\"div\",null,{\"className\":\"flex f

What changed

  1. 2026-10-12the homepage began taking more than one redirect to reachappeared
  2. 2026-09-28an llms.txt became readableresolved
  3. 2026-09-28a new finding appeared: the machine files cost more than the pageappeared
  4. 2026-09-19no llms.txt was foundappeared

6 scans on record, first 2026-09-18. Score movements are shown only between readings taken under the same score version; finding codes are comparable across all of them.

Is this your site?

This listing reads the public record. Claim it and Watch keeps that record on your terms: every list this page holds back, finding age, and twice-daily re-measurement. Free for 30 days, no card.

Claim the record for speechify.com

Is this your company?

This listing came from a fetch, not a submission, so nobody was asked. If speechify.com is yours you can prove it in a minute and for nothing — a DNS TXT record or one meta tag on the home page, both checkable by anyone.

Claiming marks you as the verified owner and lets you correct the category and the company name. It moves no score, no rank and no position.

Claim this listing — free or ask about a verified profile

Dispute or re-scan

If a reading here is wrong, it is our instrument that is wrong, and we want to know. Tell us what is wrong and the site is re-measured; the result is published as measured. Nothing about a listing, a payment or a request changes a number.

By email instead: hello@crawlcheck.io. Category “Voice, speech and transcription” is our label for what the product is primarily sold as; it is not scored. Back to the directory.