Audit Result

UUID: 019e2b01-81da-72cc-8e90-c1cd9183b0b9

ppid.bpmpkaltim.id

https://ppid.bpmpkaltim.id/

Scanned 3 months ago

82
Fair Score
39 total checks
Passed
27
Warnings
10
Errors
2

Meta Information

  • Title Tag Pass

    Found 32 characters. Length is optimal.

  • Found 88 characters. Good snippet length.

  • Canonical found: https://ppid.bpmpkaltim.id

  • Favicon Pass

    Favicon found and reachable: /favicon.ico (HTTP 200).

    Favicon
  • Viewport configured: width=device-width, initial-scale=1

  • HTML Lang Pass

    Language declared as "id".

Content Structure

  • H1 Tag Pass

    Exactly one H1 found: "PPID BPMP Provinsi Kaltim".

  • Valid heading flow across 12 headings.

  • 1 of 6 images are missing alt text.

    Fix: Add meaningful alt attributes to all informative images for accessibility and image SEO.

Technical Optimization

  • HTTPS Pass

    Page is served over HTTPS.

  • 1 HTTPS hardening issues detected.

    • • Could not probe the HTTP version of this page.
    • • Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

    Fix: Set Strict-Transport-Security with a long max-age, add includeSubDomains, and redirect all HTTP requests to HTTPS.

  • Core security headers were detected.

    Full HTTP headers (19)
    • • alt-svc: h3=":443"; ma=86400
    • • cache-control: public, max-age=3600, stale-while-revalidate=300
    • • content-encoding: gzip
    • • content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' data: https://fonts.gstatic.com https://cdn.jsdelivr.net; img-src 'self' data: blob: https:; connect-src 'self'; frame-src 'self' https://www.youtube.com https://player.vimeo.com
    • • content-type: text/html; charset=utf-8
    • • date: Fri, 15 May 2026 09:39:31 GMT
    • • etag: "2pvbmanm0yzl6"
    • • permissions-policy: camera=(), microphone=(), geolocation=()
    • • referrer-policy: strict-origin-when-cross-origin same-origin
    • • server: nginx
    • • strict-transport-security: max-age=31536000; includeSubDomains; preload
    • • vary: rsc, next-router-state-tree, next-router-prefetch, next-router-segment-prefetch, Accept-Encoding
    • • x-content-type-options: nosniff nosniff
    • • x-frame-options: DENY SAMEORIGIN
    • • x-nextjs-cache: HIT
    • • x-nextjs-prerender: 1 1
    • • x-nextjs-stale-time: 300
    • • x-permitted-cross-domain-policies: master-only
    • • x-xss-protection: 1; mode=block 1; mode=block
  • CSP Quality Error

    4 CSP hardening issues detected.

    • • script-src/default-src permits 'unsafe-inline'.
    • • CSP is missing object-src 'none'.
    • • CSP is missing a base-uri restriction.
    • • CSP is missing frame-ancestors protection.
    • • Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' data: https://fonts.gstatic.com https://cdn.jsdelivr.net; img-src 'self' data: blob: https:; connect-src 'self'; frame-src 'self' https://www.youtube.com https://player.vimeo.com

    Fix: Tighten Content-Security-Policy by removing unsafe directives and adding object-src, base-uri, and frame-ancestors restrictions.

  • No first-party cookies were set during the initial page load.

  • Server response headers do not expose version tokens.

  • Domain does not appear to be behind Cloudflare.

  • Loaded in 2.11s (perceived).

    Fix: Reduce payload size, cache static assets, and remove non-critical JS from initial load.

  • 13 scripts and 3 styles may block rendering.

    • • script: https://ppid.bpmpkaltim.id/_next/static/chunks/03~yq9q893hmn.js
    • • script: https://ppid.bpmpkaltim.id/_next/static/chunks/021pgpxpp54nw.js
    • • script: https://ppid.bpmpkaltim.id/_next/static/chunks/0o8_sp-xlbx53.js
    • • script: https://ppid.bpmpkaltim.id/_next/static/chunks/14wkrpjt0qipu.js
    • • script: https://ppid.bpmpkaltim.id/_next/static/chunks/0495-i40bwcsf.js
    • • script: https://ppid.bpmpkaltim.id/_next/static/chunks/0owme1tsrydbh.js
    • • script: https://ppid.bpmpkaltim.id/_next/static/chunks/09nn.fxf9cxx4.js
    • • script: https://ppid.bpmpkaltim.id/_next/static/chunks/0-x08kyr9qg6k.js
    • • script: https://ppid.bpmpkaltim.id/_next/static/chunks/0cdgonv62odmd.js
    • • script: https://ppid.bpmpkaltim.id/_next/static/chunks/0sem~5qrag9he.js
    • • script: https://ppid.bpmpkaltim.id/_next/static/chunks/0pd9hhvkqgif8.js
    • • script: https://ppid.bpmpkaltim.id/_next/static/chunks/0clkr_x5ccbs1.js
    • • script: https://ppid.bpmpkaltim.id/_next/static/chunks/0oqx7t5.x68tj.js
    • • style: https://ppid.bpmpkaltim.id/_next/static/chunks/0nabm3gksyy2..css
    • • style: https://ppid.bpmpkaltim.id/_next/static/chunks/0c2zusf_r2-o4.css
    • • style: https://ppid.bpmpkaltim.id/_next/static/chunks/101nxy~xn14x~.css

    Fix: Defer non-critical scripts and inline critical CSS to improve first paint speed.

  • Text-like assets appear compressed.

  • Robots.txt Pass

    Found robots.txt (200).

  • Sitemap File Warning

    Sitemap missing or inaccessible at https://ppid.bpmpprovkaltim.id/sitemap.xml (no response).

    Fix: Publish a sitemap.xml and reference it in robots.txt with: Sitemap: https://ppid.bpmpkaltim.id/sitemap.xml

  • Robots meta found: index, follow

