Why a chat model can't see your site
A real crawler works by following every internal link it can find, requesting each URL directly and reading the HTTP response, including the status code, the response headers and the raw HTML sent before any JavaScript runs, and then it compares all of that against your XML sitemap and robots.txt to find pages that are blocked, orphaned, or duplicated. That's the baseline.
ChatGPT does none of this on its own. Even with browsing enabled, it reads the pages it chooses to fetch rather than crawling the site, and it has no server headers, no crawl history and no access to Search Console. Ask it to audit a domain and it fills the gaps with patterns learned from millions of other pages instead of anything it checked on yours. It's guessing.
What gets fabricated
Because the model is pattern matching instead of measuring, it tends to invent specifics with total confidence, so it will tell you a meta description is too long without loading the page and counting characters. It will flag duplicate title tags without having read a second URL on your site. Neither is checked.
The recommendations from a chat-only audit tend to cluster around the same handful of generic items: add more headings, add alt text, improve site speed, add schema markup. Those items are true of almost every website on the internet, which is the problem. A recommendation that fits every site diagnoses none of them.
The same pattern shows up with duplicate or thin content. A model will confidently call two pages duplicates of each other, or call a page thin, without having fetched a second URL to compare against. There is nothing to compare. It's describing a category of problem it has seen described often, rather than one it verified on your domain.
Work With John
If your site isn't bringing in inquiries, that's fixable.
I work with US service businesses and B2B brands on SEO, websites and lead follow-up. On a free strategy call, I'll tell you what's holding your site back, without a sales pitch.
Get a Free AuditWhy hallucinated specifics are worse than an honest "I don't know"
The failure mode with a chat-only audit is confidence. The model answers with total certainty about things it never checked, and the phrasing gives no hint that it's guessing. Ask it to list your site's slowest pages and it will name specific URLs, formatted exactly like a real diagnostic report, without ever having measured a single page's load time. None of it is measured.
That matters more than a vague answer would, because a wrong number stated confidently is harder to catch than an admission of uncertainty, and a junior team member handed that list has no reason to doubt it. The formatting looks identical to a real Lighthouse export or a real Search Console query, and nothing in the response signals which parts are observed and which are invented. AI tools can help with SEO work. The risk is that a model rarely tells you, unprompted, where its knowledge stops and its guessing begins.
Competitor numbers are guesses dressed as data
Ask a chat model to estimate a competitor's monthly organic traffic or its number of ranking keywords and it will give you a specific-looking figure. Unless the model is connected to an SEO data tool, that number isn't pulled from any live index. It's a plausible-sounding estimate generated from patterns in training data rather than a query against real ranking or traffic data. Check it elsewhere.
If you need an actual read on a competitor's visibility, that has to come from a tool built to observe the live web: a rank tracker, a traffic estimation tool built on click-through modeling, or your own Search Console data for terms where you both show up. Treat any specific competitor number a chat model hands you as a hypothesis to check rather than a citation. The tell is usually the precision. A model that says a competitor "likely gets meaningful organic traffic from blog content" is being appropriately vague. One that states a specific-sounding monthly visitor figure is presenting a guess as measured fact.
What a real audit requires
A real technical check needs data a chat model doesn't have. Index coverage and real search queries live in Search Console, tied to your verified property. Field performance data, the kind Google uses in its Core Web Vitals assessment, comes from the Chrome UX Report, built from real visitors on real devices over the past 28 days rather than a single simulated pass. A chat model has none of it.
Site-wide issues like duplicate content, broken internal links, or pages accidentally blocked by robots.txt only show up when something crawls the whole site the way Googlebot does. PageSpeed Insights, Search Console and a crawler like Screaming Frog's free version (it crawls up to 500 URLs at no cost) each do one piece of this job well, and none of them is guessing.
What changes if you paste in the raw HTML
Some people try to route around the "it can't see your site" problem by copying the page source and pasting it directly into the chat. This gets you further, and it's worth understanding exactly how far.
Paste in raw HTML and the model can now read your actual title tag, your actual meta description, and the literal text inside your heading tags. That part is real. Character counts, keyword presence in a specific tag, an obviously malformed piece of markup: a model can catch those correctly once the source is in front of it, because it's reading rather than guessing.
What it still can't do is anything that depends on rendering. Most sites today build a meaningful part of the page with JavaScript after the initial HTML loads: content inserted client-side, components that hydrate after the fact, text that only appears once a script runs. Paste in the raw source of a page like that and you've handed the model a skeleton rather than the finished page. It has no way to tell you whether that JavaScript ran, whether Googlebot rendered it successfully, or whether what a visitor sees matches the file you pasted. Google crawls the HTML and then renders the JavaScript as a separate step for exactly this reason, and a pasted source file only ever shows the model the first part.
It also still can't compare that page against any other page on your site, because you've handed it one file rather than a domain. Duplicate title tags, content that's thin relative to a competing page, a URL nothing else links to: none of that shows up from a single pasted source, no matter how carefully the model reads it. One file isn't a site.
Why enabling browsing doesn't close the gap
Browsing sounds like it should fix all of this, and it doesn't. When a chat model fetches a page with browsing turned on, it makes a request and reads whatever comes back, similar to pasting the HTML in yourself, except now it's automated and you can't see exactly what it retrieved. It still isn't following your internal links to build a map of the site. It still isn't checking robots.txt against every URL it might want to reach. It still isn't keeping a crawl history a future visit could compare against. Each fetch is a snapshot, with no memory of what the page looked like the last time anyone asked.
That single-snapshot design is also why a browsing-enabled audit can look inconsistent between two runs on the same day. The tool times out, retries, or serves a cached version depending on conditions you can't see from the chat window, and each of those produces a slightly different-sounding report from an interface that gives no indication anything changed underneath it.
A quick way to see this for yourself
Ask ChatGPT or Claude to audit a page on a site you know well, one with a couple of real, specific technical problems you're already aware of. Compare its answer against what you know. It usually misses the real, specific issue and returns a generic list that would apply to almost any site in that industry. Try it.
Then try the opposite test. Paste in an actual Search Console export or an actual PageSpeed Insights report for that same page, and ask the same question again. The quality of the response changes immediately, because the model now has real numbers to reason over instead of a URL to guess about. That contrast is the clearest way to see the actual boundary between what these tools can and can't do for a technical audit, and it only takes two prompts to run.
A worked example: catching a hallucinated finding
Here's a concrete test for any chat-generated SEO audit. Pick one specific, checkable claim from the report, something like "your homepage title tag is 68 characters" or "this page is missing an H1." Then go look.
Often the specific claim turns out to be wrong once you check it against the real page, view-source and all. The title tag is a different length than stated. The H1 the model said was missing is sitting right there in the markup, in a different place from where the model expected it. That's the tell: a model reporting a specific, falsifiable detail about a page it never loaded will occasionally land on something true by chance, but there's no way to know which claims are lucky guesses and which aren't without checking every single one yourself. At that point you've done the audit yourself, and the chat response added nothing.
The canonical tag test
Canonical tags are a good stress test because they're invisible in a browser and only exist in the source. Ask a chat model whether a page has a proper canonical tag pointing to itself, and it will answer, confidently, whether or not it has any way to know. Paste the actual <link rel="canonical"> line in from your source and it can read that one line back correctly. Ask about a URL you haven't pasted anything for and it will still answer, because nothing in how these models work makes them default to "I don't have that information." They answer the shape of the question they were asked, and a well-formed question about a canonical tag gets a well-formed, entirely fabricated answer in return. Check the source.
That's the pattern worth remembering across every version of this test: specificity in the question does not create specificity in the underlying data. Only pasting the real source, or running a real crawl, does that.
Where a chat model helps
None of this means ChatGPT or Claude has no place in the process. The useful move is feeding a model real data instead of asking it to invent data. Export your actual Search Console queries, paste in a PageSpeed Insights report, and ask the model to help you prioritize among numbers that are already true. Real data in, useful help out.
That's interpretation rather than detection, and it's a legitimate use of the tool. The mistake is asking a model to report on things it was never given the ability to observe.
How I use Claude in an SEO workflow
The workflow that works looks nothing like pasting in a URL and asking for an audit. It starts with real exports: a Search Console query report, a crawl from Screaming Frog's free version, a PageSpeed Insights run. Feed those into Claude or ChatGPT as data rather than a starting point for guessing, and ask it to prioritize, group, or spot patterns across rows that would take longer to scan by hand.
That's a useful application, because these models are good at spotting patterns across a spreadsheet of real numbers. I've written up the specific version of this that I use day to day, including which exports I pull and how I prompt around them, in how I use Claude for SEO. It's the same distinction as everything else in this post: interpreting real data is a legitimate use of AI, and inventing data dressed up as an audit isn't.
The two real, free checks worth running instead of a chat-only audit are a proper site-speed audit and an actual link audit. How to read a PageSpeed Insights report covers the performance half, and free backlink checkers cover the link half. Between the two, plus Search Console itself, you get a real audit a chat model can't produce on its own. The Free Tool archive has more of these, and the free Google test is a fast complementary check if you want a baseline reading before going deeper on any one piece. If you'd rather have all of that condensed into a single scorecard instead of running each check separately, the free SEO report tool does that in one pass.
The honest way to combine free tools
Pull real numbers first: index coverage and query data from Search Console, a live Lighthouse run from PageSpeed Insights, and a full crawl from a free crawler. Only after that data exists does it make sense to bring in a chat model, and only to help you read and rank what you already collected. Data first.
That order matters more than which tools you pick. Skip it, and a chatgpt seo audit will hand you a plausible-sounding report built on nothing it looked at.
It's worth checking specific URLs directly, too. Search Console's URL inspection tool will tell you, for one exact address, whether Google has it indexed, when it was last crawled, and why it was excluded if it wasn't. That's a direct answer from the index itself rather than an inference, and it settles arguments a chat model can only speculate about. Use it.
