Pakistan's largest free freelancing skills training program. Initiative of Ministry of IT & Telecom, funded by Ignite, executed by Virtual University of Pakistan. 5.5M+ trained since 2018.
Functional, content-rich, trusted brand. But the homepage is heavy (367 KB, 3.5s), missing modern SEO (no JSON-LD, no canonical), no CTAs above the fold, and the counter animation hides real impact from non-JS users. 3 critical, 5 medium, 4 low findings below.
📊 Snapshot
200
Homepage status
367 KB
HTML payload
3.58s
Load time (cold)
5,821,860
Real enrollment stat
8
Visible course IDs
101
Images (all with alt)
9
Public routes
0
Schema.org JSON-LD
✅ What's Working
All 11 key pages return 200 OK — homepage, register, courses, FAQ, blog, news, contact, success stories, how-it-works, WhatsDigiSkills, FAQs
Real stats loaded server-side — counter shows 5,821,860 enrollments, not zeros (animation is decorative, not blocking)
All 101 images have alt text — exceptional accessibility baseline
Mobile responsive — 15 media queries, Bootstrap 3 framework, 2 viewport metas
Security headers in place — X-Frame-Options SAMEORIGIN, X-Content-Type-Options nosniff
Fresh news — Aug 7, 2026 Rector visit, Batch-04 live
LMS reachable at lms.digiskills.pk (302 → login)
🔴 Critical Findings (3)
C1 · 367 KB HTML with 44 inline scripts — page weight is 3x what it should be
Severity CRITICAL · GET / (Default.aspx) · Affects every visitor
Homepage HTML = 367 KB. Modern best practice: <100 KB compressed.
44 inline <script> blocks. Most are third-party trackers, chat widgets, analytics — not critical features.
3.58s cold load time. On 3G/EDGE in Pakistan = 10s+. Drops engagement ~40% per Google studies.
No external CSS minification visible (likely all bundled in IIS response).
Fix: Audit each of 44 scripts. Remove unused (chat widgets when chat is offline, ad pixels). Defer non-critical (analytics, social embeds). Move inline JS to minified bundles. Target: <120 KB HTML. Add Cloudflare APO or similar edge cache.
C2 · Zero schema.org structured data — invisible to Google rich results
Severity CRITICAL · All pages · Affects SEO & AI search
No application/ld+json blocks found. Zero JSON-LD on any probed page.
No Course schema → Google can't show your 9 courses as rich cards in search.
No Organization schema → Knowledge Panel for "DigiSkills Pakistan" is weak.
No Event schema for Batch-04 launch → missing event search visibility.
No FAQ schema → FAQ section isn't eligible for Google FAQ rich snippets.
No BreadcrumbList → SERP shows ugly URLs instead of "Home > Courses > FSD404".
Fix: Add Course, Organization, FAQPage, Event, and BreadcrumbList JSON-LD blocks. Highest-leverage single change. Reference: schema.org/Course. Add to /Courses.aspx, /FAQs.aspx, and homepage.
C3 · Hero section has NO enroll CTA above the fold
User opens page. First screen shows: navbar + slider + "Conceived/Funded/Executed By" partner logos.
"Enroll Now" button exists but is below the fold in the "How It Works" area (further down).
Visitor intent on this page is overwhelmingly "I want to enroll" — the CTA should be the loudest thing on screen.
Currently 38 "Register" mentions across page, but visual hierarchy doesn't guide the eye to them.
Fix: Add prominent "Enroll Now — Free" button in top-right of navbar (sticky) AND a large CTA card in hero beside/under the slider. Batch-04 status badge ("Enrollments Open") should pulse at top. See digiskills.hkus2.s4s.host for reference implementation.
🟡 Medium Findings (5)
M1 · Homepage course count says 8, not 9 — 3D Modeling missing from card grid
Marketing claim: 9 courses. The 9th (3D Modeling per blog/news) is not in the homepage course grid.
86 mentions of "3d|modeling|animation|vlog" on homepage — but as keywords, not as a course card.
Fix: Either add the 9th course card OR update marketing copy to say "8 courses (9th coming in Batch-04)". Don't claim 9 when 8 are visible.
M2 · No canonical URL — duplicate content risk across .aspx query variants
Severity MEDIUM · All pages
rel="canonical" count = 0 across homepage.
ASP.NET WebForms generates multiple URLs for same content (Default.aspx, Default.aspx?ID=1, etc.).
Each course detail: CourseDetails.aspx?Id=AIP301 — without canonical, Google indexes all variants.
Fix: Add <link rel="canonical" href="https://digiskills.pk/CourseDetails.aspx?Id=AIP301"> to every course page. Add canonical to all 9 courses, all news pages, all blog posts.
M3 · Page weight not gzip-compressed — wastes 60%+ bandwidth
Severity MEDIUM · IIS response
No Content-Encoding: gzip header visible in probe.
367 KB raw HTML. With gzip: ~50 KB. With brotli: ~35 KB.
For a Pakistani audience on mobile data, this is the single biggest win.
Fix: Enable dynamic compression in IIS: <httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files"> + add br MIME types. Or move to Cloudflare with auto-gzip/brotli.
M4 · Counter animation hides stats from non-JS and SEO crawlers
Severity MEDIUM · /Default.aspx counter section
id="counter1" initial render shows "0" — real value (5,821,860) only loads after JS animation.
Googlebot can render JS but defers it. Bing, DuckDuckGo, archive crawlers often don't.
When stats are zero, the "5.5M+ trained" claim looks fake to crawlers.
Same issue for counter-counts class — initial display is "0" in markup.
Fix: Render the real server-side value first, then JS animates up from it. E.g. <span id="counter1">5,821,860</span> then JS counts from 0 → 5,821,860. Crawlers see real number; humans see animation.
M5 · Success stories income figures are unverifiable — no source methodology
Severity MEDIUM · /Default.aspx + /SuccessStories.aspx
Stories cite specific monthly incomes ($2,800/mo for Full Stack Dev, $2,200/mo for UI/UX).
No methodology disclosed. Are these gross earnings? Net after Fiverr fees? USD or PKR converted?
For a government program, unverifiable claims undermine trust.
Counter shows 314,927 stories but no breakdown by tier (top vs median income).
Fix: Add methodology footnote: "Income figures are self-reported gross monthly earnings in USD via Fiverr/Upwork, median of top quartile over 6-month period." Or display income ranges ($1,000–$3,000) instead of point estimates.
🟢 Low / Cosmetic (4)
L1 · Inline styles in headings — "font-size:28px" hardcoded 6+ times
Severity LOW · All pages
6+ headings have style="font-size: 28px; font-style: inherit;" inline.
Hard to maintain, overrides design system. Classic ASP.NET WebForms anti-pattern.
Fix: Move to CSS class. Add .section-title { font-size: 28px; } and remove all inline style overrides.
L2 · No aria-labelledby, no role attributes — partial a11y
Compare side-by-side with the live site to see what "modern DigiSkills.pk" could look like. The original is owned by Govt of Pakistan — this is a UX reference only, not a clone of their data.