Free technical SEO audit
Enter a domain to crawl the whole website, or a page URL to audit just that page. SEOWay runs 52 checks on every page and ranks what it finds by severity.
All 52 checks
Every check SEOWay runs, the severity it carries and the area it belongs to. Open a check to read why it matters and how to fix it.
Crawlability (12)
-
Error Page returns a 4XX or 5XX status code
Why it matters. Search engines drop pages that answer with an error status. A 4XX says the page is gone; a 5XX says the server failed, and repeated 5XX responses slow down crawling of the whole site.
How to fix it. Restore the page or 301-redirect it to the closest live equivalent. For 5XX errors, check the server error log for the failing request and fix the cause, then recrawl.
-
Error Redirect chain or loop before the final page
Why it matters. Every extra hop costs crawl budget and response time, and Google stops following after a handful of hops. A loop means the page can never be reached at all.
How to fix it. Point every old URL straight at the final destination with a single 301, and update internal links to use the final URL so no redirect is needed.
-
Error Page is blocked from indexing (noindex)
Why it matters. A noindex directive in the robots meta tag or the X-Robots-Tag header removes the page from search results, however good the content is.
How to fix it. Remove noindex from the robots meta tag or X-Robots-Tag header if the page should rank. In WordPress, also check the SEO plugin's per-page setting and Settings > Reading > Search engine visibility.
-
Warning No canonical tag
Why it matters. Without a canonical, search engines guess which version of a URL to index when parameters, trailing slashes or tracking codes create duplicates.
How to fix it. Add <link rel="canonical" href="..."> inside the head, pointing to the absolute, preferred URL of this page.
-
Error Conflicting canonical signals
Why it matters. When a page declares more than one canonical, or places it outside the head, search engines ignore all of them and choose a version on their own.
How to fix it. Keep exactly one canonical tag inside <head>, and make sure any canonical sent in the HTTP Link header points to the same URL. Duplicates usually come from a theme and an SEO plugin both printing one.
-
Error Broken canonical URL
Why it matters. A canonical that is empty, malformed, contains a #fragment or points to the HTTP version of an HTTPS page sends a signal search engines cannot use, or sends them to the wrong URL.
How to fix it. Use an absolute https:// URL with no fragment that loads with a 200 status.
-
Notice Canonical points to a different URL
Why it matters. This page tells search engines that another URL is the main version, so this one is unlikely to be indexed. That is right for duplicates and a costly mistake on a unique page.
How to fix it. If this page has its own content, make the canonical self-referencing. If it is a duplicate, leave it and make sure internal links point to the canonical URL.
-
Error robots.txt blocks this page
Why it matters. Googlebot will not fetch a URL that robots.txt disallows, so its content is never read. A robots.txt that returns a 5XX error makes Google pause crawling the whole site.
How to fix it. Remove or narrow the Disallow rule that matches this path, or add a more specific Allow rule. Make sure robots.txt itself returns 200 or 404, never 5XX.
-
Notice robots.txt missing or invalid
Why it matters. A missing robots.txt is not fatal, but it is the standard place to point crawlers at your sitemap. One that serves an HTML page or unknown directives can be misread.
How to fix it. Serve a plain-text robots.txt at the site root with valid User-agent, Allow, Disallow and Sitemap lines. WordPress and most SEO plugins generate one automatically.
-
Warning No XML sitemap found
Why it matters. A sitemap helps search engines discover new and deep pages faster, and gives Search Console a list to report indexing coverage against.
How to fix it. Publish an XML sitemap (WordPress creates /wp-sitemap.xml and SEO plugins create /sitemap_index.xml), list it in robots.txt and submit it in Google Search Console.
-
Warning Sitemap not listed in robots.txt
Why it matters. Crawlers other than Google read robots.txt to find the sitemap. Leaving it out means some engines never see it.
How to fix it. Add a line such as Sitemap: https://example.com/sitemap.xml to robots.txt, using the absolute URL.
-
Notice URL is hard to read or share
Why it matters. Uppercase letters, underscores, spaces and long query strings create duplicate variants and make URLs harder to read in results and harder to link to.
How to fix it. Use short, lowercase, hyphen-separated paths. If you change a URL, 301-redirect the old one to the new one.
Content (8)
-
Warning Low word count
Why it matters. Pages with very little text give search engines and answer engines little to understand or quote, and often read as thin content.
How to fix it. Expand the main content so it fully answers the query the page targets. Aim for at least 300 words of useful text on pages meant to rank.
-
Warning Thin text-to-HTML ratio
Why it matters. When markup, scripts and inline styles outweigh the readable text, pages load slower and the content signal is diluted.
How to fix it. Move inline CSS and JavaScript into cached files, remove unused markup and page-builder wrappers, and add substantive text.
-
Warning Missing H1 heading
Why it matters. The H1 is the strongest on-page signal of what the page is about, for search engines and for people using screen readers.
How to fix it. Add one H1 near the top of the main content that states the page topic in plain words.
-
Notice More than one H1 on the page
Why it matters. Several H1s blur the main topic. Often a logo or a theme widget is wrapped in an H1 by mistake.
How to fix it. Keep one H1 for the main topic and change the others to H2 or plain text.
-
Notice Heading levels are skipped
Why it matters. Jumping from H2 straight to H4 breaks the outline that assistive technology and parsers use to understand how sections relate.
How to fix it. Use headings in order: H2 for sections, H3 for subsections. Style them with CSS instead of choosing a level for its size.
-
Warning Images without alt attributes
Why it matters. Without alt text, images are invisible to screen readers and image search, and the page loses context that helps it rank.
How to fix it. Add a short, descriptive alt attribute to each meaningful image. Use alt="" for purely decorative images so screen readers skip them.
-
Warning Placeholder text left on the page
Why it matters. Dummy filler text tells visitors and quality reviewers the page is unfinished, and adds words that mean nothing.
How to fix it. Replace the placeholder text with real copy, or remove the block if it is not needed.
-
Notice Content looks out of date
Why it matters. An old copyright year tells visitors the site may not be maintained, which lowers trust and click-through.
How to fix it. Update the copyright year, or generate it automatically, and refresh any dated statements in the content.
Meta tags (12)
-
Error Missing or empty title tag
Why it matters. The title tag is the main headline in search results. Without it, search engines write their own, usually badly.
How to fix it. Add a unique <title> in the head that names the page topic in about 30 to 60 characters.
-
Error More than one title tag
Why it matters. With several title tags, search engines may pick the wrong one. It usually happens when a theme and an SEO plugin both print a title.
How to fix it. Keep exactly one <title>. In WordPress, let the SEO plugin own the title and remove the hard-coded one from the theme header.
-
Warning Title is too short
Why it matters. A very short title wastes the most visible space in search results and rarely includes the terms people search for.
How to fix it. Write a descriptive title of roughly 30 to 60 characters that includes the main topic and, where it fits, the brand.
-
Warning Title will be truncated
Why it matters. Google cuts titles at around 60 characters, so the end of a long title, often the part that earns the click, is hidden.
How to fix it. Keep the title under about 60 characters and put the most important words first.
-
Warning Missing meta description
Why it matters. Without a description, search engines pull a snippet from somewhere on the page, which often reads poorly and lowers clicks.
How to fix it. Add a meta description of 70 to 160 characters that summarises the page and gives a reason to click.
-
Notice Meta description length is off
Why it matters. Descriptions under 70 characters waste the snippet, and those over 160 are cut off mid-sentence.
How to fix it. Rewrite the description to between 70 and 160 characters.
-
Warning No character encoding declared
Why it matters. Without a declared charset, browsers guess the encoding and can render accented letters and symbols as garbage.
How to fix it. Add <meta charset="utf-8"> as the first element inside <head>.
-
Warning Missing doctype
Why it matters. Without <!doctype html>, browsers fall back to quirks mode, which changes layout rules and can break rendering.
How to fix it. Make <!doctype html> the very first line of the document.
-
Warning No lang attribute on the html element
Why it matters. The lang attribute tells browsers, screen readers and search engines which language the page is in. It affects pronunciation, translation prompts and regional targeting.
How to fix it. Add the language code to the opening tag, for example <html lang="en">.
-
Warning Missing or incorrect viewport tag
Why it matters. Without a responsive viewport, phones render the page at desktop width, and Google indexes the mobile version of every page first.
How to fix it. Add <meta name="viewport" content="width=device-width, initial-scale=1"> to the head.
-
Notice Open Graph tags incomplete
Why it matters. When og:title, og:description or og:image is missing, links shared on LinkedIn, WhatsApp, Facebook and Slack show a bare or wrong preview.
How to fix it. Add og:title, og:description and og:image (1200 by 630 pixels works everywhere). Most SEO plugins generate these.
-
Warning Duplicate titles and descriptions across the site Site crawl
Why it matters. When many pages share a title or description, search engines struggle to tell them apart and may index only one of them.
How to fix it. Give every indexable page its own title and meta description that says what is different about it. Run a whole-site audit to list every duplicate group with the pages that share it.
Links (6)
-
Warning Malformed or non-crawlable links
Why it matters. Links with spaces, broken schemes, javascript: or an empty href cannot be followed by crawlers, so they pass no authority and lead nowhere.
How to fix it. Use real <a href> URLs for navigation. Encode spaces, fix the scheme to https://, and use a <button> for actions that run script.
-
Notice Links with no anchor text
Why it matters. A link with no text and no accessible label tells neither people nor search engines where it goes. Icon-only links are the usual cause.
How to fix it. Add visible text, an aria-label, or alt text on the image inside the link.
-
Notice Generic anchor text
Why it matters. Phrases like "click here" and "read more" waste the strongest relevance signal a link carries and mean nothing out of context.
How to fix it. Rewrite the anchor to describe the destination, for example "read the pricing guide" instead of "read more".
-
Notice nofollow on editorial external links
Why it matters. Adding nofollow to sources you chose to cite makes the page look less trustworthy and gives readers no extra protection.
How to fix it. Remove nofollow from links you editorially endorse. Use rel="sponsored" for paid links and rel="ugc" for user-submitted ones.
-
Notice Very high number of links
Why it matters. Hundreds of links on one page dilute the value each one passes and make the important ones harder to find.
How to fix it. Trim mega-menus and footer link blocks, and keep the links that help the reader take the next step.
-
Error Broken internal links across the site Site crawl
Why it matters. Internal links that lead to 404 pages waste crawl budget and leave visitors at dead ends.
How to fix it. Run a whole-site audit to see each broken link and the page it sits on, then update the link to a working URL or 301-redirect the missing page to its closest live equivalent.
HTTPS (4)
-
Error Page is not served over HTTPS
Why it matters. Browsers mark HTTP pages as not secure, HTTPS is a confirmed ranking signal, and forms on HTTP pages expose what visitors type.
How to fix it. Install a TLS certificate (free from your host or Let's Encrypt), then 301-redirect every HTTP URL to its HTTPS version.
-
Error Mixed content on an HTTPS page
Why it matters. Scripts, styles, images or forms loaded over HTTP on an HTTPS page are blocked or flagged by browsers, which breaks layouts and removes the padlock.
How to fix it. Change every http:// resource URL to https:// or a relative path. In WordPress, update both site URLs and run a search-replace on the database.
-
Warning HTTP version does not redirect to HTTPS
Why it matters. If http:// still loads without redirecting, search engines can index two copies of the site and visitors can land on the insecure one.
How to fix it. Add a site-wide 301 redirect from http:// to https:// at the server or in your host's control panel.
-
Notice No HSTS header
Why it matters. Strict-Transport-Security tells browsers to always use HTTPS, closing the gap where a first visit over HTTP can be intercepted.
How to fix it. Send Strict-Transport-Security: max-age=31536000 once HTTPS works across the whole site. Add includeSubDomains only when every subdomain supports HTTPS.
Performance (4)
-
Warning Slow server response
Why it matters. A slow response delays everything else on the page, hurts Largest Contentful Paint and limits how many pages Google crawls.
How to fix it. Turn on full-page caching, put a CDN in front of the site, and look for slow plugins or database queries. The time is measured from SEOWay's server and includes any redirects.
-
Warning HTML is not compressed
Why it matters. Uncompressed HTML is often three to five times larger than it needs to be, which slows every page view on mobile connections.
How to fix it. Enable gzip or Brotli compression on the server or CDN. Most hosts offer it as a single setting.
-
Notice Render-blocking scripts in the head
Why it matters. Scripts in the head without async or defer stop the browser from drawing the page until each one downloads and runs.
How to fix it. Add defer to scripts that are not needed for the first paint, or move them to the end of the body.
-
Notice Images without width and height
Why it matters. Without dimensions the browser cannot reserve space, so content jumps as images load. That jump is measured as Cumulative Layout Shift.
How to fix it. Add width and height attributes that match each image's aspect ratio, and size the images responsively with CSS.
AI search readiness (6)
-
Error Invalid structured data
Why it matters. JSON-LD that fails to parse, or lacks @context or @type, is ignored completely, so rich results and entity understanding are lost.
How to fix it. Run each JSON-LD block through Google's Rich Results Test, fix syntax errors such as trailing commas, and give every item @context and @type.
-
Notice No structured data
Why it matters. Structured data tells search engines and answer engines exactly what the page describes: an organisation, a product, an article, a set of questions.
How to fix it. Add JSON-LD for the main entity of the page, such as Organization on the homepage and Article on posts. Most SEO plugins can output it.
-
Notice Low use of semantic landmarks
Why it matters. Landmark elements (header, nav, main, article, footer) tell parsers and AI crawlers which part of the page is the content and which is navigation.
How to fix it. Wrap the primary content in <main>, use <article> for posts, and use <header>, <nav> and <footer> for the page frame instead of generic divs.
-
Notice No llms.txt file
Why it matters. llms.txt is an emerging convention that gives AI assistants a curated map of your most important pages. It is cheap to add and helps answer engines find the right sources.
How to fix it. Publish a Markdown file at /llms.txt with the site name as an H1, a one-line summary in a blockquote, and sections of links to your key pages.
-
Notice llms.txt does not follow the format
Why it matters. The format expects an H1 title first and Markdown links to key pages. Without them, tools that read the file cannot use it.
How to fix it. Start the file with "# Site name", add a "> short summary" line, then list pages as "- [Title](https://url): note" under H2 sections.
-
Notice AI answer-engine crawlers are blocked
Why it matters. robots.txt blocks the crawlers that fetch pages for AI search answers, so assistants such as ChatGPT search, Perplexity and Claude cannot read or cite this page.
How to fix it. If you want to appear in AI answers, allow OAI-SearchBot, ChatGPT-User, PerplexityBot, Perplexity-User, Claude-SearchBot and Claude-User. Training crawlers such as GPTBot can stay blocked separately.
How the health score works
Each check carries a weight by severity: errors count 5, warnings 2 and notices 1. A page's score is the weighted share of checks that passed, out of 100. In a single-page audit, the two site-wide checks are listed but left out of the score.
In a whole-site audit, the site score is the average score of every crawled page. Broken internal links cap it at 89, and a start page that cannot be indexed caps it at 40.
Two caps keep the number honest. Any error holds the score at 89 or below, because a page with an error is not in good health however many small checks it passes. And if the page cannot be indexed at all (an error status, a redirect loop, noindex, or a robots.txt block), the score is capped at 40.
Response time is measured from SEOWay's server and includes redirects, so treat it as a guide rather than a lab measurement. For field data, use the Core Web Vitals report in Google Search Console.