---
slug: "markdown-vs-html-ai-citations-data"
title: "Markdown vs HTML: What AI Actually Cites (Real Data)"
description: "We compared markdown mirrors against a comparable HTML-only site using real Cloudflare crawl data — here's the actual difference in AI citations, not a guess."
date: "2026-08-28"
category: "Engineering"
readingTime: 7
author: "Karlis Bērziņš"
image: "/blog/images/markdown-vs-html-ai-citations-data.svg"
---

AI crawlers cite markdown pages far more than HTML pages serving the same content. In a 24-hour window, a site with plain-markdown mirrors of every page pulled 250 AI answer retrievals against 81 for a comparable HTML-only site — roughly 3x, from the same category of content. This isn't a hunch. It's Cloudflare's own AI crawl data, and we can show the numbers because tunovix.com is the markdown side of the comparison.

## Why this even needs testing

Every AI system that answers questions from the live web — ChatGPT browsing, Claude, Perplexity, Google's AI Overviews — has to fetch a page and turn it into something it can actually reason about. HTML wasn't built for that. It was built for browsers, and it's full of things that mean nothing to an assistant: nav bars, cookie banners, ad slots, JS-rendered chrome, tracking scripts. A crawler has to strip all of that out before it gets to the actual sentence it wanted.

Markdown skips the whole problem. There's nothing to strip, because there's nothing there but the content.

<div class="stat-grid">
<div class="stat-cell"><div class="val">250 vs 81</div><div class="lbl">AI answer retrievals, 24hrs</div></div>
<div class="stat-cell"><div class="val">232 vs 0</div><div class="lbl">demand signals recorded</div></div>
<div class="stat-cell"><div class="val">49% vs 99%</div><div class="lbl">of crawl requests allowed through</div></div>
</div>

That last stat is the counterintuitive one, so it's worth explaining honestly: the markdown site saw *more total crawl traffic* (814 requests vs 107) and a *lower percentage* of it landing as "allowed." More bots showed up and tried more things — some of that is noise (payload/session variants, retries), not a defect in markdown itself. The number that actually matters — real answers actually retrieved and cited — still came out roughly 3x higher on the markdown side, on top of a larger crawl volume overall. Bots showed up more *and* got more usable signal per visit.

## The mix of who shows up changes too

It's not just volume — which crawler dominates shifts depending on what you serve:

- **Markdown**: Google led by a wide margin (378 allowed requests), with OpenAI, Anthropic, Perplexity, and Amazon's bot all present in smaller numbers.
- **HTML-only**: OpenAI led (63), followed by Microsoft's Bingbot, Anthropic, ByteDance, and Perplexity — none anywhere near the markdown site's Google volume.

Different crawlers apparently have different tolerance for how much work they'll do to parse a page. That's a real, practical reason to not treat "AI visibility" as one undifferentiated thing — the format you serve shapes *which* systems bother to come back.

## What we actually built (see the numbers happen)

We didn't estimate this from a whitepaper — we implemented it here first and then looked at the data. Every marketing page on tunovix.com (homepage, tools index, contact, privacy, terms, every blog post — including this one, at `/blog/markdown-vs-html-ai-citations-data.md`) has a plain-markdown mirror, advertised via a `<link rel="alternate" type="text/markdown">` tag in the page `<head>`, generated from the exact same data the HTML page renders from — so it can never drift out of sync. There's also a sitewide `llms.txt` index and a full-content `llms-full.txt` export, following the emerging [llmstxt.org](https://llmstxt.org) convention. For the mechanics of getting MCP-style AI-agent workflows like this actually wired into a codebase, see [AI Agents and MCP Servers vs. WordPress](/blog/ai-agents-mcp-servers-vs-wordpress) — same underlying idea, different layer.

## Where Cloudflare AI Search fits in — a different problem

Markdown mirrors solve *passive* discoverability: if a crawler visits, it gets clean content instead of a wall of markup. That's still a waiting game — it only works when something decides to crawl you.

Cloudflare AI Search (built on Vectorize, Cloudflare's vector database) solves a different problem: *active* queryability. Instead of hoping a crawler visits and parses the right page, it indexes your whole site — chunked, embedded, hybrid semantic-plus-keyword searchable — and exposes it so an agent can ask a direct question and get back the relevant chunk immediately, no crawling, no guessing which page has the answer. We built this as a public API on tunovix.com (`/api/ai-search?q=<question>`), specifically for agents rather than site visitors — a question like "does Tunovix build WordPress migrations" returns the actually-relevant chunk directly, ranked by relevance score.

The two aren't competing approaches — they're different layers of the same goal. Markdown mirrors make you easy to parse *if* something visits. AI Search makes you directly answerable *without* a visit having to happen at all.

## What this means if you're not doing either yet

Three concrete, low-cost moves, in order of effort:

1. **Serve a markdown version of every important page.** It doesn't need to be fancy — a plain `.md` file at a predictable URL, linked via `rel="alternate"`, generated from whatever data already renders the HTML page (so it can't go stale).
2. **Publish an `llms.txt`.** A short index pointing agents at your real pages and their markdown counterparts costs almost nothing to maintain and is exactly what the emerging convention expects.
3. **Consider a queryable layer** ([AI Search, or similar](/services/rag-development)) once you have enough content that "which page has the answer" stops being obvious — this is a bigger lift than the first two, worth it once your site has real depth to search over. This site's own version of that layer is documented at the [API reference](/api-reference).

None of this requires a rebuild. Every one of these was added to an existing Nuxt site without touching the pages themselves — the data each page already renders from just got reused a second time.

If you're weighing whether this is worth building into your own site — or want an AI agent integration scoped properly instead of guessed at — [get a free estimate with our AI Agent Cost Calculator](/tools/ai-agent-cost-calculator), or [tell us what you're building](/contact) and we'll give you a straight answer on scope and cost.
