Skip to main content
GeneralMixed

SEO Report: ul.pt

Generated April 28, 2026 · 39 findings · 10.2s

71
report.overallScore
71
seo
57
security
0
performance
85
accessibility
89
Best Practices

Institutional websites prioritize accessibility, security, and proper indexing — citizens and stakeholders need easy access to relevant information.

Score Breakdown

Average General score: 50

seo
71(+26 vs avg)
security
57(-1 vs avg)
performance
0(-44 vs avg)
accessibility
85(+33 vs avg)
Best Practices
89(+33 vs avg)

Score Projection

Estimated improvement based on the findings in this report

Current score: 71Projected score: 77
Current score
Free (+3)
Starter (+2)
Pro (+1)

Ready to improve your SEO?

Start a free trial and see how your score can improve.

Module Breakdown

ssl
01 finding
headers
306 findings
structured data
301 finding
sitemap
502 findings
robots
653 findings
uptime checker
702 findings
rate limits
753 findings
brand checker
753 findings
indexing checker
751 finding
content
773 findings
dns
802 findings
meta
844 findings
technology
851 finding
accessibility
851 finding
social checker
851 finding
crawl budget
851 finding
mobile
952 findings
page experience
951 finding
log analyzer
951 finding
news mentions
99
cookies
100
layout scan
100

All Findings (36)

Critical (6)

  • highheaders

    Missing strict-transport-security

    HSTS header is missing. The site may be vulnerable to downgrade attacks.

    Add Strict-Transport-Security header with max-age of at least 31536000

  • highssl

    SSL certificate not found

    Could not retrieve SSL certificate

    Ensure the site has a valid SSL certificate installed

  • 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

  • highaccessibility

    1 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

  • highindexing checker

    Canonical points to different domain

    Canonical: https://www.ulisboa.pt/ points to ulisboa.pt

    Ensure the canonical URL points to the same domain unless cross-domain canonicalization is intended

Medium (16)

  • mediumdns

    Missing DMARC record

    No DMARC policy found at _dmarc subdomain.

    Add a DMARC TXT record to prevent email spoofing

  • 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

  • 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

  • mediummeta

    Canonical / og:url mismatch

    Canonical: https://www.ulisboa.pt/ og:url: https://www.ulisboa.pt/info/home

    Ensure canonical URL and og:url match

  • 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 User-agent directive

    robots.txt has no User-agent directive

    Add User-agent: * to apply rules to all crawlers

  • mediumrobots

    No sitemap in robots.txt

    robots.txt does not reference a sitemap

    Add Sitemap: https://yourdomain.com/sitemap.xml to robots.txt

  • mediumtechnology

    Render-blocking scripts

    54 scripts load synchronously without async/defer

    Add async or defer to non-critical scripts to improve page load speed

  • mediumcontent

    Multiple H1 tags

    Found 3 H1 tags (recommended: exactly 1)

    Use only one H1 per page; use H2-H6 for subsections

  • mediumcontent

    External links without noopener

    17 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 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

    Slow response time

    Average response time is 2580ms (should be < 2000ms)

    Optimize server response time — consider CDN, caching, or server upgrades

  • 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

  • mediumbrand checker

    No Organization schema

    No Organization JSON-LD found

    Add Organization structured data with name, logo, and contact information

  • mediumcrawl budget

    Calendar URLs detected

    4 calendar-related URLs found — these create infinite crawl paths

    Block calendar/date pagination in robots.txt

Low (14)

  • 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

  • lowheaders

    Server header exposes software

    Server: Apache

    Remove or obfuscate the Server header to reduce information leakage

  • lowmeta

    Meta description too long

    Description is 217 characters (recommended: 120-160)

    Shorten the meta description to 120-160 characters

  • lowmeta

    Missing Twitter Card

    No twitter:card meta tag

    Add twitter:card meta tag for Twitter sharing

  • lowcontent

    Heading level skipped

    H6 follows H3 (skipped H4)

    Maintain sequential heading hierarchy without skipping levels

  • lowmobile

    Unresponsive images

    19 images lack srcset or responsive sizing

    Use srcset and sizes attributes for responsive 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

  • lowbrand checker

    No WebSite schema

    No WebSite JSON-LD found

    Add WebSite structured data for sitelinks search box in Google

  • lowbrand checker

    No web app manifest

    No manifest.json linked — PWA features unavailable

    Add a web app manifest for installability and brand customization

  • 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 ul.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": "ul.pt",
  "scores": {
    "overall": 71,
    "performance": 0,
    "seo": 71,
    "accessibility": 85,
    "bestPractices": 89,
    "security": 57
  },
  "findings": [
    {
      "module": "dns",
      "severity": "medium",
      "title": "Missing DMARC record",
      "description": "No DMARC policy found at _dmarc subdomain.",
      "recommendation": "Add a DMARC TXT record to prevent email spoofing"
    },
    {
      "module": "headers",
      "severity": "high",
      "title": "Missing strict-transport-security",
      "description": "HSTS header is missing. The site may be vulnerable to downgrade attacks.",
      "recommendation": "Add Strict-Transport-Security header with max-age of at least 31536000"
    },
    {
      "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": "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": "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": "meta",
      "severity": "medium",
      "title": "Canonical / og:url mismatch",
      "description": "Canonical: https://www.ulisboa.pt/\nog:url: https://www.ulisboa.pt/info/home",
      "recommendation": "Ensure canonical URL and og:url match"
    },
    {
      "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 User-agent directive",
      "description": "robots.txt has no User-agent directive",
      "recommendation": "Add User-agent: * to apply rules to all crawlers"
    },
    {
      "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": "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": "54 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 3 H1 tags (recommended: exactly 1)",
      "recommendation": "Use only one H1 per page; use H2-H6 for subsections"
    },
    {
      "module": "content",
      "severity": "medium",
      "title": "External links without noopener",
      "description": "17 external links with target=\"_blank\" lack rel=\"noopener\"",
      "recommendation": "Add rel=\"noopener noreferrer\" to all target=\"_blank\" links"
    },
    {
      "module": "accessibility",
      "severity": "high",
      "title": "1 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": "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": "Slow response time",
      "description": "Average response time is 2580ms (should be < 2000ms)",
      "recommendation": "Optimize server response time — consider CDN, caching, or server upgrades"
    },
    {
      "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": "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": "crawl-budget",
      "severity": "medium",
      "title": "Calendar URLs detected",
      "description": "4 calendar-related URLs found — these create infinite crawl paths",
      "recommendation": "Block calendar/date pagination in robots.txt"
    },
    {
      "module": "indexing-checker",
      "severity": "high",
      "title": "Canonical points to different domain",
      "description": "Canonical: https://www.ulisboa.pt/ points to ulisboa.pt",
      "recommendation": "Ensure the canonical URL points to the same domain unless cross-domain canonicalization is intended"
    }
  ]
}
```

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
Start your free trial

Use Ctrl+P / Cmd+P to save as PDF