Skip to main content Scroll Top

JavaScript SEO Checker: What Survives When a Page Is Read as Text

Updated September 2026 · Written and maintained by the Progression Agency strategy team

A JavaScript SEO check and an answer-structure check in one. Paste a page and see what survives text-first extraction, and which headings have no answer underneath them.

On this page · 11 sections
  1. The question the checker is really asking
  2. The word count that matters is the one after stripping
  3. The three heading states
  4. Images, tables and the things that carry nothing
  5. What answer-first actually looks like in practice
  6. Running it across a template rather than a page
  7. What this checker will not tell you
  8. Using this as a JavaScript SEO checker
  9. The reference tables, in one place
  10. Everything else we have written on search, AI and getting found
  11. JavaScript SEO, and the question this tool actually answers

The short answerA passage gets used in an answer because it resolves a question cleanly on its own, and the unit is a heading plus the block directly beneath it. This tool strips scripts, styles and page chrome, reports what is actually left, and marks every heading as answered directly, answer buried, or no answer at all. In our audits that single relationship separates pages that get quoted from pages that do not more reliably than length, authority or markup — and the fix is editing, not writing more.

Paste the rendered DOM rather than view-source if your content depends on JavaScript. The gap between the two word counts is itself the finding.

Extractable content checker

Paste a page’s HTML. The tool removes what a text-first reader ignores, shows what survives, and marks every heading that is not answered directly underneath it.

Results appear here.

Runs entirely in your browser. Nothing you paste is uploaded, logged or stored — which is also why it takes pasted text rather than a URL: a browser cannot read another site’s files without that site’s permission.

The question the checker is really asking

Not how much you wrote, but whether any block on the page can be lifted as a self-contained answer.

Not how much you wrote — whether any of it can be lifted

A passage gets used in an answer because it resolves a question cleanly on its own. The unit is not the page; it is a heading and the block directly beneath it. If that block restates the heading, sets context for three sentences, or trails off into a story before arriving at the point, there is nothing to lift, and the page is passed over in favour of one where there is.

Which is why the heading table is the main output

Everything else the tool reports is context. The table is the finding: every heading, and whether the thing under it answers it. In our audits this single measure separates pages that get quoted from pages that do not more reliably than length, authority or markup.

And why it strips the page first

Scripts, styles, navigation, headers, footers and forms are removed before anything is counted, because none of them contribute readable content and all of them inflate a naive word count. The number the tool reports is what is actually left.

What happens to a page before it can be quotedWhat happens to a page before it can be quoted
The last two steps are why answer-first structure matters more than word count. A passage is lifted because it resolves a question, not because it is long.

The word count that matters is the one after stripping

If the page looks like two thousand words and the checker finds three hundred, that is a technical finding that outranks every editorial one.

A large gap means your copy is not in the HTML

If the page looks like two thousand words in a browser and the checker finds three hundred, the content is arriving through something a text-first reader does not execute. That is a technical finding rather than an editorial one, and it outranks everything else on the page.

Paste the rendered DOM if you are unsure

View-source shows what the server sent; the rendered DOM shows what a browser built. Running the checker against both is the fastest way to see whether the difference matters, and the gap between the two numbers is the answer.

Length itself is not the lever

We have never found a case where adding words to a page fixed an extraction problem. Pages that get quoted are pages where the answer sits immediately under the question, and that is usually a shorter page rather than a longer one.

Stripped — Scripts and styles. Carry no readable content.
Set aside — Nav, header, footer. Repeat everywhere.
Kept — The actual content. Usually less than expected.
Split — At headings. The retrieval unit.
Judged — Answer or not. Per heading.
Quotable — Or passed over. The whole outcome.

The three heading states

Every heading resolves to answered directly, answer buried, or no answer at all — and two of the three are fixed by editing rather than writing.

Answered directly

A substantive block follows the heading and gets to the point inside the first sentence or two. This is the state you want everywhere, and it is achievable by editing rather than by writing more.

Answer is buried

There is a block, it is long, and the answer is somewhere inside it. The fix is almost always to move the last sentence to the front. This single edit, repeated across a page, is the highest-return content work we do.

