๐ŸŽฏ Aim Test

*{box-sizing:border-box} :root{–bg:#f3f6fb;–card:#fff;–text:#111827;–muted:#667085;–line:#e5e7eb;–dark:#111827;–blue:#2563eb;–purple:#7c3aed;–pink:#db2777;–yellow:#fee500;–green:#16a34a;–shadow:0 14px 38px rgba(15,23,42,.09)} html{scroll-behavior:auto} body{margin:0;background:radial-gradient(circle at top left,#dbeafe 0,transparent 25%),radial-gradient(circle at top right,#fce7f3 0,transparent 28%),var(–bg);font-family:Pretendard,’Noto Sans KR’,-apple-system,BlinkMacSystemFont,’Segoe UI’,sans-serif;color:var(–text);line-height:1.6} button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}.hidden{display:none!important} .aim-app{width:100%;max-width:900px;margin:0 auto;padding:8px 8px 52px} .hero{padding:32px 18px 26px;border-radius:0 0 28px 28px;background:rgba(255,255,255,.94);box-shadow:var(–shadow)} .hero-badge,.eyebrow{display:inline-flex;padding:7px 11px;border-radius:999px;background:var(–dark);color:#fff;font-size:12px;font-weight:950;letter-spacing:.04em} .hero h1{margin:14px 0 7px;font-size:38px;line-height:1.1}.hero p{margin:0;color:#475569;font-size:17px;font-weight:750}.hero-note{margin-top:15px;padding:11px 12px;border:1px solid #dbeafe;border-radius:14px;background:#eff6ff;color:#64748b;font-size:12px} .card{margin-top:14px;padding:21px 14px;border:1px solid var(–line);border-radius:22px;background:var(–card);box-shadow:var(–shadow)} .card h2{margin:12px 0 7px;font-size:25px}.muted{margin:0;color:var(–muted);font-size:14px}.center{text-align:center} .field{display:grid;gap:8px;margin-top:17px}.field>span{font-size:14px;font-weight:900}.field input{width:100%;height:50px;padding:0 14px;border:1px solid #d6dce5;border-radius:14px;outline:none} .difficulty-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.difficulty{padding:13px 8px;border:1px solid var(–line);border-radius:15px;background:#f8fafc;color:var(–text)}.difficulty b,.difficulty small{display:block}.difficulty small{margin-top:3px;color:var(–muted);font-size:11px}.difficulty.active{border-color:#7c3aed;background:#ede9fe;color:#5b21b6} .summary-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:16px}.summary-grid div{padding:14px 6px;border-radius:15px;background:#f8fafc;text-align:center}.summary-grid strong,.summary-grid span{display:block}.summary-grid span{font-size:11px;color:var(–muted)} .guide-box{margin-top:16px;padding:15px;border-radius:17px;background:#f8fafc}.guide-box h3{margin:0}.guide-box ol{margin:8px 0 0;padding-left:20px;color:#475569;font-size:14px} .primary-button{width:100%;min-height:53px;margin-top:17px;border:0;border-radius:16px;background:linear-gradient(135deg,var(–blue),var(–purple));color:#fff;font-size:16px;font-weight:950} .countdown-icon,.analysis-icon{font-size:60px}#countdownNumber{font-size:76px!important;margin:5px 0!important} .game-screen{margin-top:0} .hud{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:10px}.hud div,.footer-stat{padding:11px 8px;border:1px solid var(–line);border-radius:15px;background:#fff;text-align:center}.hud span,.footer-stat span{display:block;color:var(–muted);font-size:11px}.hud strong,.footer-stat strong{font-size:19px} .game-field{position:relative;width:100%;height:520px;min-height:300px;max-height:720px;overflow:hidden;border:1px solid #263244;border-radius:24px;background:radial-gradient(circle at center,#1f2937 0,#111827 65%,#05070b 100%);box-shadow:inset 0 0 60px rgba(0,0,0,.45);touch-action:none;user-select:none} .crosshair-guide{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);color:rgba(255,255,255,.06);font-size:46px;font-weight:1000;letter-spacing:.12em} .target{position:absolute;border:0;border-radius:50%;background:radial-gradient(circle,#fff 0 9%,#ef4444 10% 38%,#fff 39% 52%,#2563eb 53% 72%,#111827 73% 100%);box-shadow:0 0 0 5px rgba(255,255,255,.08),0 8px 22px rgba(0,0,0,.35);transform:scale(.7);animation:targetIn .12s ease-out forwards;touch-action:manipulation} @keyframes targetIn{to{transform:scale(1)}} .hit-effect{position:absolute;width:18px;height:18px;border-radius:50%;border:3px solid #22c55e;pointer-events:none;animation:hit .42s ease-out forwards}@keyframes hit{to{transform:scale(4);opacity:0}} .miss-effect{position:absolute;color:#fca5a5;font-size:14px;font-weight:950;pointer-events:none;animation:floatUp .55s ease-out forwards}@keyframes floatUp{to{transform:translateY(-24px);opacity:0}} .combo-pop{position:absolute;left:50%;top:20px;transform:translateX(-50%);padding:7px 11px;border-radius:999px;background:rgba(0,0,0,.45);color:#f9a8d4;font-weight:950;animation:comboPop .7s ease-out forwards}@keyframes comboPop{to{transform:translate(-50%,-15px);opacity:0}} .game-footer{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px} .analysis-track{height:11px;margin-top:20px;overflow:hidden;border-radius:999px;background:#e5e7eb}.analysis-bar{width:38%;height:100%;background:linear-gradient(90deg,var(–blue),var(–purple));animation:load 1.05s infinite linear}@keyframes load{from{transform:translateX(-120%)}to{transform:translateX(300%)}} .ad-placeholder{min-height:120px;margin-top:17px;display:flex;align-items:center;justify-content:center;border-radius:16px;background:#f8fafc;color:#94a3b8} .result-hero{margin-top:14px;padding:32px 15px;border-radius:28px;background:linear-gradient(145deg,#111827,#312e81,#831843);color:#fff;text-align:center}.result-kicker{font-size:12px;font-weight:950;letter-spacing:.12em}.result-icon{font-size:70px}.result-hero p{margin:0}.final-score{font-size:96px;font-weight:1000;line-height:1.05}.final-percentile{font-size:23px;font-weight:950;color:#f9a8d4}.final-grade{max-width:380px;margin:16px auto 0;padding:13px;border-radius:16px;background:rgba(255,255,255,.12);font-size:22px;font-weight:950}.final-message{margin-top:13px!important;color:rgba(255,255,255,.86)} .result-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-top:15px}.result-grid div{padding:14px 8px;border-radius:15px;background:#f8fafc;text-align:center}.result-grid span,.result-grid strong{display:block}.result-grid span{color:var(–muted);font-size:11px}.result-grid strong{font-size:20px} .ability-list,.leaderboard{display:grid;gap:10px;margin-top:15px}.ability-item{padding:13px;border-radius:15px;background:#f8fafc}.ability-head{display:flex;justify-content:space-between;font-size:13px}.ability-track{height:9px;margin-top:7px;border-radius:999px;background:#e5e7eb;overflow:hidden}.ability-bar{display:block;height:100%;background:linear-gradient(90deg,var(–blue),var(–purple))} .style-type{margin-top:15px;padding:17px;border-radius:17px;background:#f8fafc}.style-type h3{margin:0}.style-type p{margin:7px 0 0;color:#475569} .tag-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:15px}.tag-list span{padding:9px 11px;border-radius:999px;background:#ede9fe;color:#5b21b6;font-size:13px;font-weight:850} .rank-row{display:grid;grid-template-columns:46px 1fr auto;gap:10px;padding:11px 12px;border-radius:13px;background:#f8fafc} .action-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.action-button{min-height:50px;border:0;border-radius:14px;font-weight:900}.dark{background:var(–dark);color:#fff}.yellow{background:var(–yellow)}.blue{background:#e0f2fe;color:#075985}.purple{background:#ede9fe;color:#5b21b6}.tiny-note,.disclaimer{color:#94a3b8;font-size:11px;text-align:center} @media(max-width:650px){.hero h1{font-size:32px}.hud{grid-template-columns:1fr 1fr}.result-grid{grid-template-columns:1fr 1fr}} @media(max-width:430px){.difficulty-grid{grid-template-columns:1fr}.crosshair-guide{font-size:28px}.final-score{font-size:78px}.action-grid{grid-template-columns:1fr}} (function(init){ if (document.readyState === ‘loading’) { document.addEventListener(‘DOMContentLoaded’, init, {once:true}); } else { init(); } })(function () { ‘use strict’; const GAME_DURATION = 10; const ANALYSIS_DELAY = 2600; const $ = (id) => document.getElementById(id); const screens = {start:$(‘startScreen’),countdown:$(‘countdownScreen’),game:$(‘gameScreen’),analysis:$(‘analysisScreen’),gate:$(‘resultGateScreen’),result:$(‘resultScreen’)}; const difficultySettings = {easy:{label:’Easy’,size:78,bonus:0.8},normal:{label:’Normal’,size:58,bonus:1},hard:{label:’Hard’,size:42,bonus:1.25}}; let difficulty=’easy’,nickname=”,score=0,misses=0,combo=0,bestCombo=0,reactionTimes=[],targetCreatedAt=0,targetEl=null,running=false,startAt=0,rafId=null,finalData=null,countdownId=null,analysisInterval=null,analysisTimeout=null; function hideAll(){Object.values(screens).forEach(el=>el.classList.add(‘hidden’))} function showOnly(screen){hideAll();screen.classList.remove(‘hidden’)} function getViewportHeight(){return(window.visualViewport&&window.visualViewport.height)||window.innerHeight||700} function getTopOffset(){let offset=8;const wpbar=document.getElementById(‘wpadminbar’);if(wpbar){const r=wpbar.getBoundingClientRect();if(r.bottom>0)offset=Math.max(offset,r.bottom+8)}return offset} function alignTo(el,smooth=false){if(!el)return;requestAnimationFrame(()=>{const r=el.getBoundingClientRect();const y=window.pageYOffset+r.top-getTopOffset();window.scrollTo({top:Math.max(0,y),behavior:smooth?’smooth’:’auto’})})} function fitGameField(){const field=$(‘gameField’),hud=screens.game.querySelector(‘.hud’),footer=screens.game.querySelector(‘.game-footer’),usable=getViewportHeight()-getTopOffset()-hud.offsetHeight-footer.offsetHeight-34;field.style.height=Math.max(300,Math.min(720,usable))+’px’} function validateStart(){$(‘startButton’).disabled=!$(‘nickname’).value.trim()} function resetState(){score=0;misses=0;combo=0;bestCombo=0;reactionTimes=[];running=false;finalData=null;clearInterval(countdownId);clearInterval(analysisInterval);clearTimeout(analysisTimeout);cancelAnimationFrame(rafId);if(targetEl)targetEl.remove();targetEl=null;$(‘timeValue’).textContent=GAME_DURATION.toFixed(1);updateHud()} function accuracy(){const total=score+misses;return total?Math.round(score/total*100):100} function averageReaction(){return reactionTimes.length?Math.round(reactionTimes.reduce((a,b)=>a+b,0)/reactionTimes.length):0} function updateHud(){$(‘scoreValue’).textContent=score;$(‘missValue’).textContent=misses;$(‘accuracyValue’).textContent=accuracy()+’%’;$(‘liveReaction’).textContent=reactionTimes.length?averageReaction()+’ms’:’-‘;$(‘liveCombo’).textContent=bestCombo} function createEffect(x,y,type){const el=document.createElement(‘div’);el.className=type===’hit’?’hit-effect’:’miss-effect’;el.style.left=x+’px’;el.style.top=y+’px’;if(type===’miss’)el.textContent=’MISS’;$(‘gameField’).appendChild(el);setTimeout(()=>el.remove(),700)} function showCombo(){if(combopop.remove(),750)} function spawnTarget(){if(!running)return;if(targetEl)targetEl.remove();const field=$(‘gameField’),cfg=difficultySettings[difficulty],size=cfg.size,padding=8,maxX=Math.max(0,field.clientWidth-size-padding*2),maxY=Math.max(0,field.clientHeight-size-padding*2);targetEl=document.createElement(‘button’);targetEl.className=’target’;targetEl.type=’button’;targetEl.style.width=size+’px’;targetEl.style.height=size+’px’;targetEl.style.left=padding+Math.random()*maxX+’px’;targetEl.style.top=padding+Math.random()*maxY+’px’;targetEl.setAttribute(‘aria-label’,’Target’);targetEl.addEventListener(‘pointerdown’,function(e){e.preventDefault();e.stopPropagation();if(!running)return;const rect=field.getBoundingClientRect();reactionTimes.push(Math.max(1,Math.round(performance.now()-targetCreatedAt)));score++;combo++;bestCombo=Math.max(bestCombo,combo);createEffect(e.clientX-rect.left,e.clientY-rect.top,’hit’);showCombo();if(navigator.vibrate)navigator.vibrate(12);updateHud();spawnTarget()});field.appendChild(targetEl);targetCreatedAt=performance.now()} function addCountdownOverlay(){const old=document.getElementById(‘aimCountdownOverlay’);if(old)old.remove();let n=3;const ov=document.createElement(‘div’);ov.id=’aimCountdownOverlay’;ov.style.cssText=’position:absolute;z-index:20;inset:0;display:grid;place-items:center;background:rgba(17,24,39,.82);color:#fff;text-align:center;border-radius:24px’;ov.innerHTML=’
Get ready
3
‘;$(‘gameField’).appendChild(ov);const val=$(‘aimCountdownValue’);countdownId=setInterval(()=>{n–;if(n>0)val.textContent=n;else if(n===0)val.textContent=’GO!’;else{clearInterval(countdownId);countdownId=null;ov.remove();startGameTimer()}},700)} function prepareGame(){showOnly(screens.game);fitGameField();requestAnimationFrame(()=>{requestAnimationFrame(()=>{alignTo(screens.game,false);setTimeout(addCountdownOverlay,100)})})} function startGameTimer(){running=true;startAt=performance.now();spawnTarget();function tick(){if(!running)return;const left=Math.max(0,GAME_DURATION-(performance.now()-startAt)/1000);$(‘timeValue’).textContent=left.toFixed(1);if(left{i=(i+1)%messages.length;$(‘analysisMessage’).textContent=messages[i]},700);analysisTimeout=setTimeout(()=>{clearInterval(analysisInterval);buildResult();showOnly(screens.gate);alignTo(screens.gate,false);try{(adsbygoogle=window.adsbygoogle||[]).push({})}catch(e){}},ANALYSIS_DELAY)} function percentile(weightedScore){if(weightedScore>=90)return 1;if(weightedScore>=80)return 3;if(weightedScore>=70)return 7;if(weightedScore>=60)return 15;if(weightedScore>=50)return 28;if(weightedScore>=40)return 45;if(weightedScore>=30)return 63;if(weightedScore>=20)return 78;return 92} function gradeData(weighted,acc,rt){if(weighted>=80&&acc>=92)return{name:’Pro-Level Aim’,message:’Elite aimโ€”you have both speed and accuracy locked in.’,style:’Precision Assault’,desc:’You can switch targets quickly without sacrificing accuracy.’,games:[‘VALORANT’,’Counter-Strike 2′,’Overwatch 2′,’Apex Legends’,’Call of Duty’]};if(weighted>=65)return{name:’FPS Ace’,message:’Your target-switching speed is seriously impressive.’,style:’Speed Aimer’,desc:’You spot targets fast and click before most players can react.’,games:[‘VALORANT’,’Overwatch 2′,’PUBG’,’Call of Duty’,’THE FINALS’]};if(acc>=93)return{name:’Deadeye’,message:’Your accuracy is your superpowerโ€”you rarely miss.’,style:’Accuracy Specialist’,desc:’You take the sure shot instead of rushing for speed.’,games:[‘PUBG’,’Rainbow Six Siege’,’Counter-Strike 2′,’VALORANT’,’Sniper games’]};if(rt&&rt=40)return{name:’Above Average’,message:’That is a strong, well-balanced performance.’,style:’All-Rounder’,desc:’You have no major weak spot and can adapt to a wide range of genres.’,games:[‘PUBG’,’Overwatch 2′,’VALORANT’,’Fortnite’,’Sports games’]};return{name:’Rising Star’,message:’A little practice could send your score climbing fast.’,style:’Practice Mode’,desc:’Try slowing down just enough to keep your eyes locked on each target.’,games:[‘Casual shooters’,’Fortnite’,’Splatoon’,’Puzzle action games’,’Rhythm games’]}} function buildResult(){const cfg=difficultySettings[difficulty],acc=accuracy(),rt=averageReaction(),weighted=Math.round(score*cfg.bonus*(.55+acc/220)),pct=percentile(weighted),gd=gradeData(weighted,acc,rt),speedScore=Math.max(10,Math.min(100,rt?Math.round(125-rt/4):10)),accuracyScore=acc,controlScore=Math.max(10,Math.min(100,Math.round(accuracyScore*.65+bestCombo*2.5))),focusScore=Math.max(10,Math.min(100,Math.round(accuracyScore*.55+score*.9))),fpsScore=Math.round((speedScore+accuracyScore+controlScore+focusScore)/4);finalData={weighted,acc,rt,pct,gd,speedScore,accuracyScore,controlScore,focusScore,fpsScore};$(‘finalScore’).textContent=weighted;$(‘finalPercentile’).textContent=’Top ‘+pct+’% nationwide’;$(‘finalGrade’).textContent=gd.name;$(‘finalMessage’).textContent=gd.message;$(‘statScore’).textContent=score;$(‘statAccuracy’).textContent=acc+’%’;$(‘statReaction’).textContent=rt?rt+’ms’:’-‘;$(‘statCombo’).textContent=bestCombo;$(‘statMiss’).textContent=misses;$(‘statDifficulty’).textContent=cfg.label;const abilities=[[‘Aim speed’,speedScore],[‘Accuracy’,accuracyScore],[‘Mouse control’,controlScore],[‘Focus’,focusScore],[‘FPS fit’,fpsScore]];$(‘abilityList’).innerHTML=abilities.map(item=>’
‘+item[0]+’‘+item[1]+’ pts
‘).join(”);$(‘styleType’).innerHTML=’

‘+gd.style+’

‘+gd.desc+’

‘;$(‘gameTags’).innerHTML=gd.games.map(g=>’‘+g+’‘).join(”);let ranking=[];try{ranking=JSON.parse(localStorage.getItem(‘aimTestRankingV3′)||'[]’)}catch(e){}ranking.push({name:nickname||’Anonymous’,score:weighted,acc});ranking.sort((a,b)=>b.score-a.score);ranking=ranking.slice(0,30);localStorage.setItem(‘aimTestRankingV3′,JSON.stringify(ranking));const defaults=[{name:’HEADSHOT’,score:96,acc:97},{name:’Aim Wizard’,score:88,acc:95},{name:’Lightning’,score:82,acc:93},{name:’FPS Ace’,score:76,acc:92},{name:’Focus Mode’,score:69,acc:94}];$(‘leaderboard’).innerHTML=[…ranking,…defaults].sort((a,b)=>b.score-a.score).slice(0,10).map((v,i)=>’
#’+(i+1)+’‘+v.name+’ ยท ‘+v.acc+’%‘+v.score+’ pts
‘).join(”)} $(‘nickname’).addEventListener(‘input’,validateStart);document.querySelectorAll(‘.difficulty’).forEach(btn=>{btn.addEventListener(‘click’,function(){document.querySelectorAll(‘.difficulty’).forEach(b=>b.classList.remove(‘active’));this.classList.add(‘active’);difficulty=this.dataset.level})});$(‘startButton’).addEventListener(‘click’,function(){nickname=$(‘nickname’).value.trim();if(!nickname)return;resetState();prepareGame()});$(‘gameField’).addEventListener(‘pointerdown’,function(e){if(!running||e.target.classList.contains(‘target’))return;misses++;combo=0;const rect=this.getBoundingClientRect();createEffect(e.clientX-rect.left,e.clientY-rect.top,’miss’);updateHud()});$(‘revealResultButton’).addEventListener(‘click’,function(){showOnly(screens.result);alignTo(screens.result,true)});$(‘retryButton’).addEventListener(‘click’,function(){resetState();$(‘nickname’).value=”;validateStart();showOnly(screens.start);alignTo(screens.start,true)});$(‘copyLinkButton’).addEventListener(‘click’,async function(){try{await navigator.clipboard.writeText(location.href);alert(‘Link copied!’)}catch(e){alert(‘Please copy the link directly from your address bar.’)}});$(‘shareButton’).addEventListener(‘click’,async function(){if(!finalData)return;const text=’I scored ‘+finalData.weighted+’ points on Aim Testโ€”top ‘+finalData.pct+’% nationwide! Can you beat me?’;if(navigator.share){try{await navigator.share({title:’Aim Test V3′,text,url:location.href});return}catch(e){}}try{await navigator.clipboard.writeText(text+’\n’+location.href);alert(‘Share text copied!’)}catch(e){}});$(‘saveImageButton’).addEventListener(‘click’,function(){if(!finalData)return;const canvas=$(‘resultCanvas’),ctx=canvas.getContext(‘2d’),g=ctx.createLinearGradient(0,0,canvas.width,canvas.height);g.addColorStop(0,’#111827′);g.addColorStop(.5,’#312e81′);g.addColorStop(1,’#831843′);ctx.fillStyle=g;ctx.fillRect(0,0,canvas.width,canvas.height);ctx.textAlign=’center’;ctx.fillStyle=’#fff’;ctx.font=’900 34px sans-serif’;ctx.fillText(‘AIM TEST V3′,540,110);ctx.font=’100px sans-serif’;ctx.fillText(‘๐ŸŽฏ’,540,245);ctx.font=’700 38px sans-serif’;ctx.fillText(‘FINAL SCORE’,540,355);ctx.font=’1000 170px sans-serif’;ctx.fillText(finalData.weighted+’ pts’,540,555);ctx.fillStyle=’#f9a8d4′;ctx.font=’900 52px sans-serif’;ctx.fillText(‘TOP ‘+finalData.pct+’% NATIONWIDE’,540,655);ctx.fillStyle=’#fff’;ctx.font=’900 60px sans-serif’;ctx.fillText(finalData.gd.name,540,800);ctx.font=’700 34px sans-serif’;ctx.fillText(‘Accuracy ‘+finalData.acc+’% ยท Avg. reaction ‘+(finalData.rt||’-‘)+’ms’,540,930);ctx.font=’800 38px sans-serif’;ctx.fillText((nickname||’Anonymous’)+’โ€™s result’,540,1045);ctx.font=’900 34px sans-serif’;ctx.fillText(‘test.eonis.kr’,540,1230);const a=document.createElement(‘a’);a.download=’aim-test-‘+finalData.weighted+’point.png’;a.href=canvas.toDataURL(‘image/png’);a.click()});window.addEventListener(‘resize’,()=>{if(!screens.game.classList.contains(‘hidden’))fitGameField()});if(window.visualViewport)window.visualViewport.addEventListener(‘resize’,()=>{if(!screens.game.classList.contains(‘hidden’))fitGameField()});validateStart() }); Aim Test V3๏ฝœ10-Second Aim Challenge
๐ŸŽฏ AIM TEST V3

Aim Test

Click each target as quickly and accurately as you can for 10 seconds.

Works on mobile and desktop. Your results may vary depending on your device and screen size.
STEP 01

Set Up Your Test

Choose a nickname and difficulty, then letโ€™s go.

Difficulty
10 secTime limit
LiveAccuracy tracking
Top %Results analysis

How It Works

  1. Click the center of each target as fast as you can.
  2. Clicking empty space counts as a miss.
  3. After 10 seconds, weโ€™ll analyze your score and accuracy.
๐Ÿงฟ ์•ก์šด ๋ง‰๋Š” ์ˆ˜ํ˜ธ๋ถ€์  ๋ฐ›๊ธฐ โ†’