Four numbers sat on one page of a site I run. Nine dollars, twelve, eighteen, twenty-five, a little impact ladder, the kind every donation page has. None of them were sourced. And the page next to it, the one meant to back them up, told a different story entirely. Nobody had lied on purpose. The numbers had just been written at different times, by different drafts of the same good intention, and nobody had ever put them side by side.
That's the finding that stopped me. Not a broken link, not a 404. A site that looked entirely finished, telling two different truths about itself, thirty seconds apart for anyone who clicked twice.
The audit tools miss the thing that actually costs you
I operate out of Sheridan, Wyoming, and everything I run has a website that has to do real work: take a booking, answer a donor's question, convince someone I've never met that the thing I'm selling is real. At some point this year I ran the kind of audit most people run when they suspect their site has gone stale: broken links, page speed, meta descriptions, the usual list. It came back clean. The site was fast, the links worked, nothing 404'd.
It was also, in three separate places, telling a version of the truth that wasn't quite true. A stat with no source. A button that looked like it computed something and didn't. A claim on one page that a different page quietly contradicted. None of that shows up on a broken-link report, because none of it is broken. It's worse than broken. It's a site performing competence it hasn't actually built yet, and the only way to catch it is to read the site the way a skeptical visitor does, not the way a crawler does.
So I built a different kind of audit, and ran it against my own sites first, because I wasn't going to hand a client a standard I hadn't held myself to. What follows is the checklist that came out of it: not theory, the actual categories that caught actual gaps on actual sites I'm responsible for.
The difference between broken and dishonest
Every page on a site falls into one of a few honest categories, and naming them is most of the work. Functional means the page does exactly what it says. Partial means it works, but a specific promise on it goes unmet. Stub means there's a real interface (a form, a button, a calculator) with nothing behind it. Vapor means the page describes a capability that doesn't exist at all, present tense, as though it already shipped. And missing is the plain one: a link to a page that was promised and never built.
Most site owners can eyeball functional and missing. Vapor and stub are the ones that hide, because they read exactly like finished work until you try to use them the way a real visitor would. A donation calculator that shows a slider but never returns a number. A "track your request" page with a form and no record of what happens after you submit it. Those pages pass every technical audit ever built, because nothing on them throws an error. They just don't do the thing they claim to do, and the only way to find that is to actually try.
A site that loads fast and lies quietly will still lose the sale. Speed was never the trust problem.
The button that promises a computation it never runs
This is the single highest-value thing to hunt for, and almost nobody does it, because it requires actually clicking rather than crawling. Any button whose label implies work (Calculate, Generate, Estimate, Match, Analyze, Suggest, Instant) is a promise. Click it. If nothing changes, or if what comes back isn't tied to what you entered, that's not a bug report, that's a page telling a visitor it thought about their specific situation when it didn't.
The same test applies to language, not just buttons. "Personalized," "adaptive," "tailored to you," "instant," "for you." Read the page and ask whether it ever actually asked a question before making that claim. "Track," "save," "remember," "log" implies the site kept something. Does it? "Living document," "updated regularly," "growing library" on a page with no visible date is a claim nobody's checking. Every one of these is a sentence a well-meaning person wrote about a feature they meant to build, that got left in place after the feature didn't ship on schedule. It isn't malice. It's just a gap nobody circled back to close.
Numbers that don't agree with themselves
This is the check that caught the donation page. Pull every count, price, rating, and statistic on the whole site into one list, every "40+ properties," every "95% satisfaction," every dollar figure, and put them next to each other. Sites accumulate contradictions the same way a house accumulates clutter: not from one bad decision, but from a hundred reasonable ones made at different times without anyone doing a final walk-through. A number on the homepage says one thing. The same number, three clicks deep, says another. Humans rarely catch it, because humans don't read a whole site in one sitting looking specifically for arithmetic that doesn't reconcile. An AI answer engine summarizing your site to someone who's never visited it will absolutely surface whichever number it found first, and it has no way of knowing which one is current.
That last part is the part changing fastest. Search traffic used to be the whole game. Increasingly, the thing standing between a customer and your business is an AI system reading your site once, forming an impression, and repeating that impression to someone who never lands on your page at all. A contradiction that a human visitor might shrug off gets treated by an answer engine as a coin flip about which version of you is real. You don't get to argue with the flip.
The garbage-URL test, and why it matters more than it sounds like it should
Before trusting any page-by-page read of a site, run one sanity check: request a URL that definitely doesn't exist, something like /this-page-is-not-real-93hz, and see what comes back. If it returns the same shell as a real page instead of an honest 404, the entire site is soft-failing, and every other finding underneath that needs an asterisk, because neither a search crawler nor an AI answer engine can tell your real pages from your missing ones either. I've seen this exact failure on a site that looked entirely healthy from the homepage. Every interior page returned the identical empty shell to anything that wasn't a logged-in browser — which meant every crawler, every link preview, and every AI system trying to describe the business saw nothing at all. The site wasn't broken by any test a human running it would think to run. It was invisible to the only readers who don't get to log in first.
The other blind spot in the same family: a slow site loses patience; an empty-shell site loses existence. Nobody complains about a page that renders nothing, because nobody who can't render it ever files the complaint. You have to go looking for the silence.
The trust layer nobody adds until it's asked for
If your site makes any claim that touches someone's health, money, safety, or legal standing, it needs a trust layer most small business sites skip entirely: a named author, a publication date, a reviewer with actual credentials if the topic calls for it, and a link to wherever the underlying fact came from. This isn't a nice-to-have. It's the difference between a site an answer engine is willing to cite and one it quietly routes around, because increasingly what determines whether an AI system trusts a claim enough to repeat it is whether that claim can be traced to a source at all. A number with no date reads, to a machine deciding what to trust, exactly like a number that was never true.
The check that matters most if anyone vulnerable ever lands on your site
Not every business needs this section, but more do than think they do. If your site touches health information, crisis support, veterans' services, or anything where a confused visitor might be at real risk, the completion audit changes its priority order entirely. A broken donation button is an inconvenience. A hotline number that's a year out of date, or a resource page that quietly stopped being maintained, is a different category of failure, and it belongs at the very top of the list: above SEO, above conversion, above every other finding on the page. I hold every site I touch to the same rule: if I wouldn't feel right sending my own family member to a specific page in the state it's currently in, that page gets fixed before anything else does.
The accessibility read belongs in the same pass, and it's usually quick. Can every action on the page be reached without a mouse. Does every image that carries meaning have real alt text, not the filename. Is there enough contrast between the text and the background to read it in bright sun on a phone, which, if your customers are outdoors people the way mine are, is not a hypothetical. None of this takes a specialist. It takes someone willing to actually try using the site the way a visitor who isn't you would have to.
The sequenced fix beats the wishlist
An audit that ends in a list of forty things wrong is a worse deliverable than one that ends in an order. Sprint zero should take an afternoon and require no decisions from anyone: dead links, orphaned pages, the platform badge nobody meant to leave in the footer. Sprint one is ownership and safety: anything touching money, legal claims, or a promise made to a vulnerable visitor. Everything after that is sequenced by what depends on what, not by what feels most urgent that week. The order is most of the value. A business owner who's been handed a report before knows what's wrong. What they don't have is the confidence to start, and a sequence removes that excuse entirely. Step one requires nothing but doing it.
Running it on a business that isn't mine
Picture a fictional outfit I'll call Bighorn Basin Rentals: three cabins, a website built two years ago by whoever was cheapest at the time, never touched since. The homepage says "40+ five-star reviews." The reviews page, when you count it, shows twenty-six. Neither number is a lie exactly — one might be lifetime, one might be current — but nothing on the site says which, and an answer engine summarizing Bighorn Basin to someone searching for a cabin has no way to know either. The booking page has an "instant quote" button that opens a contact form instead of quoting anything instantly. None of this required a redesign to fix. It required someone to click every button once, read every number against every other number, and write down what didn't match.
That's the whole method. Not more tooling. A specific, ordered way of reading your own site the way a stranger who doesn't trust you yet would read it.
The donation page got fixed inside a week once someone actually looked for the mismatch — sourced numbers, dated, matching page to page. Nothing about the site got faster or prettier. What changed is that it stopped making a promise it couldn't back up the moment someone checked. That's a low bar. Most sites clear it by accident on their best pages and fail it quietly on the rest, and nobody finds out which is which until a customer, or increasingly a machine reading on a customer's behalf, goes looking.
I run this checklist against every site I'm responsible for on a schedule now, not because any of them are especially broken, but because "especially broken" was never the bar. The bar is: can a stranger who doesn't trust you yet find a reason to keep trusting you for one more click. Most sites lose that bet somewhere. The value isn't in building a better website. It's in finding out, on your own schedule, before someone else finds out on theirs.
The other thing I've learned running this more than once on the same sites: the findings change even when nobody touched the code. A page that was accurate in June drifts by September because a price changed somewhere and the update didn't propagate everywhere it should have, or a feature that used to be a stub actually got built and the page describing it as coming soon never got updated to say so. A one-time audit is a photograph. The businesses that keep their sites honest treat it as a recurring habit instead. Quarterly is enough for most small sites, monthly if the content changes often, and every re-run gets faster than the last, because the second pass is a diff against the first one, not a cold read of the whole site again.
The full version is the Website Honesty Audit Pack: the complete category list, honesty_scan.py — the crawler that runs this checklist against your own site automatically and flags a client-rendered shell instead of scoring it clean the way a normal scanner would — the exact phrases to search your site for, and the sequencing template that turns findings into a runbook someone can actually execute. Checkout isn't live yet. Leave your email below and I'll send the link the day it is.
Built and operated by Dalton Goodyear. Drafted with AI assistance, reviewed and published by a human. Examples use synthetic data.
Anything here about money or results describes my own companies. It isn't typical and isn't a promise of yours. See the earnings disclaimer.
DG
Dalton Goodyear
Operator, writer and speaker in Sheridan, Wyoming. Hosting short-term rentals since 2017. Licensed Wyoming real estate broker and founder of Wyo Stays.