SEO check reference
Every check CrawlX runs
162 technical checks across 18 categories. Each one has its own page explaining what it detects, why it matters, and how to fix it.
A crawl reports findings, not opinions: every finding here comes from a check with a stated threshold and an authoritative source behind it. Checks are grouped by what they examine, and each is labelled with the severity it reports and how much human judgement its fix needs.
The three fixability classes
- Auto-fixable. A codemod can place the change and a guardrail can verify it — a missing canonical, an absent viewport tag, an empty alt attribute. These are the findings CrawlX can open as a pull request.
- Needs review. The machine can draft the change, but a human has to approve the wording or the target: rewriting a duplicate title, choosing which of two near-identical pages survives.
- Developer fix. The change is a routing, hosting or infrastructure decision — a redirect chain, a missing security header, a slow origin. No safe automatic edit exists.
Severity is the level the check reports by default. Where it says Varies, the check picks a level from the evidence — a 404 is critical, a 403 that only blocked the crawler is not.
Indexability
10 checksCanonical points to a different URL
index_canonical_mismatchMediumNeeds reviewContent depends on JavaScriptrender_js_dependentHighDeveloper fixMissing canonical tagindex_canonical_missingMediumAuto-fixableNoindexed page is still earning impressionsgsc_traffic_to_noindexCriticalNeeds reviewNoindexed page still receives internal linksindex_noindex_with_inlinksMediumNeeds reviewPage is noindexed by an X-Robots-Tag headerindex_noindex_headerCriticalDeveloper fixPage is set to noindexindex_noindexInfoNeeds reviewPage-level nofollow blocks link discoveryindex_nofollow_pageMediumNeeds reviewSearch Console traffic to a page that returns an errorgsc_traffic_to_errorCriticalDeveloper fixServing directives suppress rich resultsindex_noarchive_nosnippetLowNeeds reviewCrawlability
4 checksPage could not be analyzed
crawl_not_analyzedMediumDeveloper fixrobots.txt blocks CSS or JavaScript filesrobots_blocks_css_jsHighDeveloper fixrobots.txt disallows the entire siterobots_disallows_everythingCriticalDeveloper fixrobots.txt state could not be establishedrobots_unreachableHighDeveloper fixRedirects
5 checksLong redirect chain (3+ hops)
redirect_chain_longHighDeveloper fixPage uses a meta refresh redirectindex_meta_refreshMediumDeveloper fixRedirect lands on an error pageredirect_to_errorCriticalDeveloper fixRedirect loopredirect_loopCriticalDeveloper fixTemporary redirect to a permanent destinationredirect_temporaryMediumDeveloper fixSitemaps
13 checksIndexable pages are missing from the sitemap
sitemap_missing_crawled_pagesMediumDeveloper fixNo sitemap foundsitemap_absentHighNeeds reviewNoindexed page is listed in the sitemapindex_noindex_in_sitemapHighNeeds reviewPage earning impressions is absent from the sitemapgsc_indexed_not_in_sitemapMediumNeeds reviewSitemap exceeds 50,000 URLssitemap_too_many_urlsHighDeveloper fixSitemap exceeds 50MB uncompressedsitemap_too_largeHighDeveloper fixSitemap is not declared in robots.txtsitemap_not_in_robotsLowDeveloper fixSitemap lastmod is in the futuresitemap_lastmod_futureLowDeveloper fixSitemap lastmod is not a valid datesitemap_lastmod_invalidLowDeveloper fixSitemap lists a noindexed pagesitemap_url_noindexHighNeeds reviewSitemap lists a non-canonical URLsitemap_url_non_canonicalMediumNeeds reviewSitemap lists a URL that does not return 200sitemap_url_not_200CriticalDeveloper fixSitemap lists a URL that redirectssitemap_url_redirectsHighDeveloper fixCanonicalization
10 checksCanonical is not an absolute URL
index_canonical_relative_malformedMediumNeeds reviewCanonical points to a different hostindex_canonical_cross_hostHighNeeds reviewCanonical points to a noindexed pageindex_canonical_to_noindexHighNeeds reviewCanonical points to a redirectindex_canonical_chainHighNeeds reviewCanonical points to an error pageindex_canonical_to_errorCriticalNeeds reviewClicks arriving at a page that canonicalises elsewheregsc_traffic_to_non_canonicalHighNeeds reviewHTTP header and HTML canonical disagreeindex_canonical_conflictHighDeveloper fixInconsistent www / non-www redirectsredirect_www_inconsistentMediumDeveloper fixThe same page is served on both http and httpshost_http_and_https_both_200CriticalDeveloper fixThe same page is served on both www and the bare domainhost_www_and_apex_both_200CriticalDeveloper fixMeta Data
14 checksClick-through rate far below the norm for the ranking
gsc_low_ctr_for_positionMediumNeeds reviewMany impressions and no clicks at allgsc_high_impressions_no_clicksMediumNeeds reviewMeta description is a copy of the title tagcontent_desc_equals_titleMediumNeeds reviewMeta description too longmeta_desc_longLowAuto-fixableMeta description too shortmeta_desc_shortLowAuto-fixableMissing meta descriptionmeta_desc_missingHighAuto-fixableMissing og:image tagsocial_og_image_missingLowNeeds reviewMissing Open Graph tagssocial_og_missingLowAuto-fixableMissing title tagmeta_title_missingCriticalAuto-fixableMissing twitter:card tagsocial_twitter_card_missingLowAuto-fixableMissing viewport meta tagmeta_viewport_missingHighNeeds reviewTitle is likely to be truncated in search resultscontent_title_truncation_riskLowNeeds reviewTitle tag too longmeta_title_longLowAuto-fixableTitle tag too shortmeta_title_shortMediumAuto-fixableHeadings
7 checksDuplicate H1 on another page
duplicate_h1MediumNeeds reviewH1 heading too longheading_h1_longLowNeeds reviewH1 heading too shortheading_h1_shortLowNeeds reviewH1 is identical to the title tagheading_h1_matches_titleLowNeeds reviewMissing H1 headingheading_h1_missingCriticalAuto-fixableMultiple H1 headingsheading_h1_multipleMediumNeeds reviewNo H2 subheadingsheading_h2_missingMediumNeeds reviewContent
10 checksBody copy is mostly repeated words
content_boilerplate_ratioLowNeeds reviewDuplicate meta descriptionduplicate_meta_descriptionMediumAuto-fixableDuplicate title tagduplicate_titleHighAuto-fixableNear-duplicate contentcontent_near_duplicateVariesNeeds reviewNo text content foundcontent_emptyCriticalNeeds reviewPlaceholder text is live on the pagecontent_placeholder_textHighNeeds reviewPossible keyword stuffingcontent_keyword_stuffingMediumNeeds reviewSeveral of your own pages compete for one querygsc_cannibalisationHighNeeds reviewThin contentcontent_thinHighNeeds reviewTitle keywords missing from the bodycontent_title_keywords_missingMediumNeeds reviewLinks
12 checksExternal links missing rel=noopener
links_external_no_noopenerLowAuto-fixableGeneric anchor textlinks_generic_anchorLowNeeds reviewInternal links point at error pageslinks_to_errorHighNeeds reviewInternal links point at noindexed pageslinks_to_noindexLowNeeds reviewInternal links point at redirectslinks_to_redirectMediumNeeds reviewLinks with empty anchor textlinks_empty_anchorMediumNeeds reviewMost internal links are nofollowlinks_high_nofollow_internalMediumNeeds reviewNo internal links on the pagelinks_no_internalHighNeeds reviewOnly one internal link points herelinks_few_inlinksInfoNeeds reviewOrphan pagelinks_orphan_pageHighNeeds reviewSitemap URL has no internal linksindex_orphan_in_sitemapMediumNeeds reviewToo many links on one pagelinks_too_manyMediumNeeds reviewImages
6 checksImage not in a next-gen format
resource_image_not_optimizedMediumDeveloper fixImage over 1 MBresource_image_largeHighDeveloper fixImages are served at one fixed sizemedia_no_srcsetMediumNeeds reviewImages missing alt textimages_alt_missingVariesNeeds reviewImages missing width and heightimages_dimensions_missingMediumNeeds reviewImages use legacy formatsmedia_legacy_formatMediumNeeds reviewPerformance
24 checksCritical Cumulative Layout Shift
cwv_cls_criticalCriticalDeveloper fixCritical Largest Contentful Paintcwv_lcp_criticalCriticalDeveloper fixFirst content image is lazy-loadedmedia_lazy_lcp_imageMediumNeeds reviewHTML response is not compressedperf_no_compressionMediumDeveloper fixLarge pageperf_moderate_pageMediumDeveloper fixLikely hero image is not preloadedmedia_no_lcp_preloadLowNeeds reviewModerate First Contentful Paintcwv_fcp_poorMediumDeveloper fixModerate server response timeperf_moderate_responseMediumDeveloper fixOver 10 render-blocking resourcesrender_blocking_criticalHighDeveloper fixOversized resourceresource_oversizedHighDeveloper fixPage is excessively heavyperf_excessive_domMediumDeveloper fixPoor Cumulative Layout Shiftcwv_cls_poorHighDeveloper fixPoor Largest Contentful Paintcwv_lcp_poorHighDeveloper fixResponse declares no caching policyperf_no_cache_headersLowDeveloper fixSeveral render-blocking resourcesrender_blocking_warningMediumDeveloper fixSlow First Contentful Paintcwv_fcp_criticalHighDeveloper fixSlow server response timeperf_slow_responseCriticalDeveloper fixSlow Time to First Bytecwv_ttfb_poorMediumDeveloper fixUn-minified CSS fileresource_css_not_minifiedLowDeveloper fixUn-minified JavaScript fileresource_js_not_minifiedLowDeveloper fixUnusually fragmented JavaScriptperf_too_many_scriptsLowDeveloper fixVery large pageperf_large_pageHighDeveloper fixVery low text-to-HTML ratiocontent_low_text_ratioInfoDeveloper fixWeb font loads without a font-display strategymedia_font_display_missingLowNeeds reviewJavaScript Rendering
6 checksBody content only exists after JavaScript rendering
js_content_only_renderedHighDeveloper fixCanonical URL changes when JavaScript runsjs_canonical_differs_renderedCriticalDeveloper fixInternal links only exist after JavaScript runsjs_links_only_renderedHighDeveloper fixInternal links use hash-based routingjs_hash_routingMediumDeveloper fixJavaScript injects a noindex directivejs_noindex_only_renderedCriticalDeveloper fixTitle tag changes when JavaScript runsjs_title_differs_renderedHighDeveloper fixStructured Data
14 checksArticle markup is missing headline or a date
schema_missing_required_article_fieldsMediumNeeds reviewEditorial page has no Article structured dataschema_type_mismatch_articleMediumNeeds reviewFAQ markup describes content that is not on the pageschema_faq_not_visibleHighNeeds reviewHome page declares no Organization or WebSite entityschema_missing_organizationMediumNeeds reviewInvalid JSON-LD syntaxstructured_data_invalid_jsonMediumNeeds reviewJSON-LD block missing @typestructured_data_no_typeMediumNeeds reviewNo structured datastructured_data_missingMediumAuto-fixableOut-of-stock product page is indexableecommerce_out_of_stock_indexableLowNeeds reviewProduct markup is missing name or offersschema_missing_required_product_fieldsHighNeeds reviewProduct page has no Product structured dataschema_type_mismatch_productHighNeeds reviewSame schema type declared in both JSON-LD and microdataschema_microdata_jsonld_conflictMediumNeeds reviewStructured data missing recommended fieldsstructured_data_recommended_missingInfoNeeds reviewStructured data missing required fieldsstructured_data_required_missingHighNeeds reviewThe same schema type is declared in more than one JSON-LD blockschema_duplicate_typesLowNeeds reviewInternationalization
6 checksDeclared <html lang> does not match the language of the text
content_lang_mismatchMediumNeeds reviewHreflang alternate has no return taghreflang_no_return_tagHighNeeds reviewHreflang alternate not crawledhreflang_target_not_crawledInfoNeeds reviewHreflang set missing x-defaulthreflang_no_self_referenceMediumNeeds reviewInvalid hreflang language codehreflang_invalid_lang_codeHighNeeds reviewToo many hreflang entrieshreflang_too_manyMediumNeeds reviewSecurity
12 checksContent-Security-Policy is report-only
security_csp_report_onlyInfoDeveloper fixhttp serves the page instead of redirecting to httpshost_no_https_redirectHighDeveloper fixMissing Content-Security-Policy headersecurity_no_cspLowDeveloper fixMissing HSTS headersecurity_no_hstsMediumAuto-fixableMissing Permissions-Policy headersecurity_no_permissions_policyInfoAuto-fixableMissing Referrer-Policy headersecurity_no_referrer_policyLowAuto-fixableMissing X-Content-Type-Options headersecurity_no_xctoLowAuto-fixableMissing X-Frame-Options headersecurity_no_xframeLowAuto-fixableMixed content on an HTTPS pagemixed_contentVariesDeveloper fixPage not served over HTTPSsecurity_no_httpsCriticalDeveloper fixRedirect downgrades HTTPS to HTTPredirect_https_downgradeCriticalDeveloper fixThe site is not reachable over httpshost_https_unavailableCriticalDeveloper fixAccessibility
2 checksPagination
2 checksRun all 162 checks against your site
CrawlX crawls in the cloud, ranks what it finds by estimated impact, and opens the fix as a pull request. Free for 500 URLs.