Audit rules
Every check Kritano runs, 275 in all, with what each one looks for and how to fix it.
Accessibility 104
WCAG 2.2 checks from axe-core, run on every page.
- moderate"role=text" should have no focusable descendants
- moderate<audio> elements must have a captions track
- moderate<blink> elements are deprecated and must not be used
- moderate<dl> elements must only directly contain properly-ordered <dt> and <dd> groups, <script>, <template> or <div> elements
- moderate<dt> and <dd> elements must be contained by a <dl>
- moderate<html> element must have a lang attribute
- moderate<html> element must have a valid value for the lang attribute
- moderate<li> elements must be contained in a <ul> or <ol>
- moderate<marquee> elements are deprecated and must not be used
- moderate<object> elements must have alternative text
- moderate<svg> elements with an img role must have alternative text
- moderate<ul> and <ol> must only directly contain <li>, <script> or <template> elements
- moderate<video> elements must have captions
- moderate<video> or <audio> elements must not play automatically
- moderate[role="img"] elements must have alternative text
- moderateaccesskey attribute value should be unique
- moderateActive <area> elements must have alternative text
- moderateAll page content should be contained by landmarks
- moderateAll touch targets must be 24px large, or leave sufficient space
- moderateAlternative text of images should not be repeated as text
- moderateARIA attributes must be used as specified for the element's role
- moderateARIA attributes must conform to valid names
- moderateARIA attributes must conform to valid values
- moderateARIA commands must have an accessible name
- moderateARIA dialog and alertdialog nodes should have an accessible name
- moderateARIA hidden element must not be focusable or contain focusable elements
- moderateARIA input fields must have an accessible name
- moderateARIA meter nodes must have an accessible name
- moderateARIA progressbar nodes must have an accessible name
- moderateARIA role should be appropriate for the element
- moderateARIA roles used must conform to valid values
- moderateARIA toggle fields must have an accessible name
- moderateARIA tooltip nodes must have an accessible name
- moderateARIA treeitem nodes should have an accessible name
- moderatearia-braille attributes must have a non-braille equivalent
- moderatearia-hidden="true" must not be present on the document body
- moderatearia-roledescription must be on elements with a semantic role
- moderateAside should not be contained in another landmark
- moderateautocomplete attribute must be used correctly
- moderateBanner landmark should not be contained in another landmark
- moderateButtons must have discernible text
- moderateCertain ARIA roles must be contained by particular parents
- moderateCertain ARIA roles must contain particular children
- moderateContentinfo landmark should not be contained in another landmark
- moderateCSS Media queries must not lock display orientation
- moderateData or header cells must not be used to give caption to a data table.
- moderateDelayed refresh must not be used
- moderateDelayed refresh under 20 hours must not be used
- moderateDeprecated ARIA roles must not be used
- moderateDocument should have one main landmark
- moderateDocument should not have more than one banner landmark
- moderateDocument should not have more than one contentinfo landmark
- moderateDocument should not have more than one main landmark
- moderateDocuments must have <title> element to aid in navigation
- moderateElements in the focus order should have an appropriate role
- moderateElements marked as presentational should be consistently ignored
- moderateElements must have their visible text as part of their accessible name
- moderateElements must meet enhanced color contrast ratio thresholds
- moderateElements must meet minimum color contrast ratio thresholds
- moderateElements must only use permitted ARIA attributes
- moderateElements must only use supported ARIA attributes
- moderateElements should not have tabindex greater than zero
- moderateForm elements must have labels
- moderateForm elements should have a visible label
- moderateForm field must not have multiple label elements
- moderateFrames must have a unique title attribute
- moderateFrames must have an accessible name
- moderateFrames should be tested with axe-core
- moderateFrames with focusable content must not have tabindex=-1
- moderateHeading levels should only increase by one
- moderateHeadings should not be empty
- moderateHidden content on the page should be analyzed
- moderateHTML elements with lang and xml:lang must have the same base language
- moderateid attribute value must be unique
- moderateIDs of active elements must be unique
- moderateIDs used in ARIA and labels must be unique
- moderateImage buttons must have alternative text
- moderateImages must have alternative text
- moderateInline text spacing must be adjustable with custom stylesheets
- moderateInput buttons must have discernible text
- moderateInteractive controls must not be nested
- moderateLandmarks should have a unique role or role/label/title (i.e. accessible name) combination
- moderatelang attribute must have a valid value
- moderateLinks must be distinguishable without relying on color
- moderateLinks must have discernible text
- moderateLinks with the same name must have a similar purpose
- moderateMain landmark should not be contained in another landmark
- moderateNon-empty <td> elements in larger <table> must have an associated table header
- moderatePage must have means to bypass repeated blocks
- moderatePage should contain a level-one heading
- moderateRequired ARIA attributes must be provided
- moderatescope attribute should be used correctly
- moderateScrollable region must have keyboard access
- moderateSelect element must have an accessible name
- moderateServer-side image maps must not be used
- moderateStyled <p> elements must not be used as headings
- moderateSummary elements must have discernible text
- moderateTable cell headers attributes must refer to other <th> elements in the same table
- moderateTable header text should not be empty
- moderateTable headers in a data table must refer to data cells
- moderateTables should not have the same summary and caption
- moderateThe skip-link target should exist and be focusable
- moderateUsers should be able to zoom and scale the text up to 500%
- moderateZooming and scaling must not be disabled
Content 33
Readability, structure and engagement.
- moderateAcademic Reading Level
- moderateBroken Heading Hierarchy
- moderateExcessive Sentence Length
- moderateHigh Boilerplate Ratio
- moderateHigh Vocabulary Complexity
- seriousKeyword Missing from H1
- moderateKeyword Missing from Introduction
- moderateKeyword Missing from Meta Description
- seriousKeyword Missing from Title
- minorKeyword Missing from URL
- seriousKeyword Stuffing Detected
- minorLimited Keyword Variations
- moderateLow Content-to-HTML Ratio
- moderateLow Keyword Density
- minorLow Transition Word Usage
- moderateModerate Readability
- minorMonotonous Sentence Structure
- moderateNo Call-to-Action
- infoNo Emotional Language
- minorNo Freshness Signals
- minorNo Images
- minorNo Images or Media
- minorNo List Elements
- minorNo Questions in Content
- moderateNo Subheadings
- infoNo Table of Contents
- moderatePoor Paragraph Structure
- seriousPoor Readability Score
- moderateShort Content
- seriousTarget Keyword Not Found
- minorToo Many CTAs
- seriousWall of Text Detected
- moderateWeak Opening Hook
Content: answer engines 11
How well a page answers questions for AI search.
- seriousAI Ignored — Low Citability
- moderateContent Not Front-Loaded
- seriousLow Factual Density
- moderateNo Author sameAs Links
- minorNo Citation-Friendly Schema
- seriousNo Definition Blocks
- moderateNo FAQ Section
- infoNo Semantic Citation Markup
- minorNo Structured Content
- moderateNo Summary Statements
- moderateNo Verifiable Claims
Content: E-E-A-T 9
Experience, expertise, authority and trust signals.
Performance 35
Core Web Vitals and what slows a page down.
- infoCaching Disabled
- moderateCLS Needs Improvement
- seriousContent Wider Than Mobile Viewport
- minorImages Not Lazy Loaded
- moderateImages Without Dimensions
- moderateLarge CSS Payload
- moderateLarge DOM Size
- moderateLarge HTML Document
- moderateLarge Images Without Mobile Optimization
- moderateLarge Inline Scripts
- moderateLarge Inline Styles
- moderateLarge JavaScript Payload
- moderateLarge Page Size
- moderateLCP Needs Improvement
- moderateMissing Cache Headers
- minorMissing Cache Validation
- minorMissing font-display: swap
- moderateMissing Response Compression
- minorMissing Responsive Images
- minorNot Using HTTP/2
- seriousPoor CLS (Cumulative Layout Shift)
- seriousPoor LCP (Largest Contentful Paint)
- minorPotential 300ms Tap Delay
- moderateRender-Blocking CSS
- moderateRender-Blocking Scripts
- seriousSlow Server Response
- moderateSmall Base Font Size for Mobile
- moderateToo Many HTTP Requests
- moderateToo Many JavaScript Files
- minorToo Many Stylesheets
- minorToo Many Web Fonts
- seriousTotal Image Payload Too Large
- moderateUnoptimized Images
- moderateUses document.write()
- seriousViewport Meta Missing device-width
Security 35
Headers, TLS, exposed files and mixed content.
- minorAdmin Panel Link Found
- moderateCMS Version Exposed
- moderateCookie Missing HttpOnly
- moderateCookie Missing SameSite
- moderateCORS Allows All Origins
- criticalCORS Wildcard with Credentials
- seriousCSP Allows unsafe-eval
- moderateCSP Allows unsafe-inline
- seriousCSP Uses Wildcard Source
- seriousDirectory Listing Detected
- criticalExposed Sensitive File
- minorExternal Link Missing noopener
- moderateExternal Script Missing Integrity
- criticalForm Submits to HTTP
- minorInline Event Handlers
- seriousInsecure Cookie
- moderateMissing Content Security Policy
- seriousMissing HSTS Header
- minorMissing Permissions Policy
- minorMissing Referrer Policy
- minorMissing security.txt
- moderateMissing X-Content-Type-Options
- moderateMissing X-Frame-Options
- seriousMixed Content (Iframe)
- moderateMixed Content (Image)
- criticalMixed Content (Script)
- seriousMixed Content (Stylesheet)
- criticalNot Using HTTPS
- infoPassword Autocomplete Enabled
- seriousSelf-Signed SSL Certificate
- minorServer Version Exposed
- criticalSSL Certificate Expired
- seriousSSL Certificate Expiring Soon
- seriousSSL Certificate Issue
- minorX-Powered-By Header Present
SEO 37
What search engines need to find, understand and show a page.
- minorBroken Anchor Links
- seriousBroken External Link
- seriousBroken Link
- moderateDeep Page Depth
- moderateDuplicate Meta Description
- seriousDuplicate Title
- minorEmpty Image Alt Text
- minorHreflang Missing Self-Reference
- minorInvalid Heading Hierarchy
- moderateInvalid Hreflang Tag
- minorLow Quality Alt Text
- minorMeta Description Too Long
- minorMeta Description Too Short
- moderateMissing Canonical URL
- seriousMissing H1 Heading
- minorMissing Hreflang Tags
- seriousMissing Image Alt Text
- moderateMissing Language Attribute
- seriousMissing Meta Description
- minorMissing Open Graph Description
- minorMissing Open Graph Image
- minorMissing Open Graph Title
- criticalMissing Page Title
- infoMissing Self-Referencing Canonical
- seriousMissing Viewport Meta Tag
- moderateMultiple H1 Headings
- moderateNo Internal Links
- moderateOrphan Page
- infoPage Marked as Noindex
- moderateRedirect Chain Detected
- moderateSlow Page Load
- moderateThin Content
- moderateTitle Too Long
- moderateTitle Too Short
- minorURL Contains Underscores
- minorURL Has Many Parameters
- minorURL Too Long
Structured data 11
Schema.org markup and social cards.
- moderateArticle Missing Author
- seriousHomepage Missing Organization Schema
- criticalInvalid JSON-LD Syntax
- moderateMissing Open Graph Data
- moderateMissing Recommended Fields
- seriousMissing Required Fields
- seriousMissing Schema Type
- criticalMissing Structured Data
- minorMissing Twitter Card Data
- moderateProduct Missing Offer Schema
- infoSchema Type Suggestion