SEO Report: novobanco.pt
Generated April 28, 2026 · 40 findings · 7.1s
Ecommerce and commercial websites have unique SEO challenges — product pages require structured data, fast loading, and optimal mobile experience to convert.
Score Breakdown
Average Finance score: 70
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 (36)
Critical (8)
- highsitemap
Invalid sitemap format
Sitemap does not appear to be valid XML
Ensure sitemap.xml is properly formatted XML
- highsitemap
Empty sitemap
Sitemap contains no URLs
Add URLs to the sitemap
- highcontent
Images missing alt text
30 image(s) have no alt attribute
Add descriptive alt text to all images for accessibility and SEO
- highaccessibility
30 images missing alt attribute
Images without alt text are inaccessible to screen readers
Add descriptive alt text to all informational images, or alt="" for decorative ones
- 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
5 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
- highsocial checker
Missing og:title
Open Graph title is not set — social shares will use generic text
Add og:title meta tag for compelling social media previews
- highpage experience
Intrusive interstitials detected
Found 4 potential popup/overlay elements
Reduce intrusive interstitials — they hurt mobile experience and can trigger Google penalties
Medium (13)
- 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
- mediumheaders
Missing x-frame-options
X-Frame-Options is missing. The site may be vulnerable to clickjacking.
Add X-Frame-Options: DENY or SAMEORIGIN header
- mediumheaders
CSP allows unsafe-eval
Content-Security-Policy uses 'unsafe-eval' which allows dynamic code execution
Remove 'unsafe-eval' and refactor code to avoid eval()
- mediummeta
Missing og:title
Open Graph title is not set
Add og:title meta tag for social sharing
- mediummeta
Missing og:image
No Open Graph image set. Social shares will lack a preview image.
Add og:image meta tag (1200x630px recommended)
- mediumtechnology
Render-blocking scripts
9 scripts load synchronously without async/defer
Add async or defer to non-critical scripts to improve page load speed
- mediumcontent
Multiple H1 tags
Found 4 H1 tags (recommended: exactly 1)
Use only one H1 per page; use H2-H6 for subsections
- mediumcontent
External links without noopener
7 external links with target="_blank" lack rel="noopener"
Add rel="noopener noreferrer" to all target="_blank" links
- mediumrate limits
No rate limiting detected
10 rapid requests all succeeded without any rate-limit headers or 429 responses. The site may be vulnerable to abuse.
Implement rate limiting (e.g., 429 Too Many Requests) to protect against brute-force attacks
- mediumsocial checker
Missing og:description
Open Graph description is not set
Add og:description for better social sharing previews
- mediumsocial checker
Missing og:image
No social sharing image set — posts will lack visual appeal
Add og:image meta tag (1200x630px recommended)
- 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")
- mediumuptime checker
Soft 404 detected
Non-existent URLs return HTTP 200 instead of 404
Return proper 404 status codes for non-existent pages to avoid indexing junk URLs
Low (15)
- lowdns
No IPv6 (AAAA) records
The domain has no AAAA records for IPv6 connectivity
Add AAAA DNS records for IPv6 support
- lowheaders
Missing referrer-policy
Referrer-Policy is not set. Full URLs may leak to third parties.
Add Referrer-Policy: strict-origin-when-cross-origin
- lowheaders
Missing permissions-policy
Permissions-Policy is missing.
Add Permissions-Policy to restrict browser feature access
- lowmeta
Missing og:description
Open Graph description is not set
Add og:description meta tag for social sharing
- lowmeta
Missing Twitter Card
No twitter:card meta tag
Add twitter:card meta tag for Twitter sharing
- lowcontent
Heading level skipped
H4 follows H2 (skipped H3)
Maintain sequential heading hierarchy without skipping levels
- lowcontent
Low text-to-HTML ratio
Text/HTML ratio is 3% (recommended: >5%)
Consider adding more descriptive text content
- lowcontent
Lazy images without dimensions
55 lazy-loaded images lack width/height — causes layout shift
Add width and height attributes to lazy-loaded images
- lowrate limits
No WAF detected
No Web Application Firewall (Cloudflare, AWS, Akamai, Vercel, Sucuri, Fastly) was detected in response headers.
Consider using a WAF to protect against common web attacks (XSS, SQL injection, DDoS)
- lowrate limits
No bot protection detected
No CAPTCHA, challenge page, or bot detection was triggered during rapid requests.
Consider implementing bot protection (e.g., Cloudflare Turnstile, hCaptcha) for sensitive endpoints
- lowsocial checker
Missing og:type
Open Graph type is not set
Add og:type meta tag (e.g., "website", "article")
- lowbrand checker
No web app manifest
No manifest.json linked — PWA features unavailable
Add a web app manifest for installability and brand customization
- lowbrand checker
Missing og:site_name
Open Graph site name is not set
Add og:site_name meta tag for consistent social sharing
- lowpage experience
No resource hints
No preload or preconnect hints found
Add preload for critical resources and preconnect for important third-party origins
- lowlog analyzer
Soft 404 response
Non-existent pages return HTTP 200 instead of 404
Return proper 404 status codes for non-existent pages
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 novobanco.pt.
Prioritize high-severity issues first, then medium. For each fix, make the actual code change — don't just describe what to do.
```json
{
"domain": "novobanco.pt",
"scores": {
"overall": 78,
"performance": 0,
"seo": 85,
"accessibility": 55,
"bestPractices": 80,
"security": 83
},
"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": "headers",
"severity": "medium",
"title": "Missing x-frame-options",
"description": "X-Frame-Options is missing. The site may be vulnerable to clickjacking.",
"recommendation": "Add X-Frame-Options: DENY or SAMEORIGIN header"
},
{
"module": "headers",
"severity": "medium",
"title": "CSP allows unsafe-eval",
"description": "Content-Security-Policy uses 'unsafe-eval' which allows dynamic code execution",
"recommendation": "Remove 'unsafe-eval' and refactor code to avoid eval()"
},
{
"module": "meta",
"severity": "medium",
"title": "Missing og:title",
"description": "Open Graph title is not set",
"recommendation": "Add og:title meta tag for social sharing"
},
{
"module": "meta",
"severity": "medium",
"title": "Missing og:image",
"description": "No Open Graph image set. Social shares will lack a preview image.",
"recommendation": "Add og:image meta tag (1200x630px recommended)"
},
{
"module": "sitemap",
"severity": "high",
"title": "Invalid sitemap format",
"description": "Sitemap does not appear to be valid XML",
"recommendation": "Ensure sitemap.xml is properly formatted XML"
},
{
"module": "sitemap",
"severity": "high",
"title": "Empty sitemap",
"description": "Sitemap contains no URLs",
"recommendation": "Add URLs to the sitemap"
},
{
"module": "technology",
"severity": "medium",
"title": "Render-blocking scripts",
"description": "9 scripts load synchronously without async/defer",
"recommendation": "Add async or defer to non-critical scripts to improve page load speed"
},
{
"module": "content",
"severity": "medium",
"title": "Multiple H1 tags",
"description": "Found 4 H1 tags (recommended: exactly 1)",
"recommendation": "Use only one H1 per page; use H2-H6 for subsections"
},
{
"module": "content",
"severity": "high",
"title": "Images missing alt text",
"description": "30 image(s) have no alt attribute",
"recommendation": "Add descriptive alt text to all images for accessibility and SEO"
},
{
"module": "content",
"severity": "medium",
"title": "External links without noopener",
"description": "7 external links with target=\"_blank\" lack rel=\"noopener\"",
"recommendation": "Add rel=\"noopener noreferrer\" to all target=\"_blank\" links"
},
{
"module": "accessibility",
"severity": "high",
"title": "30 images missing alt attribute",
"description": "Images without alt text are inaccessible to screen readers",
"recommendation": "Add descriptive alt text to all informational images, or alt=\"\" for decorative ones"
},
{
"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": "high",
"title": "5 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": "rate-limits",
"severity": "medium",
"title": "No rate limiting detected",
"description": "10 rapid requests all succeeded without any rate-limit headers or 429 responses. The site may be vulnerable to abuse.",
"recommendation": "Implement rate limiting (e.g., 429 Too Many Requests) to protect against brute-force attacks"
},
{
"module": "social-checker",
"severity": "high",
"title": "Missing og:title",
"description": "Open Graph title is not set — social shares will use generic text",
"recommendation": "Add og:title meta tag for compelling social media previews"
},
{
"module": "social-checker",
"severity": "medium",
"title": "Missing og:description",
"description": "Open Graph description is not set",
"recommendation": "Add og:description for better social sharing previews"
},
{
"module": "social-checker",
"severity": "medium",
"title": "Missing og:image",
"description": "No social sharing image set — posts will lack visual appeal",
"recommendation": "Add og:image meta tag (1200x630px recommended)"
},
{
"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": "uptime-checker",
"severity": "medium",
"title": "Soft 404 detected",
"description": "Non-existent URLs return HTTP 200 instead of 404",
"recommendation": "Return proper 404 status codes for non-existent pages to avoid indexing junk URLs"
},
{
"module": "page-experience",
"severity": "high",
"title": "Intrusive interstitials detected",
"description": "Found 4 potential popup/overlay elements",
"recommendation": "Reduce intrusive interstitials — they hurt mobile experience and can trigger Google penalties"
}
]
}
```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 Finance
Tips for Mixed websites
- →Define clear landing pages for each segment
- →Use different meta strategies per page group
- →Segment sitemap by content type