No answer under it

The heading is followed by another heading, an image, a short label, or nothing substantive. This is the state that costs a passage outright, and it is extremely common on pages built from a template where headings were used as section dividers rather than as questions.

What a good heading looks like

The question a person would actually type or say, in their words rather than yours. A heading reading ‘Pricing’ and a heading reading ‘What does a call-out cost?’ introduce the same paragraph, and only one of them matches how the question is asked.

The extraction failures, in order of how often we find themThe extraction failures, in order of how often we find them
Six failures and two things that work. The two that work are unglamorous and cost nothing, which is why they are so often skipped.

Images, tables and the things that carry nothing

A fact rendered as a graphic is invisible, and alt text is a floor rather than a place for a paragraph-length fact.

An image conveys nothing to a text-first reader

A price list rendered as a graphic, a comparison table saved as a screenshot, a set of opening hours inside a designed banner — all invisible. Alt text is a floor, not a fix: it helps, and it is not where a paragraph-length fact belongs.

Tables are good when they are data

A real table of real values extracts cleanly and is one of the more quotable structures a page can contain. A table used to lay out a page is the opposite, and produces confused output. The checker counts tables but does not judge them; if your count is high and your data is low, that is worth looking at.

Lists are underrated

A short list of concrete items is easy to lift and hard to misread. Where a paragraph is enumerating anything, the list version is usually both better writing and better extraction.

Where this sits with everything else

Extractability is downstream of access and upstream of everything editorial. Check access first, then this, then the sentence-level rules.

Words — After extraction. The honest count.
Headings — And their level. The structure.
Answers — Or their absence. Per heading.
Tables — And lists. Structured content.
Links — Outbound and internal. Context.
Alt text — Present or not. Images carry nothing without it.

What answer-first actually looks like in practice

The rewrite is usually smaller than people expect, because the answer is already in the paragraph’s final sentence.

The rewrite is smaller than people expect

A buried answer is rarely rewritten from scratch. In the great majority of cases the paragraph already contains the answer in its final sentence, placed there because that is how people naturally write: context, reasoning, conclusion. Moving that sentence to the front and letting the reasoning follow it changes nothing about the content and everything about whether it can be lifted.

It reads better for people too

This is not a trade-off between machines and readers. A paragraph that states its conclusion first and then supports it is easier to scan, easier to skip and easier to trust. The journalistic version of this advice predates any of the current technology by about a century.

It does not mean writing in fragments

Answer-first is about order, not brevity. A two-sentence answer followed by four paragraphs of detail is ideal: the lift-ready part is at the top and the depth that earns the reader’s trust is underneath it. Cutting a page to bullet points is a different and usually worse change.

What actually moves extractabilityWhat actually moves extractability
The bottom row is what most content briefs specify. The top row is free and takes an afternoon.

Running it across a template rather than a page

Most sites have five templates rather than five hundred distinct pages, and extraction problems live in the template.

Most sites have five templates, not five hundred pages

Location pages, service pages, product pages, articles and the homepage usually account for everything. Extraction problems live in the template, so checking one representative page per template finds nearly every issue at a fraction of the effort.

Then check the outliers

The pages worth checking individually are the ones that matter commercially and the ones that were built by hand outside the template. Those two sets are small and they are where the template-level conclusion breaks down.

Re-check after any template change

A template edit can turn every heading on a thousand pages into a label, and nothing will report it. This is the check that belongs in the release process rather than in an annual audit.

HTML — What is fetched. The starting point.
Scripts — Usually ignored. Do not rely on them.
Chrome — Nav and footer. Discounted as boilerplate.
Headings — The split points. Where passages begin.
Paragraphs — The candidates. One of these gets quoted.
Images — Silent. Unless described.

What this checker will not tell you

Three things it cannot establish, including the one that has to be true before any of this matters.

Whether the question is worth answering

A page can be perfectly extractable on a question nobody asks. Structure decides whether you can be quoted; demand decides whether it matters. The two are independent and this tool only measures the first.

Whether you are allowed to be read at all

