Guide
How to Make a Website Readable for AI
A page can look perfect in the browser and still fail for AI systems. Use this checklist for crawlability, HTML, structure, agents and optional AI files.
A website can look perfect in a browser and still be difficult for an AI system to use.
The visible page may depend on JavaScript, hide important text inside images, block automated crawlers or present the same content through several conflicting URLs. An AI assistant may receive an empty page, incomplete information or an outdated version.
Making a website readable for AI does not require rebuilding it for robots. Most improvements are established practices from technical SEO, accessibility and semantic web development.
A properly built page should be:
- Accessible
- Crawlable
- Renderable
- Understandable
- Verifiable
- Actionable
This guide explains how to achieve each step.
What does “AI-readable website” mean?
An AI-readable website allows automated systems to retrieve and interpret its public content reliably.
That can include:
- search engine crawlers
- answer engines
- retrieval systems
- browser agents
- coding assistants
- shopping agents
- accessibility tools
- internal AI applications
These systems do not all behave identically.
Some can execute JavaScript. Some primarily process the original HTML response. Some use a traditional search index rather than crawling your page directly. Some interact with the accessibility tree and browser controls.
The safest approach is to build a clear, standards-based website that works without relying on one specific crawler.
1. Return a valid response
Every important public page should return the correct HTTP status.
Typical responses include:
200 OKfor a working page301 Moved Permanentlyfor a permanent redirect404 Not Foundfor a missing page410 Gonefor intentionally removed content500errors only when the server has genuinely failed
Do not serve an error message with a 200 status. This creates a soft error that can be difficult for automated systems to interpret.
Check that public content does not require:
- a login
- a cookie banner interaction
- a CAPTCHA
- browser-specific local storage
- a geographic confirmation
- an age gate that hides the full response
- an API request blocked for unknown clients
Essential information should be available in the returned document whenever possible.
2. Configure robots.txt deliberately
The robots.txt file tells compliant crawlers which URLs they are allowed to request.
It normally appears at:
https://example.com/robots.txt
A simple public-site configuration may look like this:
User-agent: *
Allow: /
Sitemap: https://example.com/sitemap.xml
Before changing the file, review whether you need to protect:
- internal search results
- account pages
- checkout routes
- staging areas
- parameter-heavy duplicate URLs
- administrative sections
Do not block important CSS, JavaScript or content resources without a reason.
Google checks robots.txt before crawling a page and does not render JavaScript from a URL that crawling rules prevent it from requesting.
3. Understand the difference between AI crawlers
AI companies may use separate crawlers for search, model training and user-triggered page access.
OpenAI distinguishes between:
OAI-SearchBot, which supports website inclusion in ChatGPT searchGPTBot, which is associated with training foundation models- user-triggered access used when a person asks ChatGPT to visit a page
OpenAI says the settings are independent. A website can allow OAI-SearchBot while disallowing GPTBot.
An example configuration is:
User-agent: OAI-SearchBot
Allow: /
User-agent: GPTBot
Disallow: /
User-agent: *
Allow: /
Sitemap: https://example.com/sitemap.xml
This example allows ChatGPT search crawling while expressing that GPTBot should not crawl the site for training.
Review the official documentation for every crawler you configure. Bot names, purposes and policies can change.
Do not copy a large list of AI crawler rules without understanding what each rule does.
4. Put important content in the HTML
A crawler usually begins with the server response.
For an informational page, the response should ideally contain:
- the page title
- main heading
- article text
- important links
- product information
- prices when public
- contact information
- structured data
A server-rendered or statically generated page gives automated systems immediate access to this content.
A client-rendered application may initially return something like:
<body>
<div id="app"></div>
<script src="/app.js"></script>
</body>
The actual text appears only after JavaScript runs.
Google can render JavaScript, but it separates crawling, rendering and indexing into different stages. Rendering may occur later than the initial crawl.
Other crawlers may not render the page as completely.
For public content, consider:
- server-side rendering
- static-site generation
- prerendering during the build
- progressive enhancement
- meaningful fallback content
Avoid dynamic rendering that serves fundamentally different content to bots and humans. Google describes dynamic rendering as a workaround rather than a recommended long-term solution.
5. Use semantic HTML
Semantic HTML communicates the meaning of a page, not only its appearance.
Use elements such as:
<header>
<nav>
<main>
<article>
<section>
<aside>
<footer>
Inside the main content, use:
<h1>
<h2>
<h3>
<p>
<ul>
<ol>
<table>
<figure>
<blockquote>
MDN explains that properly written HTML defines content and structure in a machine-readable way. This benefits accessibility, SEO and browser functionality.
A simple article structure might look like this:
<main>
<article>
<header>
<h1>How to Make a Website Readable for AI</h1>
<p>Updated July 18, 2026</p>
</header>
<section>
<h2>Use Semantic HTML</h2>
<p>Semantic elements describe the purpose of each part of the page.</p>
</section>
</article>
</main>
Do not replace headings and buttons with styled <div> elements.
This:
<div class="title">Pricing</div>
does not communicate the same structure as:
<h2>Pricing</h2>
6. Create a logical heading hierarchy
Each page should have a clear main topic.
A practical structure is:
H1: Main page title
H2: Major section
H3: Subsection
H2: Major section
Avoid:
- skipping between heading levels for visual styling
- using every heading as a keyword variation
- repeating the same H1 several times
- placing important labels in unstructured text
- using headings for text that is not a section title
Headings should remain understandable when viewed as an outline without the surrounding paragraphs.
7. Use standard crawlable links
Internal links help automated systems discover pages and understand their relationships.
Use ordinary anchor elements:
<a href="/blog/llms-txt-guide">Read the llms.txt guide</a>
Avoid navigation that depends only on:
onclickhandlers- non-link
<div>elements - URL fragments that replace complete page content
- hidden hover interactions
- JavaScript state without a stable URL
Google recommends crawlable links with an href attribute and descriptive anchor text.
Use meaningful anchor text.
Weak:
<a href="/guide">Click here</a>
Better:
<a href="/guide">Read the complete AI-readiness guide</a>
8. Publish an XML sitemap
An XML sitemap lists the URLs you want crawlers to discover.
A basic example is:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://example.com/</loc>
</url>
<url>
<loc>https://example.com/blog/answer-engine-optimization</loc>
</url>
</urlset>
Include canonical, indexable URLs.
Exclude:
- redirected URLs
- error pages
- private pages
- duplicate parameter URLs
- pages marked
noindex
Search engines use sitemaps to crawl important pages more efficiently. A sitemap is still a hint rather than a guarantee that every URL will be crawled or indexed.
Reference the sitemap from robots.txt:
Sitemap: https://example.com/sitemap.xml
9. Use canonical URLs
Several URLs may display the same content:
https://example.com/page
https://example.com/page/
https://www.example.com/page
https://example.com/page?source=email
Choose one preferred version and reference it with a canonical tag:
<link rel="canonical" href="https://example.com/page">
Redirect unnecessary duplicates where appropriate.
Canonicalization helps search engines select a representative URL from a group of duplicate or highly similar pages.
The canonical target should:
- return
200 OK - contain the intended content
- not redirect
- not be blocked
- not contain
noindex - match the version used in internal links and the sitemap
10. Check indexing directives
A page may be crawlable but intentionally excluded from an index.
Review:
<meta name="robots" content="noindex">
And HTTP headers such as:
X-Robots-Tag: noindex
Do not place noindex in robots.txt. Google does not support that implementation.
Google must be able to crawl a page to see its noindex directive. Blocking the same URL in robots.txt can prevent the crawler from reading the instruction.
Use noindex for pages you genuinely do not want in search systems, such as:
- internal results
- test pages
- private thank-you pages
- duplicate utility pages
11. Add clear page metadata
Every important page should have a descriptive title:
<title>How to Make a Website Readable for AI | CrawlMirror</title>
Add a useful meta description:
<meta
name="description"
content="Follow this technical checklist to make your website easier for AI crawlers, answer engines and browser agents to understand."
>
Metadata should accurately reflect the visible page.
Also consider:
- Open Graph title
- Open Graph description
- Open Graph image
- language declaration
- publication date
- author information
- canonical URL
Example:
<html lang="en">
Metadata cannot compensate for weak content, but it reduces ambiguity and supports consistent representation.
12. Add relevant structured data
Structured data provides explicit information about the page.
Google supports several formats and generally recommends JSON-LD because it is straightforward to implement and maintain.
A blog article could use:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "How to Make a Website Readable for AI",
"description": "A technical guide to making websites accessible to AI crawlers, answer engines and browser agents.",
"datePublished": "2026-07-18",
"dateModified": "2026-07-18",
"author": {
"@type": "Organization",
"name": "CrawlMirror"
},
"publisher": {
"@type": "Organization",
"name": "CrawlMirror"
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://example.com/blog/how-to-make-website-readable-for-ai"
}
}
</script>
Only include information that is accurate and visible or clearly supported by the page.
Potential schema types include:
OrganizationWebSiteWebPageBlogPostingArticleSoftwareApplicationProductBreadcrumbListPerson
Structured data is not a special requirement for AI search, and it does not guarantee that an answer engine will use the page. It remains a useful way to express meaning clearly and support conventional search features.
13. Make the main facts easy to identify
Important information should be stated plainly.
For a product page, clearly display:
- product name
- description
- price
- currency
- availability
- specifications
- supported locations
- limitations
- contact or purchase method
For a company page, clearly display:
- company name
- purpose
- services
- location
- contact details
- official profiles
For an article, clearly display:
- title
- author
- publication date
- updated date
- main conclusion
- supporting sources
Do not make automated systems infer fundamental facts from slogans.
Weak:
The future of digital clarity starts here.
Better:
CrawlMirror checks whether public websites are accessible and understandable to AI crawlers and answer engines.
The second sentence explains what the product does.
14. Keep important information out of images
Text embedded inside an image is less reliable than HTML text.
When an image contains useful information:
- provide accurate alternative text
- include a nearby caption
- repeat essential facts in the article
- provide a transcript for complex diagrams
- use an HTML table for tabular data
Example:
<img
src="/images/ai-readiness-report.png"
alt="CrawlMirror report showing passed checks for robots.txt, sitemap and semantic headings"
>
Alternative text should describe the meaningful content, not repeat decorative details.
15. Build accessible forms and actions
Browser agents increasingly interact with websites, not only read them.
A form should use:
- real
<form>elements - explicit labels
- standard inputs
- real buttons
- predictable validation
- clear success and error states
Example:
<form action="/analyze" method="post">
<label for="website-url">Website URL</label>
<input
id="website-url"
name="url"
type="url"
required
autocomplete="url"
>
<button type="submit">Analyze website</button>
</form>
Avoid clickable <div> elements and unlabeled icon buttons.
Google’s web.dev guidance for agent-friendly websites recommends stable machine-readable interfaces and reviewing the accessibility tree. Complex hover states and visually shifting interfaces can make interaction harder for agents.
Good accessibility often improves agent usability because both depend on meaningful controls, names, roles and states.
16. Keep URLs stable and descriptive
Good:
/blog/how-to-make-website-readable-for-ai
Less useful:
/index.php?id=4837&cat=9
A URL does not need to contain every keyword, but it should remain:
- stable
- readable
- unique
- consistent
- free from unnecessary parameters
Do not use URL fragments to load completely different indexable content. Google generally does not support fragments as a replacement for crawlable page URLs.
17. Publish Markdown versions only when useful
Clean Markdown versions can help tools that prefer text over complex HTML.
The llms.txt proposal suggests linking to useful Markdown resources and, where practical, providing Markdown equivalents of documentation pages.
Examples might include:
/docs/getting-started
/docs/getting-started.md
This can work well for technical documentation.
It is not necessary for every website. Google says that special Markdown or AI text files are not required for inclusion in its generative search features.
Do not maintain separate text versions that become outdated or contradict the HTML pages.
18. Consider an llms.txt file
An optional llms.txt file can provide a curated map of important resources.
Example:
# CrawlMirror
> CrawlMirror checks whether websites are technically ready for AI crawlers, answer engines and browser agents.
## Product
- [AI Readiness Checker](https://example.com/): Analyze a public website for AI-accessibility issues.
- [How Scoring Works](https://example.com/scoring): Understand the checks and scoring method.
## Guides
- [Answer Engine Optimization](https://example.com/blog/answer-engine-optimization): Learn the foundations of AEO.
- [AI-Readable Websites](https://example.com/blog/how-to-make-website-readable-for-ai): Follow the technical implementation checklist.
Treat this as a supplement.
It does not replace:
- semantic HTML
robots.txt- an XML sitemap
- structured data
- crawlable internal links
- useful content
19. Make authorship and ownership clear
AI-generated answers may need to assess where information came from.
Provide visible information about:
- the organization
- the author
- relevant qualifications
- editorial review
- publication date
- corrections
- contact options
For technical articles, link to official documentation and primary sources.
For sensitive topics such as health, law or finance, editorial transparency is especially important.
Do not invent an author persona only to create the appearance of expertise.
20. Test what automated systems receive
Do not rely only on the visual page.
Perform the following checks:
Inspect the raw HTML
Use “View Source” and confirm that the main text appears in the response.
Disable JavaScript
Check whether the essential content and navigation remain available.
Review response headers
Confirm:
- status code
- content type
- canonical behavior
X-Robots-Tag- caching behavior
- redirects
Test robots.txt
Verify that important pages and resources are allowed for the crawlers you want to support.
Check the accessibility tree
Use browser developer tools to inspect:
- landmarks
- headings
- links
- form labels
- button names
- roles
- states
Validate structured data
Use the relevant schema validator and Google’s Rich Results Test when targeting supported Google features.
Check your sitemap
Confirm that every URL:
- resolves successfully
- is canonical
- is indexable
- is current
Review server logs
Look for requests from known crawlers and identify:
- blocked requests
- repeated errors
- slow responses
- rate limiting
- failed resource loads
User-agent strings can be spoofed, so use official verification methods where available.
AI-readiness checklist
A technically AI-readable website should pass the following checks:
Access
- Public pages return
200 OK - Important pages do not require a login
- Wanted crawlers are not blocked
- Firewalls and bot protection do not reject legitimate access
Rendering
- Important content is present in HTML
- JavaScript is not the only source of text
- CSS and scripts required for rendering are accessible
- Pages do not depend on fragile browser state
Structure
- Every page has a descriptive title
- The main topic has a clear H1
- H2 and H3 headings form a logical hierarchy
- Semantic elements identify main content and navigation
- Links use valid
hrefattributes - Forms have labels and real buttons
Discovery
- An XML sitemap exists
- Important pages have internal links
- URLs are stable
- Canonical tags are consistent
- Redirect chains are minimized
Understanding
- The company, product and page purpose are stated clearly
- Important facts appear as text
- Images have meaningful alternative text
- Structured data matches visible content
- Dates and authors are identifiable
Optional AI files
llms.txtis accurate and curatedllms-full.txtis used only when appropriate- Custom files such as
llms-all.txthave a defined consumer AGENTS.mdis used for repository instructions, not public SEO
Frequently asked questions
Does an AI-readable website need llms.txt?
No. It can be useful for compatible tools, but it is optional. The website’s HTML, crawlability, structure and content remain more important.
Can ChatGPT read JavaScript websites?
Some OpenAI systems can retrieve modern web pages, but support can vary by crawler and context. Server-rendered HTML remains the most reliable way to expose important public information.
Should I allow every AI crawler?
That is a business and content-policy decision. Search visibility, live retrieval and model training may use separate crawlers. Review the purpose of each crawler before allowing or blocking it.
Does structured data improve AI visibility?
Structured data can make page meaning more explicit and supports several search features. It does not guarantee inclusion in AI-generated answers.
Is accessibility important for AI agents?
Yes. Semantic controls, labels, landmarks and stable interfaces help accessibility technologies and can also make browser-based agent interaction more reliable.
How can I check whether my website is AI-ready?
Test crawler access, HTML rendering, semantic structure, metadata, structured data, machine-readable files, status codes and internal discovery. A dedicated checker can automate much of this process.
Run an AI-readiness check
CrawlMirror analyzes the technical signals that determine whether automated systems can reach and understand your website.
Run your site through the checker, review failed tests and repeat the analysis after making changes. AI readiness is not a one-time file installation. It is the result of a clear, accessible and maintainable website. Also useful: AI crawler checker · llms.txt checker · AEO checker.
Related guides: Answer Engine Optimization (AEO) · llms.txt, llms-full.txt and AGENTS.md
Sources and further reading
- Google Search Central: Succeeding in AI search / generative AI features.
- OpenAI: Overview of OpenAI Crawlers.
- Google Search Central: JavaScript SEO basics.
- Google Search Central: Structured data documentation.
- Google Search Central: Build and submit a sitemap.
- Google Search Central: How to specify a canonical URL.
- Google web.dev: Building agent-friendly websites.
- MDN Web Docs: Semantic HTML / HTML elements reference.
- llms.txt proposed specification.