What we saw
We track our own site the way we track our customers' sites. Every day Laup asks Claude and the other AI engines the same set of buying questions, and records which pages each engine read and the title it had for each one.
Claude had our homepage as “laup.ai wordmark”, and most of our other pages as just “Laup”. The pages themselves had proper titles: Bing and Google both showed them correctly. For Labrador (ChatGPT) we can't say.

site:laup.ai on Bing. The homepage and the About page carry their real titles.Where the title went
MeasuredA search index learns a page's title from the HTML its crawler fetches. So we fetched laup.ai/pricing the way ClaudeBot does, with its user agent, and recorded where three things landed: the end of the <head>, a description hidden in our logo, and the <title>. Bingbot is there for comparison.
| Crawler | End of head | Logo description | Title |
|---|---|---|---|
| ClaudeBot | byte 3,422 | byte 8,550 | byte 65,152after the scripts |
| Bingbot | byte 5,154 | byte 10,213 | byte 2,169inside the head |
Our site runs on Next.js 15. To get pixels on screen sooner, it streams the page's metadata, title included, after the body has started. It makes an exception for a built-in list of crawlers that need the metadata in the head. Bingbot is on that list. ClaudeBot is not. So ClaudeBot got a head with no title in it, and the real title about 60 KB further down.
Where “laup.ai wordmark” came from
With no title in the head, something else had to stand in. The first title-like text after the head was a description inside our logo: an SVG <desc> element that starts “laup.ai wordmark”. The only other place that string appeared was the alt text of our social-card image, which also arrived after the body. It is exactly what Brave held as our homepage's title.Measured

This is the second time our logo has named our pages. In August the logo carried an SVG <title>, and 25 of our 36 pages were read as “laup.ai”. We removed it on 21 August.
What we don't know is exactly how Brave's crawler picks a title. Inferred Either it stops reading before 65 KB and never reaches the real title, or it takes the first title-like text after an empty head. Both fit what we see, and putting the title back in the head fixes both. The other pages that show up as just “Laup” most likely get it from the site name in our structured data, the one piece of metadata that did sit in the head.
Why this costs us with Claude
Claude does not browse the web when you ask it something. It searches Brave's index first, and for each result it gets a URL, a title, the page's age and an excerpt. A page the search does not return, Claude never sees, and the title is one of the strongest signals a search index ranks on. A result titled “laup.ai wordmark” matches almost nothing anyone searches for.
Our numbers point the same way. Measured Over the 30 days to 25 September, only 44 of Claude's 1,260 answers read a page on laup.ai, and 43 of those named Laup. When Claude opens our pages, it uses them. It just rarely finds them.
The same streaming affected the other AI engines' crawlers too, in smaller ways, and we have seen before how much titles matter. When a homepage rebuild accidentally dropped the words that say what we do, “GEO” and “AI visibility”, from our title, we dropped out of ChatGPT's answers, and came back when we put them back on 31 August.
The fix
- The title goes in the head for every crawler. One line in our Next.js config treats every visitor like the crawlers on its list. Our marketing metadata never changes per request, so there was nothing to gain from streaming it.
- The logo description is gone. The logo keeps its accessible name through its
aria-label.
In the same release we also rewrote our page titles to say what each page is. The fix went live shortly before this was published, and we asked Brave to crawl the site again.
What we expect
The starting point, from the week before the fix (19 to 25 September): Claude cited laup.ai in 15 of its 308 answers to questions that don't mention Laup by name. We leave out the one question that does, because Claude finds us for that one whatever our title says.
- Brave shows our real titles within about a week. Last time, Claude first read a page we had submitted to Brave five days after we submitted it.
- Once it does, we expect Claude to cite laup.ai in more of those answers. I am curiously awaiting to see how large the effect will be.
We track it the way our customers track their work: as action cards on our own Laup board. One card is scoped to Claude, one to the other engines. On launch day each card freezes the two weeks before as its baseline, and every run after that shows the change.

Because the new titles shipped in the same release, a rise will not tell us which of the two changes did it. And if Brave shows the right titles and Claude's count stays flat for two weeks, the title was not what kept Claude away. We will say so in the next entry either way.
Check your own site
- Fetch a page as ClaudeBot and see which comes first. If
</head>comes first, crawlers are getting your title late.curl -sA ClaudeBot https://your-site.com/ | grep -bo '<title>\|</head>' - Search
site:your-site.comon search.brave.com and read the titles. Those are the ones Claude sees. - On Next.js 15 or later, look up
htmlLimitedBotsin the Next.js docs. It decides which crawlers get your metadata in the head. - If your logo is an inline SVG, check it for
<title>and<desc>elements. They are useful for screen readers, and a crawler can mistake them for your page title.
Next entry: whether Claude came back. More experiments on our own site are collected under How we work with our AI visibility.
Sources
- Anthropic: web search tool: what Claude sees for each search result
- Simon Willison: Anthropic uses Brave for Claude's web search
- Next.js: htmlLimitedBots: which crawlers get metadata in the head
The details: every measurement behind this story, engine by engine, is in Where our titles went.