Accessibility Basics

  • All 0 controls are labeled.

  • Landmarks Warning

    Missing landmarks: header.

    Fix: Use semantic regions (<header>, <nav>, <main>, <footer>) for navigation and assistive tech.

  • Tap Target Size Warning

    25 interactive elements appear smaller than 48px.

    • • a.relative.px-3 (Beranda) - 76x36px
    • • a.relative.px-3 (Profil) - 57x36px
    • • a.relative.px-3 (Informasi Publik) - 124x36px
    • • a.relative.px-3 (Layanan Informasi) - 137x36px
    • • a.relative.px-3 (Tautan) - 68x36px
    • • button.fc-prev-button.fc-button (mundur) - 47x41px
    • • button.fc-next-button.fc-button (maju) - 47x41px
    • • button.fc-today-button.fc-button (Hari Ini) - 74x39px
    • • button.fc-dayGridMonth-button.fc-button (Bulan) - 62x39px
    • • button.fc-listWeek-button.fc-button (Daftar) - 69x39px
    • • a.fc-col-header-cell-cushion (Senin) - 35x28px
    • • a.fc-col-header-cell-cushion (Selasa) - 30x28px
    • • a.fc-col-header-cell-cushion (Rabu) - 37x28px
    • • a.fc-col-header-cell-cushion (Kamis) - 42x28px
    • • a.fc-col-header-cell-cushion (Jumat) - 38x28px
    • • a.fc-col-header-cell-cushion (Sabtu) - 36x28px
    • • a.fc-col-header-cell-cushion (Minggu) - 36x28px
    • • a#fc-dom-2.fc-daygrid-day-number (27 April 2026) - 26x32px
    • • a#fc-dom-4.fc-daygrid-day-number (28 April 2026) - 26x32px
    • • a#fc-dom-6.fc-daygrid-day-number (29 April 2026) - 26x32px
    • • a#fc-dom-8.fc-daygrid-day-number (30 April 2026) - 26x32px
    • • a#fc-dom-10.fc-daygrid-day-number (1 Mei 2026) - 17x32px
    • • a#fc-dom-12.fc-daygrid-day-number (2 Mei 2026) - 17x32px
    • • a#fc-dom-14.fc-daygrid-day-number (3 Mei 2026) - 17x32px
    • • a#fc-dom-16.fc-daygrid-day-number (4 Mei 2026) - 17x32px

    Fix: Increase target size to at least 48x48 CSS pixels for touch interactions.