Access comes first. A flawlessly structured page behind a blocked crawler produces nothing, which is why the access check is the one we would run before this one.

How you compare with the page currently being quoted

It reports your page in isolation. Running the same check on whichever page currently holds the answer is usually more instructive than any score, and it takes the same two minutes.

Two pages, same topic, same lengthTwo pages, same topic, same length
Identical word counts, identical facts. The difference is entirely where the answer sits relative to the heading.

Want this done for your site?We build and maintain the search, content and paid programmes described on this page.

Get a free proposal

Using this as a JavaScript SEO checker

The gap between what the server sends and what the browser builds is the oldest technical SEO problem in this field, and this measures it in two paste operations.

The render gap, measured rather than assumed

Paste your view-source HTML and note the surviving word count. Then paste the rendered DOM and note it again. If the two are close, your content is in the HTML and a text-first reader gets all of it. If the rendered count is far higher, the difference is content that only exists after scripts run.

Search crawling has handled rendering for years, with delays and caveats. Retrieval for answers is far less forgiving: the fetch is closer to a plain HTML request, and content assembled client-side is frequently simply absent. A page that ranks acceptably in search can be invisible to an assistant for exactly this reason.

What to do about a large render gap

Server-render or prerender the main content. Lazy-loading images and deferring interactive widgets is fine; assembling the copy itself with script is not, and no amount of answer-first editing fixes a page whose sentences are not in the HTML.

Unanswered heading — Most common. Costs the passage.
Buried answer — Second most. The lead is the lever.
Script-assembled copy — Severe. Nothing to extract.
Facts in images — Silent. Nothing to read.
Layout tables — Confusing. Not data.
More words — Not a fix. Length is not the lever.

The reference tables, in one place

Four tables follow: what the tool strips, the heading states and their fixes, the failure classes ranked, and what to do when the word counts disagree. They summarise the sections above and are meant to be usable on their own.

What gets removed before counting
ElementWhyCounted separately
scriptCarries no readable contentYes, as a volume signal
stylePresentation onlyYes
noscriptFallback, not contentYes
templateNot renderedYes
navRepeats on every pageYes
header and footerBoilerplateYes
aside and formChrome, not contentYes
The three heading states and their fixes
StateWhat it meansFixEffort
Answered directlyA substantive block gets to the point immediatelyNoneNone
Answer is buriedThe answer is inside a long blockMove the last sentence to the frontMinutes
No answer under itHeading followed by nothing substantiveWrite two sentencesMinutes
Heading is a label‘Pricing’ rather than a questionRewrite as the question askedMinutes
Heading duplicatedThe same heading twiceDifferentiate or mergeMinutes
Heading with only an imageFact conveyed visuallyWrite it outLow
Heading with only a listOften fineAdd a one-line lead if the list needs contextLow
Failure classes, ranked by how often we find them
FailureFrequencySeverityFix type
Heading with no answer under itVery highHighEditorial
Answer buried in a long paragraphVery highHighEditorial
Headings written as labels not questionsHighModerateEditorial
Key facts only in imagesModerateHighEditorial
Copy assembled by scriptModerateSevereTechnical
Layout tablesLowModerateTechnical
Content behind interactionLowSevereTechnical
When source and rendered counts disagree
GapWhat it suggestsWhat to do
No gapCopy is in the HTMLNothing
Small gapMinor enhancements are scriptedUsually fine
Large gapMain content is assembled client-sideServe it in the HTML
Source is near-emptyThe page is an application shellServer-render or prerender
Rendered is smallerSomething removes content after loadInvestigate
Both are smallThe page is genuinely thinEditorial problem, not technical
Cannot get rendered copyContent may need interactionTreat as inaccessible
Extraction problems by where they originateExtraction problems by where they originate
The cheapest fixes are also the most common problems, which is an unusually favourable position to be in.
Working through a resultWorking through a result
Every step here is editing rather than development, which is why this is the part of the work a client can do without us.
What the checker measuresWhat the checker measures
The one question: does the block under this heading answer the heading.
Paste — The page HTML. Rendered if scripted.
Strip — What is ignored. Scripts, chrome.
Count — What survives. The honest number.
Mark — Each heading. Answered or not.
Fix — Two sentences each. Cheapest work available.
Re-run — Until green. Minutes.
Answer-first — Under every heading. The one rule.
Two sentences — Not twelve. Lift-ready.
Questions — As headings. In the reader's words.
Text — Not images. For anything that matters.
In HTML — Not assembled. Or it does not exist.
Re-checked — After edits. It regresses quietly.

