SEO Report: qrx.dk
Generated October 20, 2026 · 51 findings · 40.2s
Ecommerce and commercial websites have unique SEO challenges — product pages require structured data, fast loading, and optimal mobile experience to convert.
Score Breakdown
Average Ecommerce score: 62
Score Projection
Estimated improvement based on the findings in this report
Ready to improve your SEO?
Start a free trial and see how your score can improve.
Module Breakdown
All Findings (42)
Critical (14)
- highi18n checker
hreflang coverage 4% (5/117 declared locales reachable)
Some declared hreflang locales did not return usable content.
Serve real, reachable content for every declared hreflang locale — free SEO tools flag declared-but-missing language versions as a defect.
- highcookies
Module failed
Module timeout
Try scanning again
- highindexing checker
Canonical points to different domain
Canonical: https://ayafamily.dk/de points to ayafamily.dk
Ensure the canonical URL points to the same domain unless cross-domain canonicalization is intended
- highreputation
Missing AggregateRating in schema
Found Organization, Product, Product schema without AggregateRating — missing rich snippet opportunity
Add aggregateRating with ratingValue, ratingCount, and bestRating to your structured data for star ratings in search results
- highpagespeed
Render-blocking requests
Requests are blocking the page's initial render, which may delay LCP. [Deferring or inlining](https://developer.chrome.com/docs/performance/insights/render-blocking) can move these network requests out of the critical path.
Requests are blocking the page's initial render, which may delay LCP. [Deferring or inlining](https://developer.chrome.com/docs/performance/insights/render-blocking) can move these network requests ou
- highpagespeed
Legacy JavaScript
Polyfills and transforms enable older browsers to use new JavaScript features. However, many aren't necessary for modern browsers. Consider modifying your JavaScript build process to not transpile [Baseline](https://web.dev/articles/baseline-and-polyfills) features, unless you know you must support
Polyfills and transforms enable older browsers to use new JavaScript features. However, many aren't necessary for modern browsers. Consider modifying your JavaScript build process to not transpile [Ba
- highpagespeed
Time to Interactive
Time to Interactive is the amount of time it takes for the page to become fully interactive. [Learn more about the Time to Interactive metric](https://developer.chrome.com/docs/lighthouse/performance/interactive/).
Time to Interactive is the amount of time it takes for the page to become fully interactive. [Learn more about the Time to Interactive metric](https://developer.chrome.com/docs/lighthouse/performance/
- highpagespeed
Reduce unused JavaScript
Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).
Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lig
- highpagespeed
Reduce JavaScript execution time
Consider reducing the time spent parsing, compiling, and executing JS. You may find delivering smaller JS payloads helps with this. [Learn how to reduce Javascript execution time](https://developer.chrome.com/docs/lighthouse/performance/bootup-time/).
Consider reducing the time spent parsing, compiling, and executing JS. You may find delivering smaller JS payloads helps with this. [Learn how to reduce Javascript execution time](https://developer.ch
- highpagespeed
First Contentful Paint
First Contentful Paint marks the time at which the first text or image is painted. [Learn more about the First Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/first-contentful-paint/).
First Contentful Paint marks the time at which the first text or image is painted. [Learn more about the First Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/first-c
- highpagespeed
Largest Contentful Paint
Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)
Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/l
- highpagespeed
Document request latency
Your first network request is the most important. [Reduce its latency](https://developer.chrome.com/docs/performance/insights/document-latency) by avoiding redirects, ensuring a fast server response, and enabling text compression.
Your first network request is the most important. [Reduce its latency](https://developer.chrome.com/docs/performance/insights/document-latency) by avoiding redirects, ensuring a fast server response,
- highpagespeed
Network dependency tree
[Avoid chaining critical requests](https://developer.chrome.com/docs/performance/insights/network-dependency-tree) by reducing the length of chains, reducing the download size of resources, or deferring the download of unnecessary resources to improve page load.
[Avoid chaining critical requests](https://developer.chrome.com/docs/performance/insights/network-dependency-tree) by reducing the length of chains, reducing the download size of resources, or deferri
- highpagespeed
Avoid multiple page redirects
Redirects introduce additional delays before the page can be loaded. [Learn how to avoid page redirects](https://developer.chrome.com/docs/lighthouse/performance/redirects/).
Redirects introduce additional delays before the page can be loaded. [Learn how to avoid page redirects](https://developer.chrome.com/docs/lighthouse/performance/redirects/).
Medium (18)
- mediumdns
No DKIM record found
None of the common DKIM selectors returned a valid key. Email authentication may be incomplete.
Configure DKIM signing with your email provider and publish the public key in DNS
- mediummeta
Title too short
Title is 10 characters (recommended: 50-60)
Write a more descriptive title (50-60 characters)
- mediumstructured data
Product missing image
Product schema has no image — required for Google rich results
Add at least one product image URL to the Product schema
- mediumsitemap
Sitemap contains foreign URLs
3120 URLs belong to other domains
Only include URLs from your own domain in the sitemap
- mediumcontent
Very low text-to-HTML ratio
Text/HTML ratio is 1% (recommended: >5%)
Increase meaningful text content relative to HTML markup
- mediumi18n checker
Inconsistent locale URL pattern
Mixed URL strategies detected: subdomain, subdirectory
Use a consistent URL pattern for all locales (subdirectory, subdomain, or ccTLD)
- mediumuptime checker
Slow response time
Average response time is 3205ms (should be < 2000ms)
Optimize server response time — consider CDN, caching, or server upgrades
- mediumreputation
No review platform links found
No links to Trustpilot, Google Business, TripAdvisor, Yelp, G2, Capterra, or Glassdoor detected on the homepage
Add links to your review profiles to build trust signals and improve local SEO
- mediumreputation
LocalBusiness missing "telephone"
LocalBusiness/Organization schema found but "telephone" is not set
Add "telephone" to your LocalBusiness schema for better local search visibility
- mediumreputation
LocalBusiness missing "openingHours"
LocalBusiness/Organization schema found but "openingHours" is not set
Add "openingHours" to your LocalBusiness schema for better local search visibility
- mediumreputation
LocalBusiness missing "geo"
LocalBusiness/Organization schema found but "geo" is not set
Add "geo" to your LocalBusiness schema for better local search visibility
- mediumreputation
LocalBusiness missing "priceRange"
LocalBusiness/Organization schema found but "priceRange" is not set
Add "priceRange" to your LocalBusiness schema for better local search visibility
- mediumreputation
LocalBusiness missing "image"
LocalBusiness/Organization schema found but "image" is not set
Add "image" to your LocalBusiness schema for better local search visibility
- mediumpagespeed
Use efficient cache lifetimes
A long cache lifetime can speed up repeat visits to your page. [Learn more about caching](https://developer.chrome.com/docs/performance/insights/cache).
A long cache lifetime can speed up repeat visits to your page. [Learn more about caching](https://developer.chrome.com/docs/performance/insights/cache).
- mediumpagespeed
Speed Index
Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).
Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).
- mediumpagespeed
Total Blocking Time
Sum of all time periods between FCP and Time to Interactive, when task length exceeded 50ms, expressed in milliseconds. [Learn more about the Total Blocking Time metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-total-blocking-time/).
Sum of all time periods between FCP and Time to Interactive, when task length exceeded 50ms, expressed in milliseconds. [Learn more about the Total Blocking Time metric](https://developer.chrome.com/d
- mediumpagespeed
Max Potential First Input Delay
The maximum potential First Input Delay that your users could experience is the duration of the longest task. [Learn more about the Maximum Potential First Input Delay metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-max-potential-fid/).
The maximum potential First Input Delay that your users could experience is the duration of the longest task. [Learn more about the Maximum Potential First Input Delay metric](https://developer.chrome
- mediumpagespeed
Improve image delivery
Reducing the download time of images can improve the perceived load time of the page and LCP. [Learn more about optimizing image size](https://developer.chrome.com/docs/performance/insights/image-delivery)
Reducing the download time of images can improve the perceived load time of the page and LCP. [Learn more about optimizing image size](https://developer.chrome.com/docs/performance/insights/image-deli
Low (10)
- lowcookies
1 cookie missing HttpOnly flag
Cookies without HttpOnly can be accessed by JavaScript, increasing XSS risk
Add HttpOnly to session and authentication cookies
- lowdns
DMARC reporting not configured
DMARC record does not have a rua= tag for aggregate reports.
Add rua=mailto:[email protected] to receive DMARC reports
- lowmeta
Meta description too long
Description is 173 characters (recommended: 120-160)
Shorten the meta description to 120-160 characters
- lowstructured data
Product missing identifiers
Product schema has no SKU, GTIN, or MPN
Add product identifiers (sku, gtin, mpn) for better Google Shopping matching
- lowstructured data
Product missing identifiers
Product schema has no SKU, GTIN, or MPN
Add product identifiers (sku, gtin, mpn) for better Google Shopping matching
- lowstructured data
Duplicate Product schema
Found 2 schemas of type Product
Consider consolidating duplicate Product schemas into one
- lowtechnology
Many inline scripts
34 inline <script> blocks found
Move inline scripts to external files for caching and CSP compliance
- lowcontent
Lazy images without dimensions
5 lazy-loaded images lack width/height — causes layout shift
Add width and height attributes to lazy-loaded images
- lowrate limits
No rate limiting detected
No explicit rate-limit headers or 429 responses detected. Cloudflare WAF provides platform-level protection.
Implement rate limiting (e.g., 429 Too Many Requests) to protect against brute-force attacks
- lownews mentions
No press page on site
Found 4 external mentions but no dedicated press page
Create a /press or /news section to aggregate and amplify media coverage
AI Fix Prompt
Copy this prompt into ChatGPT or Claude to get step-by-step fix instructions
Fix all SEO issues found in the audit of qrx.dk.
Prioritize high-severity issues first, then medium. For each fix, make the actual code change — don't just describe what to do.
```json
{
"domain": "qrx.dk",
"scores": {
"overall": 88,
"performance": 66,
"seo": 85,
"accessibility": 100,
"bestPractices": 97,
"security": 94
},
"findings": [
{
"module": "dns",
"severity": "medium",
"title": "No DKIM record found",
"description": "None of the common DKIM selectors returned a valid key. Email authentication may be incomplete.",
"recommendation": "Configure DKIM signing with your email provider and publish the public key in DNS"
},
{
"module": "meta",
"severity": "medium",
"title": "Title too short",
"description": "Title is 10 characters (recommended: 50-60)",
"recommendation": "Write a more descriptive title (50-60 characters)"
},
{
"module": "structured-data",
"severity": "medium",
"title": "Product missing image",
"description": "Product schema has no image — required for Google rich results",
"recommendation": "Add at least one product image URL to the Product schema"
},
{
"module": "sitemap",
"severity": "medium",
"title": "Sitemap contains foreign URLs",
"description": "3120 URLs belong to other domains",
"recommendation": "Only include URLs from your own domain in the sitemap"
},
{
"module": "content",
"severity": "medium",
"title": "Very low text-to-HTML ratio",
"description": "Text/HTML ratio is 1% (recommended: >5%)",
"recommendation": "Increase meaningful text content relative to HTML markup"
},
{
"module": "i18n-checker",
"severity": "medium",
"title": "Inconsistent locale URL pattern",
"description": "Mixed URL strategies detected: subdomain, subdirectory",
"recommendation": "Use a consistent URL pattern for all locales (subdirectory, subdomain, or ccTLD)"
},
{
"module": "i18n-checker",
"severity": "high",
"title": "hreflang coverage 4% (5/117 declared locales reachable)",
"description": "Some declared hreflang locales did not return usable content.",
"recommendation": "Serve real, reachable content for every declared hreflang locale — free SEO tools flag declared-but-missing language versions as a defect."
},
{
"module": "cookies",
"severity": "high",
"title": "Module failed",
"description": "Module timeout",
"recommendation": "Try scanning again"
},
{
"module": "uptime-checker",
"severity": "medium",
"title": "Slow response time",
"description": "Average response time is 3205ms (should be < 2000ms)",
"recommendation": "Optimize server response time — consider CDN, caching, or server upgrades"
},
{
"module": "indexing-checker",
"severity": "high",
"title": "Canonical points to different domain",
"description": "Canonical: https://ayafamily.dk/de points to ayafamily.dk",
"recommendation": "Ensure the canonical URL points to the same domain unless cross-domain canonicalization is intended"
},
{
"module": "reputation",
"severity": "medium",
"title": "No review platform links found",
"description": "No links to Trustpilot, Google Business, TripAdvisor, Yelp, G2, Capterra, or Glassdoor detected on the homepage",
"recommendation": "Add links to your review profiles to build trust signals and improve local SEO"
},
{
"module": "reputation",
"severity": "high",
"title": "Missing AggregateRating in schema",
"description": "Found Organization, Product, Product schema without AggregateRating — missing rich snippet opportunity",
"recommendation": "Add aggregateRating with ratingValue, ratingCount, and bestRating to your structured data for star ratings in search results"
},
{
"module": "reputation",
"severity": "medium",
"title": "LocalBusiness missing \"telephone\"",
"description": "LocalBusiness/Organization schema found but \"telephone\" is not set",
"recommendation": "Add \"telephone\" to your LocalBusiness schema for better local search visibility"
},
{
"module": "reputation",
"severity": "medium",
"title": "LocalBusiness missing \"openingHours\"",
"description": "LocalBusiness/Organization schema found but \"openingHours\" is not set",
"recommendation": "Add \"openingHours\" to your LocalBusiness schema for better local search visibility"
},
{
"module": "reputation",
"severity": "medium",
"title": "LocalBusiness missing \"geo\"",
"description": "LocalBusiness/Organization schema found but \"geo\" is not set",
"recommendation": "Add \"geo\" to your LocalBusiness schema for better local search visibility"
},
{
"module": "reputation",
"severity": "medium",
"title": "LocalBusiness missing \"priceRange\"",
"description": "LocalBusiness/Organization schema found but \"priceRange\" is not set",
"recommendation": "Add \"priceRange\" to your LocalBusiness schema for better local search visibility"
},
{
"module": "reputation",
"severity": "medium",
"title": "LocalBusiness missing \"image\"",
"description": "LocalBusiness/Organization schema found but \"image\" is not set",
"recommendation": "Add \"image\" to your LocalBusiness schema for better local search visibility"
},
{
"module": "pagespeed",
"severity": "high",
"title": "Render-blocking requests",
"description": "Requests are blocking the page's initial render, which may delay LCP. [Deferring or inlining](https://developer.chrome.com/docs/performance/insights/render-blocking) can move these network requests out of the critical path.",
"recommendation": "Requests are blocking the page's initial render, which may delay LCP. [Deferring or inlining](https://developer.chrome.com/docs/performance/insights/render-blocking) can move these network requests ou"
},
{
"module": "pagespeed",
"severity": "high",
"title": "Legacy JavaScript",
"description": "Polyfills and transforms enable older browsers to use new JavaScript features. However, many aren't necessary for modern browsers. Consider modifying your JavaScript build process to not transpile [Baseline](https://web.dev/articles/baseline-and-polyfills) features, unless you know you must support ",
"recommendation": "Polyfills and transforms enable older browsers to use new JavaScript features. However, many aren't necessary for modern browsers. Consider modifying your JavaScript build process to not transpile [Ba"
},
{
"module": "pagespeed",
"severity": "high",
"title": "Time to Interactive",
"description": "Time to Interactive is the amount of time it takes for the page to become fully interactive. [Learn more about the Time to Interactive metric](https://developer.chrome.com/docs/lighthouse/performance/interactive/).",
"recommendation": "Time to Interactive is the amount of time it takes for the page to become fully interactive. [Learn more about the Time to Interactive metric](https://developer.chrome.com/docs/lighthouse/performance/"
},
{
"module": "pagespeed",
"severity": "medium",
"title": "Use efficient cache lifetimes",
"description": "A long cache lifetime can speed up repeat visits to your page. [Learn more about caching](https://developer.chrome.com/docs/performance/insights/cache).",
"recommendation": "A long cache lifetime can speed up repeat visits to your page. [Learn more about caching](https://developer.chrome.com/docs/performance/insights/cache)."
},
{
"module": "pagespeed",
"severity": "high",
"title": "Reduce unused JavaScript",
"description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
"recommendation": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lig"
},
{
"module": "pagespeed",
"severity": "high",
"title": "Reduce JavaScript execution time",
"description": "Consider reducing the time spent parsing, compiling, and executing JS. You may find delivering smaller JS payloads helps with this. [Learn how to reduce Javascript execution time](https://developer.chrome.com/docs/lighthouse/performance/bootup-time/).",
"recommendation": "Consider reducing the time spent parsing, compiling, and executing JS. You may find delivering smaller JS payloads helps with this. [Learn how to reduce Javascript execution time](https://developer.ch"
},
{
"module": "pagespeed",
"severity": "high",
"title": "First Contentful Paint",
"description": "First Contentful Paint marks the time at which the first text or image is painted. [Learn more about the First Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/first-contentful-paint/).",
"recommendation": "First Contentful Paint marks the time at which the first text or image is painted. [Learn more about the First Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/first-c"
},
{
"module": "pagespeed",
"severity": "medium",
"title": "Speed Index",
"description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
"recommendation": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/)."
},
{
"module": "pagespeed",
"severity": "high",
"title": "Largest Contentful Paint",
"description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
"recommendation": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/l"
},
{
"module": "pagespeed",
"severity": "high",
"title": "Document request latency",
"description": "Your first network request is the most important. [Reduce its latency](https://developer.chrome.com/docs/performance/insights/document-latency) by avoiding redirects, ensuring a fast server response, and enabling text compression.",
"recommendation": "Your first network request is the most important. [Reduce its latency](https://developer.chrome.com/docs/performance/insights/document-latency) by avoiding redirects, ensuring a fast server response, "
},
{
"module": "pagespeed",
"severity": "medium",
"title": "Total Blocking Time",
"description": "Sum of all time periods between FCP and Time to Interactive, when task length exceeded 50ms, expressed in milliseconds. [Learn more about the Total Blocking Time metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-total-blocking-time/).",
"recommendation": "Sum of all time periods between FCP and Time to Interactive, when task length exceeded 50ms, expressed in milliseconds. [Learn more about the Total Blocking Time metric](https://developer.chrome.com/d"
},
{
"module": "pagespeed",
"severity": "medium",
"title": "Max Potential First Input Delay",
"description": "The maximum potential First Input Delay that your users could experience is the duration of the longest task. [Learn more about the Maximum Potential First Input Delay metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-max-potential-fid/).",
"recommendation": "The maximum potential First Input Delay that your users could experience is the duration of the longest task. [Learn more about the Maximum Potential First Input Delay metric](https://developer.chrome"
},
{
"module": "pagespeed",
"severity": "medium",
"title": "Improve image delivery",
"description": "Reducing the download time of images can improve the perceived load time of the page and LCP. [Learn more about optimizing image size](https://developer.chrome.com/docs/performance/insights/image-delivery)",
"recommendation": "Reducing the download time of images can improve the perceived load time of the page and LCP. [Learn more about optimizing image size](https://developer.chrome.com/docs/performance/insights/image-deli"
},
{
"module": "pagespeed",
"severity": "high",
"title": "Network dependency tree",
"description": "[Avoid chaining critical requests](https://developer.chrome.com/docs/performance/insights/network-dependency-tree) by reducing the length of chains, reducing the download size of resources, or deferring the download of unnecessary resources to improve page load.",
"recommendation": "[Avoid chaining critical requests](https://developer.chrome.com/docs/performance/insights/network-dependency-tree) by reducing the length of chains, reducing the download size of resources, or deferri"
},
{
"module": "pagespeed",
"severity": "high",
"title": "Avoid multiple page redirects",
"description": "Redirects introduce additional delays before the page can be loaded. [Learn how to avoid page redirects](https://developer.chrome.com/docs/lighthouse/performance/redirects/).",
"recommendation": "Redirects introduce additional delays before the page can be loaded. [Learn how to avoid page redirects](https://developer.chrome.com/docs/lighthouse/performance/redirects/)."
}
]
}
```Recommendations for your industry
- 1Add Product schema markup to product pages
- 2Mark up prices with Offer schema
- 3Optimize checkout speed to under 3 seconds
- 4Add trust signals and customer reviews
- 5Ensure mobile-friendly checkout experience
SEO Checklist for Ecommerce
Tips for B2C websites
- →Prioritize mobile speed and user experience
- →Use rich structured data for products/services
- →Implement customer reviews and social proof
Local SEO Context
In Denmark, Google dominates with 95%+ market share. Focus on local searches and Danish language quality.