SEO Report: roskilde-festival.dk
Generated April 28, 2026 · 28 findings · 6.4s
Institutional websites prioritize accessibility, security, and proper indexing — citizens and stakeholders need easy access to relevant information.
Score Breakdown
Average General score: 50
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 (24)
Critical (4)
- highssl
SSL certificate not found
Could not retrieve SSL certificate
Ensure the site has a valid SSL certificate installed
- highaccessibility
2 form fields without labels
Form inputs without associated labels are inaccessible
Use <label for="id"> or aria-label on every form field
- highaccessibility
3 buttons without accessible name
Buttons with no text, aria-label, or title are invisible to screen readers
Add visible text or aria-label to all buttons
- highpage experience
Intrusive interstitials detected
Found 9 potential popup/overlay elements
Reduce intrusive interstitials — they hurt mobile experience and can trigger Google penalties
Medium (9)
- mediumheaders
Missing content-security-policy
CSP header is missing. The site may be vulnerable to XSS attacks.
Add a Content-Security-Policy header to restrict resource loading
- mediumstructured data
No structured data found
No JSON-LD schemas detected on the page
Add structured data (Organization, WebSite, BreadcrumbList) for rich search results
- mediumrobots
No sitemap in robots.txt
robots.txt does not reference a sitemap
Add Sitemap: https://yourdomain.com/sitemap.xml to robots.txt
- mediumcontent
External links without noopener
15 external links with target="_blank" lack rel="noopener"
Add rel="noopener noreferrer" to all target="_blank" links
- mediummobile
Zoom disabled
Viewport prevents user zoom — accessibility issue
Remove maximum-scale=1 and user-scalable=no to allow pinch-to-zoom
- mediumaccessibility
No skip navigation link
No skip-to-content link at the top of the page
Add a visually hidden skip link as the first focusable element
- mediumsocial checker
Missing Twitter Card
No twitter:card meta tag — Twitter/X will use default preview
Add twitter:card meta tag (e.g., "summary_large_image")
- mediumbrand checker
No Organization schema
No Organization JSON-LD found
Add Organization structured data with name, logo, and contact information
- mediumlog analyzer
X-Powered-By header exposed
X-Powered-By: Next.js
Remove the X-Powered-By header to reduce information leakage
Low (11)
- lowdns
No IPv6 (AAAA) records
The domain has no AAAA records for IPv6 connectivity
Add AAAA DNS records for IPv6 support
- lowheaders
Missing permissions-policy
Permissions-Policy is missing.
Add Permissions-Policy to restrict browser feature access
- lowheaders
HSTS max-age too short
HSTS max-age is 15552000s (recommended: 31536000)
Set max-age to at least 31536000 (1 year)
- lowheaders
X-Powered-By exposes technology
X-Powered-By: Next.js
Remove the X-Powered-By header
- lowmeta
Missing Twitter Card
No twitter:card meta tag
Add twitter:card meta tag for Twitter sharing
- lowsitemap
Inconsistent trailing slashes
Some sitemap URLs end with / and some don't
Be consistent with trailing slashes in URLs
- lowcontent
Low text-to-HTML ratio
Text/HTML ratio is 4% (recommended: >5%)
Consider adding more descriptive text content
- lowcontent
Lazy images without dimensions
4 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
- lowbrand checker
No WebSite schema
No WebSite JSON-LD found
Add WebSite structured data for sitelinks search box in Google
- lowbrand checker
Missing og:site_name
Open Graph site name is not set
Add og:site_name meta tag for consistent social sharing
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 roskilde-festival.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": "roskilde-festival.dk",
"scores": {
"overall": 77,
"performance": 0,
"seo": 85,
"accessibility": 62,
"bestPractices": 91,
"security": 72
},
"findings": [
{
"module": "headers",
"severity": "medium",
"title": "Missing content-security-policy",
"description": "CSP header is missing. The site may be vulnerable to XSS attacks.",
"recommendation": "Add a Content-Security-Policy header to restrict resource loading"
},
{
"module": "ssl",
"severity": "high",
"title": "SSL certificate not found",
"description": "Could not retrieve SSL certificate",
"recommendation": "Ensure the site has a valid SSL certificate installed"
},
{
"module": "structured-data",
"severity": "medium",
"title": "No structured data found",
"description": "No JSON-LD schemas detected on the page",
"recommendation": "Add structured data (Organization, WebSite, BreadcrumbList) for rich search results"
},
{
"module": "robots",
"severity": "medium",
"title": "No sitemap in robots.txt",
"description": "robots.txt does not reference a sitemap",
"recommendation": "Add Sitemap: https://yourdomain.com/sitemap.xml to robots.txt"
},
{
"module": "content",
"severity": "medium",
"title": "External links without noopener",
"description": "15 external links with target=\"_blank\" lack rel=\"noopener\"",
"recommendation": "Add rel=\"noopener noreferrer\" to all target=\"_blank\" links"
},
{
"module": "mobile",
"severity": "medium",
"title": "Zoom disabled",
"description": "Viewport prevents user zoom — accessibility issue",
"recommendation": "Remove maximum-scale=1 and user-scalable=no to allow pinch-to-zoom"
},
{
"module": "accessibility",
"severity": "high",
"title": "2 form fields without labels",
"description": "Form inputs without associated labels are inaccessible",
"recommendation": "Use <label for=\"id\"> or aria-label on every form field"
},
{
"module": "accessibility",
"severity": "medium",
"title": "No skip navigation link",
"description": "No skip-to-content link at the top of the page",
"recommendation": "Add a visually hidden skip link as the first focusable element"
},
{
"module": "accessibility",
"severity": "high",
"title": "3 buttons without accessible name",
"description": "Buttons with no text, aria-label, or title are invisible to screen readers",
"recommendation": "Add visible text or aria-label to all buttons"
},
{
"module": "social-checker",
"severity": "medium",
"title": "Missing Twitter Card",
"description": "No twitter:card meta tag — Twitter/X will use default preview",
"recommendation": "Add twitter:card meta tag (e.g., \"summary_large_image\")"
},
{
"module": "brand-checker",
"severity": "medium",
"title": "No Organization schema",
"description": "No Organization JSON-LD found",
"recommendation": "Add Organization structured data with name, logo, and contact information"
},
{
"module": "page-experience",
"severity": "high",
"title": "Intrusive interstitials detected",
"description": "Found 9 potential popup/overlay elements",
"recommendation": "Reduce intrusive interstitials — they hurt mobile experience and can trigger Google penalties"
},
{
"module": "log-analyzer",
"severity": "medium",
"title": "X-Powered-By header exposed",
"description": "X-Powered-By: Next.js",
"recommendation": "Remove the X-Powered-By header to reduce information leakage"
}
]
}
```Recommendations for your industry
- 1Ensure WCAG 2.1 AA compliance
- 2Implement all recommended security headers
- 3Ensure sitemap covers all important pages
- 4Optimize page load time to under 2 seconds
- 5Ensure responsive design on all pages
SEO Checklist for General
Tips for Mixed websites
- →Define clear landing pages for each segment
- →Use different meta strategies per page group
- →Segment sitemap by content type
Local SEO Context
In Denmark, Google dominates with 95%+ market share. Focus on local searches and Danish language quality.