Everything else we have written on search, AI and getting found

JavaScript SEO, and the question this tool actually answers

JavaScript SEO is the practice of making sure content rendered by JavaScript is still available to the systems that read your page.

Google renders JavaScript, in a second pass, with no guarantee about timing. AI retrieval systems very often do not render it at all. So the question that matters is not whether your page works in a browser, it is what remains when nothing runs.

The rendering gap, stated plainly

  • Googlebot crawls the raw HTML first, then queues the page for rendering later.
  • That render can be minutes or considerably longer after the first crawl.
  • Bing renders less consistently than Google.
  • AI retrieval systems commonly read the raw HTML only.
  • So content injected by JavaScript is, to several important readers, simply absent.

What tends to disappear

  • Product details, prices and stock loaded from an API after page load.
  • Reviews and ratings pulled in by a third-party widget.
  • Tabbed or accordion content built entirely client-side.
  • Internal links generated by a framework router rather than written as anchors.
  • Main body copy on a single-page application with no server rendering.

The fix, in order of how much it costs you

  1. Render the important content server-side, which is the durable answer.
  2. Or pre-render static HTML for crawlers, which is cheaper and nearly as effective.
  3. Ensure internal links are real anchor tags with hrefs, not click handlers.
  4. Keep critical copy in the initial HTML even if enhancements load afterwards.
  5. Re-check after every framework upgrade, because this regresses quietly.
What reads your JavaScript, and what does not
ReaderRenders JavaScript?Practical consequence
GooglebotYes, in a deferred second passContent appears late, sometimes much later
BingbotInconsistentlyTreat as unreliable
AI retrieval crawlersUsually notClient-side content is effectively invisible
Social preview botsNoTitles and images must be in the raw HTML
A screen readerYesAccessibility is not the same problem as this one
This toolNo, deliberatelyThat is the point: it shows what survives without it

AI, AEO and what is changing

Websites and design

Choosing and working with an agency

Social, content and brand

By industry and by situation

Want this run across a whole site

We check extractability, rendering and answer structure across every template you have, and hand back the specific headings to rewrite rather than a score.

/contact

Not sure which of these applies to you?Tell us the situation and we will say plainly what we would do first, and what we would not.

Talk it through

AI, AEO and what is changing

Frequently asked questions

