{
    "The page should be reachable without a long chain of redirects because each extra redirect adds latency and can dilute SEO signals.": "The page should be reachable without a long chain of redirects because each extra redirect adds latency and can dilute SEO signals.",
    "failed.security.redirect_chain.too_long": "The page is reached through :actualValue redirects. Reduce the number of redirects to :expectedValue or fewer.",
    "The page should set security headers such as Strict-Transport-Security, X-Content-Type-Options, X-Frame-Options and Referrer-Policy because they protect visitors and signal a well maintained, trustworthy site.": "The page should set security headers such as Strict-Transport-Security, X-Content-Type-Options, X-Frame-Options and Referrer-Policy because they protect visitors and signal a well maintained, trustworthy site.",
    "failed.security.headers.missing": "The page is missing the following recommended security headers: :actualValue.",
    "The page should be served over HTTPS because it encrypts traffic, is required for modern browser features and is a confirmed Google ranking signal.": "The page should be served over HTTPS because it encrypts traffic, is required for modern browser features and is a confirmed Google ranking signal.",
    "failed.security.https.insecure": "The page is not served over HTTPS. It was reached over :actualValue.",
    "The site should have a valid XML sitemap because it helps search engines discover and crawl all important pages efficiently.": "The site should have a valid XML sitemap because it helps search engines discover and crawl all important pages efficiently.",
    "failed.configuration.sitemap.missing": "We could not find an XML sitemap for this site at :actualValue, while it should have one.",
    "failed.configuration.sitemap.invalid": "The sitemap found at :actualValue is not a valid XML sitemap (no urlset or sitemapindex element).",
    "The robots.txt file should not block known AI crawlers (such as GPTBot, ClaudeBot and PerplexityBot) unless that is intended, because blocking them removes the site from AI-powered search engines and assistants.": "The robots.txt file should not block known AI crawlers (such as GPTBot, ClaudeBot and PerplexityBot) unless that is intended, because blocking them removes the site from AI-powered search engines and assistants.",
    "failed.ai.ai_crawlers.blocked": "The robots.txt file blocks the following AI crawlers, which limits AI and LLM visibility: :actualValue.",
    "The site should provide an llms.txt file because it gives large language models a curated, Markdown overview of the site, which improves how AI tools understand and cite the content.": "The site should provide an llms.txt file because it gives large language models a curated, Markdown overview of the site, which improves how AI tools understand and cite the content.",
    "failed.ai.llms_txt.missing": "We could not find an llms.txt file for this site at :actualValue, while one is recommended for AI and LLM visibility.",
    "The page should have a canonical URL because this tells search engines which version of a page is the preferred one and prevents duplicate content issues.": "The page should have a canonical URL because this tells search engines which version of a page is the preferred one and prevents duplicate content issues.",
    "failed.meta.canonical.missing": "The page does not contain a canonical URL, while it should.",
    "failed.meta.canonical.broken": "The page contains a broken canonical URL. This URL was found: :actualValue.",
    "The page should have a viewport meta tag with width=device-width so it renders correctly on mobile devices, which is important for mobile-first indexing.": "The page should have a viewport meta tag with width=device-width so it renders correctly on mobile devices, which is important for mobile-first indexing.",
    "failed.meta.viewport.missing": "The page does not contain a viewport meta tag, while it should.",
    "failed.meta.viewport.invalid": "The viewport meta tag does not contain width=device-width. The actual value was: :actualValue.",
    "The page should declare its character encoding (for example <meta charset=\"utf-8\">) so browsers and search engines interpret the text correctly.": "The page should declare its character encoding (for example <meta charset=\"utf-8\">) so browsers and search engines interpret the text correctly.",
    "failed.meta.charset.missing": "The page does not declare a character encoding, while it should.",
    "The page should reference a favicon because it helps users recognise the site in browser tabs, bookmarks and search results.": "The page should reference a favicon because it helps users recognise the site in browser tabs, bookmarks and search results.",
    "failed.meta.favicon.missing": "The page does not reference a favicon, while it should.",
    "failed.meta.favicon.broken": "The page references a broken favicon. This favicon was found: :actualValue.",
    "The page should contain structured data (JSON-LD) because this helps search engines understand the content and can enable rich results.": "The page should contain structured data (JSON-LD) because this helps search engines understand the content and can enable rich results.",
    "failed.meta.structured_data.missing": "The page does not contain any structured data (JSON-LD), while it should.",
    "failed.meta.structured_data.invalid": "The page contains structured data (JSON-LD) but none of it is valid JSON.",
    "The page should define the core Open Graph tags (og:title, og:description, og:url and og:type) so it is presented correctly when shared on social media.": "The page should define the core Open Graph tags (og:title, og:description, og:url and og:type) so it is presented correctly when shared on social media.",
    "failed.meta.open_graph.incomplete": "The page is missing the following Open Graph tags: :actualValue.",
    "The page should define a twitter:card meta tag so it is presented as a rich card when shared on X (Twitter).": "The page should define a twitter:card meta tag so it is presented as a rich card when shared on X (Twitter).",
    "failed.meta.twitter_card.missing": "The page does not contain a twitter:card meta tag, while it should.",
    "Headings should not skip levels (for example an h2 followed by an h4) because a logical heading structure helps search engines and assistive technologies understand the page.": "Headings should not skip levels (for example an h2 followed by an h4) because a logical heading structure helps search engines and assistive technologies understand the page.",
    "failed.content.heading_structure.skipped": "The page skips one or more heading levels: :actualValue.",
    "Images should have explicit width and height attributes because this reserves space during loading and prevents layout shift (CLS).": "Images should have explicit width and height attributes because this reserves space during loading and prevents layout shift (CLS).",
    "failed.content.image_dimensions.missing": "The page contains images without explicit width and height attributes. These images were found: :actualValue.",
    "Images below the fold should use loading=\"lazy\" because this defers offscreen image loading and improves the initial page load performance.": "Images below the fold should use loading=\"lazy\" because this defers offscreen image loading and improves the initial page load performance.",
    "failed.content.lazy_loading.missing": "The page contains below-the-fold images that are not lazy loaded. These images were found: :actualValue.",
    "When a page targets multiple languages or regions it should use valid hreflang annotations so search engines serve the correct localised version of the page.": "When a page targets multiple languages or regions it should use valid hreflang annotations so search engines serve the correct localised version of the page.",
    "failed.meta.hreflang.invalid": "The page contains invalid hreflang values: :actualValue.",
    "Images should use modern formats such as WebP or AVIF (or be served via a <picture> element with a modern source) because they are significantly smaller than JPEG and PNG, which improves load times.": "Images should use modern formats such as WebP or AVIF (or be served via a <picture> element with a modern source) because they are significantly smaller than JPEG and PNG, which improves load times.",
    "failed.performance.modern_image_format": "The page serves images in a legacy format (JPEG, PNG or GIF) without a modern alternative. These images were found: :actualValue.",
    "The page should have a Google PageSpeed (Lighthouse) performance score of at least 90 because this reflects a fast, well optimised page.": "The page should have a Google PageSpeed (Lighthouse) performance score of at least 90 because this reflects a fast, well optimised page.",
    "The Largest Contentful Paint (LCP) should be 2500 ms or less because this Core Web Vital measures how quickly the main content of the page becomes visible.": "The Largest Contentful Paint (LCP) should be 2500 ms or less because this Core Web Vital measures how quickly the main content of the page becomes visible.",
    "The Cumulative Layout Shift (CLS) should be 0.1 or less because this Core Web Vital measures how much the page layout shifts unexpectedly while loading.": "The Cumulative Layout Shift (CLS) should be 0.1 or less because this Core Web Vital measures how much the page layout shifts unexpectedly while loading.",
    "failed.pagespeed.not_configured": "The PageSpeed Insights API key is not configured. Set seo.pagespeed.api_key to enable this check.",
    "failed.pagespeed.unavailable": "The PageSpeed Insights data could not be retrieved for this page.",
    "failed.pagespeed.performance_score": "The PageSpeed performance score is :actualValue. It should be at least :expectedValue.",
    "failed.pagespeed.lcp": "The Largest Contentful Paint is :actualValue ms. It should be :expectedValue ms or less.",
    "failed.pagespeed.cls": "The Cumulative Layout Shift is :actualValue. It should be :expectedValue or less.",
    "All links on the page should redirect to an url using HTTPS instead of HTTP because this is more secure.": "All links on the page should redirect to an url using HTTPS instead of HTTP because this is more secure.",
    "CSS files are not bigger than 15 KB because this will slow down the page load time.": "CSS files are not bigger than 15 KB because this will slow down the page load time.",
    "Every image on the page should have an alt tag to describe the image.": "Every image on the page should have an alt tag to describe the image.",
    "HTML is not larger than 100 KB because this will slow down the page load time.": "HTML is not larger than 100 KB because this will slow down the page load time.",
    "Images are not larger than 1 MB because this will slow down the page load time.": "Images are not larger than 1 MB because this will slow down the page load time.",
    "Javascript files are not bigger than 1 MB because this will slow down the page load time.": "Javascript files are not bigger than 1 MB because this will slow down the page load time.",
    "The HTML of the page should be GZIP compressed to reduce the size of the response.": "The HTML of the page should be GZIP compressed to reduce the size of the response.",
    "The Time To First Byte (TTFB) should be below 600 ms because this will improve the page load time.": "The Time To First Byte (TTFB) should be below 600 ms because this will improve the page load time.",
    "The content should contain at least 30% transition words.": "The content should contain at least 30% transition words.",
    "The content should not contain sentences with more than 20 words.": "The content should not contain sentences with more than 20 words.",
    "The focus keyword should be in the first paragraph of the content because this is the most important part of the content.": "The focus keyword should be in the first paragraph of the content because this is the most important part of the content.",
    "The focus keyword should be in the title of the page because the visitor will see this in the search results.": "The focus keyword should be in the title of the page because the visitor will see this in the search results.",
    "The lang attribute should be set because this is used by search engines to determine the language of the page.": "The lang attribute should be set because this is used by search engines to determine the language of the page.",
    "The length of the content should be at least 2100 characters.": "The length of the content should be at least 2100 characters.",
    "The meta description is used by search engines to show a description of the page in the search results.": "The meta description is used by search engines to show a description of the page in the search results.",
    "The page response should return a 200 status code because this means the page is available.": "The page response should return a 200 status code because this means the page is available.",
    "The page should have an Open Graph image because this is the image that will be used when the page is shared on social media.": "The page should have an Open Graph image because this is the image that will be used when the page is shared on social media.",
    "The page should have only one H1 tag because there should be only one main heading on the page. The H1 tag should be used to describe the main topic of the page. The H1 tag is also used by search engines to determine the topic of the page.": "The page should have only one H1 tag because there should be only one main heading on the page. The H1 tag should be used to describe the main topic of the page. The H1 tag is also used by search engines to determine the topic of the page.",
    "The page does not contain invalid HTML elements in the head section": "The page does not contain invalid HTML elements in the head section",
    "The page should not contain any broken images because it is bad for the user experience.": "The page should not contain any broken images because it is bad for the user experience.",
    "The page should not contain any broken links because it is bad for the user experience.": "The page should not contain any broken links because it is bad for the user experience.",
    "The robots.txt file should allow indexing of the page.": "The robots.txt file should allow indexing of the page.",
    "The title of the page should not be longer than 60 characters because this is the maximum length that is shown in the search results.": "The title of the page should not be longer than 60 characters because this is the maximum length that is shown in the search results.",
    "When the page has the 'nofollow' tag or meta tag set, search engines will not follow the links on the page.": "When the page has the 'nofollow' tag or meta tag set, search engines will not follow the links on the page.",
    "When the page has the 'noindex' tag or meta tag set, search engines will not index the page.": "When the page has the 'noindex' tag or meta tag set, search engines will not index the page.",
    "accordingly": "accordingly",
    "additionally": "additionally",
    "admittedly": "admittedly",
    "after": "after",
    "afterward": "afterward",
    "all in all": "all in all",
    "although": "although",
    "an example of this is": "an example of this is",
    "as a result": "as a result",
    "as well as": "as well as",
    "because": "because",
    "before": "before",
    "besides": "besides",
    "but also": "but also",
    "certainly": "certainly",
    "compared to": "compared to",
    "consequently": "consequently",
    "conversely": "conversely",
    "due to": "due to",
    "during": "during",
    "even though": "even though",
    "eventually": "eventually",
    "failed.configuration.nofollow.meta": "The page contains a nofollow meta tag, while it should not.",
    "failed.configuration.nofollow.tag": "The page contains a nofollow tag, while it should not.",
    "failed.configuration.noindex.meta": "The page contains a noindex meta tag, while it should not.",
    "failed.configuration.noindex.tag": "The page contains a noindex tag, while it should not.",
    "failed.configuration.robots.disallowed": "The robots.txt file for this page contains a disallow rule for this page.",
    "failed.configuration.robots.missing_url": "We could not get the robots.txt file for this page.",
    "failed.content.alt_tag": "The page contains images without or empty alt tags. These images were found: :actualValue.",
    "failed.content.broken_images": "The page contains broken images. These images were found: :actualValue.",
    "failed.content.broken_links": "The page contains broken links. These links were found: :actualValue.",
    "failed.content.length": "The content is :actualValue characters long. It should be at least :expectedValue characters long.",
    "failed.content.length.parse": "We were unable to parse the content of this page, please try again.",
    "failed.check.error": "This check could not be completed because of an unexpected error.",
    "failed.content.mixed_content": "The page contains links to insecure addresses, while it should not. These links were found :actualValue.",
    "failed.content.multiple_h1": "The page contains multiple h1 tags, while it should not. These tags were found :actualValue.",
    "failed.content.no_heading": "The page does not contain any h1 tag, while it should.",
    "failed.content.no_title": "The page does not contain a title tag, while it should.",
    "failed.content.title_length": "The page title is :actualValue characters long. It should be max :expectedValue characters long.",
    "failed.content.too_long_sentence": "The page has :actualValue too long sentences which exceeds 20% of the total sentences. Rectify :neededToFix sentences to meet the 20% limit.",
    "failed.content.transition_words_ratio_check.no_phrases_found": "The page does not contain any transition words.",
    "failed.content.transition_words_ratio_check.too_few_transition_words": "The page contains too few transition words. The recommended minimum is 30%, while the actual number is :actualValue%.",
    "failed.meta.description": "The page does not contain a description meta tag, while it should.",
    "failed.meta.keyword_in_first_paragraph_check": "The page does not contain the focus keyword in the first paragraph, while it should.",
    "failed.meta.keyword_in_title_check": "The page title does not contain the focus keyword, while it should.",
    "failed.meta.no_lang": "The page does not contain a lang attribute, while it should.",
    "failed.meta.open_graph_image": "The page does not contain an open graph image, while it should.",
    "failed.meta.open_graph_image.broken": "The page contains a broken open graph image. This image was found: :actualValue.",
    "failed.meta.title": "The page title contains :actualValue in the title, while it should not.",
    "failed.meta.invalid_head_elements.found": "The page contains invalid HTML elements in the head section: :actualValue. These elements can cause Google to stop parsing the head prematurely.",
    "failed.meta.invalid_head_elements.no_head": "The page does not contain any elements in the head section, which is required for proper SEO.",
    "failed.meta.title.no_content": "The page title is empty, while it should not be.",
    "failed.performance.compression": "The page is not compressed (using either gzip or deflate), while it should be.",
    "failed.performance.css_size": "The page contains CSS files that are too large (max :expectedValue). These files were found: :actualValue.",
    "failed.performance.html_size": "The page contains HTML that is too large (max :expectedValue), the actual size is :actualValue.",
    "failed.performance.image_size": "The page contains images that are too large (max :expectedValue). These images were found: :actualValue.",
    "failed.performance.javascript_size": "The page contains Javascript files that are too large (max :expectedValue). These files were found: :actualValue.",
    "failed.performance.response": "The page returned a response code other than :expectedValue. The actual response code was :actualValue.",
    "failed.performance.ttfb": "The page took too long to load (max :expectedValuems). The actual time was :actualValuems.",
    "failed.performance.ttfb.missing_url": "We could not get the TTFB for this page.",
    "finally": "finally",
    "first": "first",
    "for example": "for example",
    "for instance": "for instance",
    "furthermore": "furthermore",
    "granted": "granted",
    "however": "however",
    "in addition": "in addition",
    "in comparison": "in comparison",
    "in conclusion": "in conclusion",
    "in contrast": "in contrast",
    "in other words": "in other words",
    "in particular": "in particular",
    "in summary": "in summary",
    "in the future": "in the future",
    "in the meantime": "in the meantime",
    "in the past": "in the past",
    "in this case": "in this case",
    "indeed": "indeed",
    "just as": "just as",
    "likewise": "likewise",
    "meanwhile": "meanwhile",
    "moreover": "moreover",
    "naturally": "naturally",
    "nevertheless": "nevertheless",
    "next": "next",
    "nonetheless": "nonetheless",
    "not only": "not only",
    "of course": "of course",
    "on the other hand": "on the other hand",
    "overall": "overall",
    "owing to": "owing to",
    "second": "second",
    "similarly": "similarly",
    "similarly to": "similarly to",
    "since": "since",
    "so": "so",
    "soon": "soon",
    "specifically": "specifically",
    "subsequently": "subsequently",
    "such as": "such as",
    "that is to say": "that is to say",
    "then": "then",
    "therefore": "therefore",
    "third": "third",
    "thus": "thus",
    "to clarify": "to clarify",
    "to demonstrate": "to demonstrate",
    "to illustrate": "to illustrate",
    "to sum up": "to sum up",
    "ultimately": "ultimately",
    "undoubtedly": "undoubtedly",
    "until": "until",
    "what's more": "what's more",
    "while": "while",
    "while it is true": "while it is true",
    "without a doubt": "without a doubt",
    "yet": "yet"
}