Social & Rich Results

  • Core Open Graph tags are present.

  • og:image is present and absolute.

    Open Graph Image
  • twitter:card set to summary_large_image.

  • JSON-LD schema detected.

  • Manifest and Apple touch icon are configured.

  • 3 social preview quality issues detected.

    • • ISSUE: Preview image is too small; use at least 200x200.
    • • ISSUE: Preview image is below recommended size (1200x630).
    • • ISSUE: Preview image aspect ratio (1.00) differs from the recommended ~1.91:1.
    • • GUIDELINE: Optimal og:title length: 40-60 characters (acceptable: 10-70).
    • • GUIDELINE: Optimal og:description length: 110-160 characters (acceptable: 50-200).
    • • GUIDELINE: Optimal preview image size: 1200x630 pixels.
    • • GUIDELINE: Optimal preview image aspect ratio: 1.91:1.
    • • GUIDELINE: Optimal preview image file size: under 5 MB.
    • • GUIDELINE: Recommended twitter:card: summary_large_image.
    • • MEASURED: Image size: 0.01 MB
    • • MEASURED: Image dimensions: 113x113

    Fix: Use absolute OG/Twitter URLs, keep metadata lengths in recommended ranges, and provide a preview image near 1200x630 under 5MB.

Links Analysis

  • Checked 16 links. No broken internal links found.

  • No broken external links found in checked URLs.

  • Link Format Warning

    49 links are empty, invalid, or placeholder-only.

    • • href="(empty)" text="Sen"
    • • href="(empty)" text="Sel"
    • • href="(empty)" text="Rab"
    • • href="(empty)" text="Kam"
    • • href="(empty)" text="Jum"
    • • href="(empty)" text="Sab"
    • • href="(empty)" text="Min"
    • • href="(empty)" text="27"
    • • href="(empty)" text="28"
    • • href="(empty)" text="29"
    • • href="(empty)" text="30"
    • • href="(empty)" text="1"
    • • href="(empty)" text="2"
    • • href="(empty)" text="3"
    • • href="(empty)" text="4"
    • • href="(empty)" text="5"
    • • href="(empty)" text="6"
    • • href="(empty)" text="7"
    • • href="(empty)" text="8"
    • • href="(empty)" text="9"
    • • href="(empty)" text="10"
    • • href="(empty)" text="11"
    • • href="(empty)" text="12"
    • • href="(empty)" text="13"
    • • href="(empty)" text="14"
    • • href="(empty)" text="15"
    • • href="(empty)" text="16"
    • • href="(empty)" text="17"
    • • href="(empty)" text="18"
    • • href="(empty)" text="19"
    • • href="(empty)" text="20"
    • • href="(empty)" text="21"
    • • href="(empty)" text="22"
    • • href="(empty)" text="23"
    • • href="(empty)" text="24"
    • • href="(empty)" text="25"
    • • href="(empty)" text="26"
    • • href="(empty)" text="27"
    • • href="(empty)" text="28"
    • • href="(empty)" text="29"
    • • href="(empty)" text="30"
    • • href="(empty)" text="31"
    • • href="(empty)" text="1"
    • • href="(empty)" text="2"
    • • href="(empty)" text="3"
    • • href="(empty)" text="4"
    • • href="(empty)" text="5"
    • • href="(empty)" text="6"
    • • href="(empty)" text="7"

    Fix: Replace empty/#/javascript href values with real destinations or use buttons for non-navigation actions.

Performance & Runtime