Can I use this as a JavaScript SEO checker?
Yes, and it is the fastest way to measure a render gap. Paste your view-source HTML and note the surviving word count, then paste the rendered DOM and note it again. The difference is content that only exists after scripts run.
What is a render check?
A comparison of what the server sends against what the browser builds. If the rendered version holds substantially more readable content than the source, that content depends on JavaScript and may be absent for anything reading the page as text.
Does JavaScript-rendered content hurt AI visibility more than search?
In our experience yes. Search crawling has handled rendering for years. Retrieval for answers is closer to a plain HTML request, so client-assembled copy is frequently absent — which is why a page can rank acceptably and still never be quoted.
What is JavaScript SEO?
Making sure content rendered by JavaScript is still available to the systems that read your page. Google renders JavaScript in a deferred second pass; AI retrieval systems commonly do not render it at all.
Does Google render JavaScript?
Yes, but in a second pass after the initial crawl, with no guarantee about timing. Content that only exists after JavaScript runs can therefore be indexed late or inconsistently.
Do AI systems render JavaScript?
Usually not. Most retrieval crawlers read the raw HTML, which means client-side content is effectively invisible to them even when it renders perfectly in a browser.
What content most often goes missing?
Anything loaded after page load: API-driven product details and prices, third-party review widgets, client-side tabs and accordions, framework-generated internal links, and body copy on a single-page application with no server rendering.
How do I fix JavaScript SEO problems?
Render important content server-side, or pre-render static HTML for crawlers. Make internal links real anchors with hrefs. Keep critical copy in the initial HTML. Re-check after every framework upgrade, because this regresses quietly.
What does this tool actually check?
Whether a page’s content survives being read as text, and whether each heading is answered by the block directly underneath it. The heading table is the main finding; everything else is context.
Why is the heading-and-answer relationship the main measure?
Because the unit that gets quoted is a heading plus the block beneath it. In our audits that single relationship separates pages that get used in answers from pages that do not more reliably than length, authority or markup.
What does it strip before counting?
Scripts, styles, noscript, templates, navigation, headers, footers, asides and forms. None carry readable content and all of them inflate a naive word count.
My word count came back much lower than the page looks. Why?
Your content is probably arriving through something a text-first reader does not execute. That is a technical finding and it outranks every editorial one.
Should I paste view-source or the rendered DOM?
Both, separately. View-source shows what the server sent; the rendered DOM shows what the browser built. The gap between the two counts is the answer to whether it matters.
What is an ‘answer is buried’ result?
There is a substantive block under the heading, but it runs past ninety words before arriving at the point. The fix is usually to move the last sentence to the front.
What is a ‘no answer’ result?
The heading is followed by another heading, an image, a short label or nothing substantive. It costs the passage outright and it is very common on template-built pages.
Will adding more words help?
We have never seen it fix an extraction problem. Pages that get quoted are pages where the answer sits immediately under the question, and those are usually shorter.
How should headings be written?
As the question a person would actually type or say, in their words. ‘Pricing’ and ‘What does a call-out cost?’ introduce the same paragraph and only one matches how the question is asked.
Does alt text fix facts that are only in images?
It is a floor, not a fix. Alt text helps, but a paragraph-length fact does not belong in an attribute. Write it into the page.
Are tables good or bad?
Good when they hold real data — they extract cleanly and are among the more quotable structures available. Bad when used for layout. The tool counts them without judging; a high count with little data is worth checking.
Does it check my structured data?
No. That is a different question and we built a separate tool for it. This one only looks at the readable content.
Does it upload my page?
No. The HTML is parsed in your browser and nothing you paste is stored; the page itself is never uploaded. The only thing sent to us is the contact detail you enter to unlock the full findings.
What if my page needs a click to reveal content?
Then that content is effectively inaccessible to a text-first reader. Paste the DOM after the interaction to see what it would contain, but treat the dependency itself as the finding.
How many headings does it show?
Up to forty, which covers almost every page we see. The counters above the table reflect all of them.
What counts as a ‘substantive’ block?
Sixty characters or more of text in the first paragraph or list following the heading. Below that it is treated as a label rather than an answer.
Can I use it on a competitor’s page?
Yes. Copying their rendered text into a tool in your own browser is ordinary competitive analysis, and it is often the fastest way to see why their page is the one being quoted.
How often should I run it?
On any page you want quoted, once before publishing and again after any template change. Answer-first structure regresses quietly when pages are edited by people who did not write them.
Is this the same as a readability score?
No. Readability measures how easily a person reads a sentence. This measures whether a machine can lift a self-contained answer, which is a different property and not correlated with it.
What is the single most valuable fix?
Moving the answer to the first two sentences under every heading that currently buries it. It is editing rather than writing, it takes an afternoon, and it changes more than anything else on the list.
Does this replace an audit?
No. It checks one page’s content. It says nothing about access, rendering at scale, entity records or the questions worth targeting in the first place.
Why does it ignore navigation?
Because it repeats on every page and is discounted as boilerplate. Counting it would flatter every page equally and tell you nothing about the page itself.

Want this done for your site?We build and maintain the search, content and paid programmes described on this page.

Get a free proposal

Get a free marketing proposal

Tell us what you are trying to grow and we will come back with a plan, not a pitch deck. Same-day reply on weekdays.

Privacy Preferences
When you visit our website, it may store information through your browser from specific services, usually in form of cookies. Here you can change your privacy preferences. Please note that blocking some types of cookies may impact your experience on our website and the services we offer.
Contact Us