Beautiful, private, client-side IQ test.
Vanilla JS • No tracking • 60 matrices • Results in seconds
🔗 Repo: github.com/Xeven777/OpenRpm
🚀 Live: https://xeven777.github.io/OpenRpm/ (after Pages enable)
- 🧠 True Raven's 60 — 5 series
A-E(A/B6 options,C/D/E8 options ), 20-minute timer with visual countdown - 🎂 Age-fair scoring —
14-15·16-17·18-30(peak) ·31-35→56+with correctionfinalIQ = round(baseIQ*100/agePercent)— fair for teens & older adults - 📊 IQ + Percentile — cubic spline
raw → baseIQ(30→82, 40→95, 50→110) + normal CDF (118 → 88th percentile) - 📈 Beautiful results — hero
Instrument SerifIQ, bell curve (55-145) with your marker + 5-axis radarA-E(solid = you, dashed = expected) - 🔗 Share & PDF — one-tap
Share+Download PDF/ print - ⚡ Fast & smooth — parallel preload, instant image swap, no framework
- ⌨️ Keyboard & a11y —
1-8to answer,←/→+Enterto navigate,button[role=radio]+focus-visible - 💾 Resilient — auto-saves to
localStorage, resume modal if you refresh (24h) - 🔤 Polished type — Inter + Instrument Serif via Google Fonts, dark premium UI
- 🔒 Private — 100% local, no server, no tracking
- 🌐 English — clean single-language bundle
- Pick age →
Age 18-30is peak (100), teens14-15/16-17get small boost,56+gets +42% (70denominator) - 20 min, 60 matrices — 5 series
A-E(A/B6 options,C/D/E8 options). Progress:Question 7 of 60 (Series B)+ thin timer bar (white → orange → red) - Scoring:
// script.js:121, 590 baseIQ = splineInterpolate(rawScore) // 0→0, 30→82, 40→95, 50→110, 60→140 finalIQ = Math.round(baseIQ * 100 / agePercent) percentile = normalCDF((finalIQ-100)/15) // 118 → 88th
- Reliability — compares each series
A-EvsNORMATIVE_DISTRIBUTION(script.js:8). IfSeries Adeviation ≤ -3 or >2 series deviate >2 → flagged as unreliable / attention drift.
- No framework —
index.html+style.css+script.js+answers.js(base64) +translations.js - 66 SVGs in
images/1.svg…60.svg(potrace) - Fonts via CDN — no local
fonts/ubuntu.ttfneeded - Storage —
raven_age,raven_progress_v1inlocalStorage
.
├── index.html # single page — intro / test / results-v2
├── style.css # Inter + dark tokens + radar/bell styles + print
├── script.js # RavenApp, spline, preload×6, keyboard, radar/bell SVG
├── translations.js # en only (age_14_15 etc.)
├── answers.js # base64 answer key
├── images/1.svg…60.svg
└── favicon/
Scoring & norms from the clinical manual:
PRs welcome!
GPLv3+ — see LICENSE. Share, fork, improve. 💚
Made with 🧠 + ☕ by Xeven

