A professional SEO audit is a long document that takes weeks to produce and usually ends in a proposal. Most of what it finds, you can find yourself in half an hour with tools that cost nothing.
This is not because the professional version is padding. It is because the first thirty minutes of any audit catch the problems that account for most of the damage, and those problems are visible in free tools. What follows is that first thirty minutes, timed, with a note on what each check can and cannot tell you.
You need a Google account with Search Console set up for your site. If you do not have that, set it up first; the data takes a few days to populate.
Minute 0 to 6: Is Google Indexing the Site?
Open Search Console and go to the Page indexing report.
This report shows, in Google's words, "how many URLs on your site have been crawled and indexed by Google," split into indexed and not indexed, with a reason for each excluded page. The reasons that matter most for a small site are listed in Google's documentation (https://support.google.com/webmasters/answer/7440203):
-
Crawled - currently not indexed: Google visited and chose not to keep the page. Usually a quality or duplication signal.
-
Discovered - currently not indexed: Google knows the URL exists and has not fetched it yet. Common on new or slow sites.
-
Excluded by noindex tag: The page is telling Google to stay out. Fine for a thank-you page, alarming for a service page.
-
Duplicate without user-selected canonical: Two URLs with the same content and no instruction about which is the real one.
Compare the indexed count to the number of pages you believe you have. If you have 40 pages and 12 are indexed, that gap is your first finding.
What it can tell you: Which pages Google has, and why it dropped the rest.
What it cannot tell you: Anything about a specific page's status with certainty. Google says the report "isn't used to investigate the index status of specific pages"; for that, use the URL Inspection tool at the top of Search Console.
Minute 6 to 12: Is Anyone Clicking?
Still in Search Console, open the Performance report. Set the date range to the last three months.
The report shows four numbers, defined in Google's documentation (https://support.google.com/webmasters/answer/7576553): clicks, impressions, click-through rate, and average position of your topmost result. Look at three things:
-
Queries with high impressions and low clicks. You are showing up and being ignored. Usually a title problem, addressed below.
-
Queries in positions 5 to 15. Close enough that a better page could move them.
-
Pages with zero impressions. Indexed but never shown. Either nobody searches for what they cover, or they cover it badly.
What it can tell you: Which queries already bring you traffic and where you are close.
What it cannot tell you: What you will see if you search yourself. Google notes that results are "specific to the time, place, device, and recent history of the person searching," so your own search is not a test. It also cannot tell you why a page ranks where it does; it reports the outcome, not the cause.
Minute 12 to 17: Is the Site Fast Enough?
Open PageSpeed Insights (https://pagespeed.web.dev) and enter your homepage, then your most important service page.
The Core Web Vitals thresholds, from web.dev (https://web.dev/articles/vitals), are:
| Metric | What it measures | Good |
|---|---|---|
| Largest Contentful Paint (LCP) | When the main content appears | 2.5 seconds or less |
| Interaction to Next Paint (INP) | How fast the page responds to taps and clicks | 200 milliseconds or less |
| Cumulative Layout Shift (CLS) | How much the layout jumps around while loading | 0.1 or less |
Google measures these at the 75th percentile of real page loads, on mobile and desktop separately, so a page passes only if three-quarters of visits hit all three targets.
PageSpeed Insights shows two kinds of data, and the difference matters. Field data comes from real visitors over the previous weeks. Lab data comes from a simulated load on one device. Google's documentation (https://developers.google.com/speed/docs/insights/v5/about) is direct about which to trust: "having good lab data does not necessarily mean real-user experiences will also be good." If the field section is empty, your site does not have enough traffic for Google to report on it, and the lab score is all you have.
What it can tell you: Whether real visitors are experiencing a slow or unstable page, and the top few technical causes.
What it cannot tell you: How much speed affects your rankings. Core Web Vitals are one signal among many. A slow page with good content usually outranks a fast page with nothing on it. Fix the red items; do not chase a perfect score.
Minute 17 to 21: Are You Accidentally Blocking Anything?
Open yoursite.com/robots.txt in a browser. It is a plain text file.
Look for Disallow: / under User-agent: *. That blocks everything, and it is a common leftover from a staging site. Then look for named user agents. If you want to appear in AI answers, GPTBot, OAI-SearchBot, PerplexityBot and ClaudeBot should not be disallowed.
Two clarifications from Google's robots.txt guidance (https://developers.google.com/search/docs/crawling-indexing/robots/intro). First, robots.txt is mainly for managing crawl traffic, and it is "not a mechanism for keeping a web page out of Google." Second, if you want a page out of the index, the tool is a noindex tag, not a robots rule. A page blocked in robots.txt can still be indexed from links elsewhere, with no description.
Now open yoursite.com/sitemap.xml. If it loads and lists your real pages, submit it in Search Console under Sitemaps if you have not already. If it 404s, you may not need one: Google's sitemap overview (https://developers.google.com/search/docs/crawling-indexing/sitemaps/overview) says a site of "about 500 pages or fewer" with good internal linking can usually be discovered without one. A sitemap helps most when the site is new, large, or poorly linked.
What it can tell you: Whether crawlers are permitted to read the site, and whether you have handed Google a map.
What it cannot tell you: Whether crawlers can actually read what they fetch. That is the next check.
Minute 21 to 24: Can Crawlers Read the Pages?
In Terminal on a Mac, or PowerShell on Windows, run:
curl -A "GPTBot" yoursite.com | wc -w
This fetches your homepage as an AI crawler would and counts the words. Under 50 means crawlers that do not execute JavaScript are receiving an empty shell. The full explanation, and the fix, is in our AI search visibility check (https://nibunam.ai/blog/ai-search-visibility-check).
This matters for Google too, less severely. Google renders JavaScript, but its documentation describes rendering as a queued phase where a page "may stay on this queue for a few seconds, but it can take longer than that."
What it can tell you: Whether the text on your pages is in the HTML or assembled later by a script.
What it cannot tell you: Whether the text is any good.
Minute 24 to 28: Are the Titles Doing Their Job?
Open your five most important pages. For each, look at the browser tab title and the main heading on the page.
Google's title link guidance (https://developers.google.com/search/docs/appearance/title-link) asks for titles that are "descriptive and concise," warns against vague labels like "Home," and says every page should have "distinct text that describes the content of the page." Repeating the same phrase several times does not help. If a title does not match the page, Google may rewrite it in results, which is how you end up with a search listing you did not write.
The quick test: read the title alone, with no page. Can you tell what the page is about and who it is for? "Services" fails. "Bookkeeping for Restaurants in Denver" passes.
Check that each page has exactly one H1 and that it agrees with the title. Two H1s or an H1 that says something different confuses the hierarchy, which is one of the reasons Google's documentation gives for rewriting titles.
What it can tell you: Whether your search listings are clear enough to earn the click that the Performance report says you are missing.
What it cannot tell you: Which words to use. That comes from the queries in the Performance report, not from guessing.
Minute 28 to 30: Can a Visitor Get from Any Page to Any Other?
Pick your least important page, one that is three or four clicks from the homepage. Count the internal links pointing to it. If the answer is zero, or one from the navigation, that page is an orphan as far as crawlers are concerned, and it will be slow to index and slow to rank.
What it can tell you: Whether the site's structure spreads authority to the pages that need it.
What it cannot tell you: Which pages deserve that authority. That is a business decision, not a technical one.
What Thirty Minutes Does Not Cover
This audit does not tell you which keywords to target, what your competitors are doing, whether your content is good enough to rank, or how you appear in AI answers beyond whether crawlers can read you.
Those questions need data this checklist does not produce. Search IQ (https://nibunam.ai/search-iq) runs the technical checks above alongside keyword and AI-search visibility analysis, and the first three reports are free. For the AI side specifically, our AI Overviews article (https://nibunam.ai/blog/optimize-for-google-ai-overviews) covers what the Performance report now includes.
Questions
Do I need paid SEO tools for this?
No. Everything here uses Search Console, PageSpeed Insights, a browser and a terminal. Paid tools add keyword volumes, competitor data and backlink analysis, which are useful but are not an audit of your own site.
My PageSpeed score is 40. Is that an emergency?
Look at the field data, not the score. If real visitors are hitting the Core Web Vitals thresholds, the lab score is a lower priority. If the field section shows red on LCP or INP, fix the top two items PageSpeed lists and re-test.
Search Console shows pages I deleted years ago. Why?
Google keeps trying URLs it once knew about. If they return a proper 404 or 410, they will eventually drop out. If they redirect to the homepage, Google may treat that as a soft error and keep listing them.
How often should I repeat this?
Quarterly for the full checklist. Monthly for the Performance report, which is where change actually shows up.
