What an AI Agent Sees on Duolingo's Home Page
Duolingo's home page scored 27 out of 100 on our Agent Analyzer when we scanned it on 17 October 2026. The reason is one line long: the HTML the server sends contains no text. Everything a visitor reads is drawn by JavaScript after the page loads.
This is the first in a series. Every two weeks we scan one well-known page, say what it does well, list what an agent trips over, and describe what each fix would change. The scan is the same one anyone can run, and the subject was picked from our State of Agent Readiness benchmark of 100 home pages.
One page is not a company. We scanned https://www.duolingo.com/ and nothing
else, so this says nothing about Duolingo's blog, its course pages, or the app.
What Duolingo's home page does well
The foundations are in good order, and several of them are things most of the benchmark got wrong.
- It is fast. The first byte arrived in 212 milliseconds.
- Link previews work. The page has a complete set of Open Graph tags and an
image that loads. Its
og:titleis "Learn a language for free". 23 of the 73 readable home pages in our benchmark failed this check. - It names its own address. The canonical link points at the page itself.
- Crawlers are told where things are.
robots.txthas a Sitemap line, the sitemap lists 103 URLs, and the home page is one of them. - AI search crawlers are allowed in. Nothing in
robots.txtblocks Googlebot, Bingbot, or the AI search crawlers from this page. - The meta description is a real sentence. It says what Duolingo is and that it is free.
So a system that only reads the <head> gets a fair summary. The trouble
starts in the <body>.
The one problem behind most of the others
The response is 11 KB of HTML with an empty #root container and zero
characters of readable text. No headline, no paragraph, no link to a course.
We fetched the page four ways to make sure the scanner was not being singled out: under its own name, with a desktop Chrome user-agent string, and with the strings Googlebot and GPTBot send. All four returned the same empty shell. A caveat on that test: we were sending those strings from our own network, and a site can treat the real Googlebot differently from an imitation.
Google's crawler runs JavaScript, so Google search is probably unaffected. Most AI crawlers do not, which our technical guide covers. An agent asked "what does Duolingo offer?" that fetches this page has the title, the description, and nothing else to quote.
Four other failed checks follow directly from the empty body:
- There is no H1, so nothing in the body says what the page is called.
- There are no headings at all, so the page has no outline.
- There is no
<main>or<article>element marking where content sits. - There is no link to an about or contact page in the HTML.
The fix. Send the home page's words in the server response. That means server-side rendering or a pre-rendered static version of the marketing page, with the interactive parts attached afterwards. The sign-up flow can stay exactly as it is.
What it would change. An agent would read the same page a person does, without needing a browser. The headline would arrive as an H1, the sections as headings, and the four checks above would resolve with it. This is the only fix on the list that changes what an agent can say about Duolingo. The rest change how confidently it can say it.
Three smaller fixes
Add structured data. The page has no JSON-LD. An Organization block with
the name, logo, and a contact route, plus a WebSite block, would state in
machine-readable form who publishes the page. We would not oversell this one:
the evidence that structured data improves AI citations is contested, as our
schema markup guide sets out. Treat it as
removing guesswork.
Decide about AI crawlers on purpose. robots.txt has rules for paths but
names no AI crawler, so being cited in AI answers, being used for training, and
being fetched by a person's agent all get the same default. 56 of the 73
readable sites in our benchmark were in the same position. Writing separate
rules for search crawlers and training crawlers would let Duolingo stay in AI
answers while choosing whether its content trains models. Our
AI opt-out guide has the crawler names.
Date the sitemap. None of the 103 sitemap URLs has a lastmod date. With
real dates, crawlers can tell which pages changed and fetch those first.
There is also a small one in the <head>: the page title is only the site
name. A title that says what the page offers gives a system one more line to
decide with before it reads anything else.
What we cannot tell you
We have not predicted a new score, because the scanner would need to see the rendered page to mark the checks that are hidden behind the empty body. We also cannot say that a higher score would bring Duolingo more citations or more traffic. The score measures how easily an agent can read and attribute a page. Nothing in it predicts what an AI system chooses to cite.
Duolingo may also have decided this on purpose. A home page that exists to start a sign-up has little to gain from being quoted. If that is the reasoning, the cost is still worth knowing: a page that says nothing to an agent leaves the description of your product to whoever else wrote about it.