1<!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="description" content="Free PS5 & PS4 controller calibration tool. Fix DualSense and DualShock 4 stick drift at the firmware level via WebHID â no software install, runs in Chrome."><meta name="viewport" content="width=device-width"><link rel="icon" type="image/png" href="/favicon.png"><meta name="generator" content="Astro v5.17.3"><title>PS5 Controller Calibration â DualShock & DualSense Stick Drift Fix</title><!-- SEO canonical & hreflang --><link rel="canonical" href="https://controllertest.io/ps-controller-calibration/"><link rel="alternate" hreflang="en" href="https://controllertest.io/ps-controller-calibration/"><link rel="alternate" hreflang="ja" href="https://controllertest.io/ja/ps-controller-calibration/"><link rel="alternate" hreflang="es" href="https://controllertest.io/es/ps-controller-calibration/"><link rel="alternate" hreflang="pt" href="https://controllertest.io/pt/ps-controller-calibration/"><link rel="alternate" hreflang="ko" href="https://controllertest.io/ko/ps-controller-calibration/"><link rel="alternate" hreflang="fr" href="https://controllertest.io/fr/ps-controller-calibration/"><link rel="alternate" hreflang="de" href="https://controllertest.io/de/ps-controller-calibration/"><link rel="alternate" hreflang="ru" href="https://controllertest.io/ru/ps-controller-calibration/"><link rel="alternate" hreflang="zh-tw" href="https://controllertest.io/zh-tw/ps-controller-calibration/"><link rel="alternate" hreflang="it" href="https://controllertest.io/it/ps-controller-calibration/"><link rel="alternate" hreflang="x-default" href="https://controllertest.io/ps-controller-calibration/"><meta name="astro-view-transitions-enabled" content="true"><meta name="astro-view-transitions-fallback" content="animate">
1<script type="module" src="/_astro/ClientRouter.astro_astro_type_script_index_0_lang.CDGfc0hd.js"></script>
1<!-- Nitro Ads -->
1<script data-cfasync="false">window.nitroAds=window.nitroAds||{createAd:function(){return new Promise(e=>{window.nitroAds.queue.push(["createAd",arguments,e])})},addUserToken:function(){window.nitroAds.queue.push(["addUserToken",arguments])},queue:[]};</script>
1<script data-cfasync="false" async src="https://s.nitropay.com/ads-2612.js"></script>
1<!-- Google AdSense -->
1<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-4887195146618385" crossorigin="anonymous"></script>
1<!-- Google tag (gtag.js) -->
vendor: 63 bytes, line 1
1<script async src="https://www.googletagmanager.com/gtag/js?id=
1G-W515YK1V5J
vendor: 11 bytes, line 1
1"></script>
1<script> 2
vendor: 158 bytes, lines 2-6
2window.dataLayer = window.dataLayer || []; 3 function gtag(){dataLayer.push(arguments);} 4 gtag('js', new Date()); 5 6 gtag('config', '
6G-W515YK1V5J
vendor: 12 bytes, lines 6-7
6'); 7
7</script>
7<!-- Dark mode script to prevent FOUC -->
7<script> 8 if (localStorage.getItem('gamepad-ui-theme') === 'dark' || (!('gamepad-ui-theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches)) { 9 document.documentElement.classList.add('dark'); 10 } else { 11 document.documentElement.classList.remove('dark'); 12 } 13 </script>
13<script type="application/ld+json"> 14 { 15 "@context": "https://schema.org", 16 "@type": "WebSite", 17 "name": "ControllerTest.io", 18 "url": "https://controllertest.io" 19 } 20 </script>
20<link rel="stylesheet" href="/_astro/about.B4iivQRA.css"> 21<style>html{font-size:14px;scroll-behavior:smooth}body{margin:0;padding:0;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,"sans-serif";background-color:#fafaf9;color:#1c1917;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color .5s ease-in-out,color .5s ease-in-out}.dark body{background-color:#0c0a09;color:#f5f5f4}::-moz-selection{background-color:#e7e5e4;color:#1c1917}::selection{background-color:#e7e5e4;color:#1c1917}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#e7e5e4;border-radius:10px}.dark ::-webkit-scrollbar-thumb{background:#292524}::-webkit-scrollbar-thumb:hover{background:#d6d3d1}.dark ::-webkit-scrollbar-thumb:hover{background:#44403c}.no-scrollbar::-webkit-scrollbar{display:none}.no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media(prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}[data-astro-transition-scope]{animation:none!important}} 22</style>
22<script>!(function(w,p,f,c){if(!window.crossOriginIsolated && !navigator.serviceWorker) return;c=w[p]=Object.assign(w[p]||{},{"lib":"/~partytown/","debug":false});c[f]=(c[f]||[]).concat(["dataLayer.push","gtag"])})(window,'partytown','forward');/* Partytown 0.11.2 - MIT QwikDev */ 23const t={preserveBehavior:!1},e=e=>{if("string"==typeof e)return[e,t];const[n,r=t]=e;return[n,{...t,...r}]},n=Object.freeze((t=>{const e=new Set;let n=[];do{Object.getOwnPropertyNames(n).forEach((t=>{"function"==typeof n[t]&&e.add(t)}))}while((n=Object.getPrototypeOf(n))!==Object.prototype);return Array.from(e)})());!function(t,r,o,i,a,s,c,l,d,p,u=t,f){function h(){f||(f=1,"/"==(c=(s.lib||"/~partytown/")+(s.debug?"debug/":""))[0]&&(d=r.querySelectorAll('script[type="text/partytown"]'),i!=t?i.dispatchEvent(new CustomEvent("pt1",{detail:t})):(l=setTimeout(v,(null==s?void 0:s.fallbackTimeout)||1e4),r.addEventListener("pt0",w),a?y(1):o.serviceWorker?o.serviceWorker.register(c+(s.swPath||"partytown-sw.js"),{scope:c}).then((function(t){t.active?y():t.installing&&t.installing.addEventListener("statechange",(function(t){"activated"==t.target.state&&y()}))}),console.error):v())))}function y(e){p=r.createElement(e?"script":"iframe"),t._pttab=Date.now(),e||(p.style.display="block",p.style.width="0",p.style.height="0",p.style.border="0",p.style.visibility="hidden",p.setAttribute("aria-hidden",!0)),p.src=c+"partytown-"+(e?"atomics.js?v=0.11.2":"sandbox-sw.html?"+t._pttab),r.querySelector(s.sandboxParent||"body").appendChild(p)}function v(n,o){for(w(),i==t&&(s.forward||[]).map((function(n){const[r]=e(n);delete t[r.split(".")[0]]})),n=0;n<d.length;n++)(o=r.createElement("script")).innerHTML=d[n].innerHTML,o.nonce=s.nonce,r.head.appendChild(o);p&&p.parentNode.removeChild(p)}function w(){clearTimeout(l)}s=t.partytown||{},i==t&&(s.forward||[]).map((function(r){const[o,{preserveBehavior:i}]=e(r);u=t,o.split(".").map((function(e,r,o){var a;u=u[o[r]]=r+1<o.length?u[o[r]]||(a=o[r+1],n.includes(a)?[]:{}):(()=>{let e=null;if(i){const{methodOrProperty:n,thisObject:r}=((t,e)=>{let n=t;for(let t=0;t<e.length-1;t+=1)n=n[e[t]];return{thisObject:n,methodOrProperty:e.length>0?n[e[e.length-1]]:void 0}})(t,o);"function"==typeof n&&(e=(...t)=>n.apply(r,...t))}return function(){let n;return e&&(n=e(arguments)),(t._ptf=t._ptf||[]).push(o,arguments),n}})()}))})),"complete"==r.readyState?h():(t.addEventListener("DOMContentLoaded",h),t.addEventListener("load",h))}(window,document,navigator,top,window.crossOriginIsolated);;(e=>{e.addEventListener("astro:before-swap",e=>{let r=document.body.querySelector("iframe[src*='/~partytown/']");if(r)e.newDocument.body.append(r)})})(document);</script>
23</head> <body class="bg-[#FDFCF8] dark:bg-stone-950 transition-colors duration-300 min-h-screen flex flex-col font-sans"> <style>astro-island,astro-slot,astro-static-slot{display:contents}</style>
23<script>(()=>{var e=async t=>{await(await t())()};(self.Astro||(self.Astro={})).load=e;window.dispatchEvent(new Event("astro:load"));})();</script>
23<script>(()=>{var A=Object.defineProperty;var g=(i,o,a)=>o in i?A(i,o,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[o]=a;var d=(i,o,a)=>g(i,typeof o!="symbol"?o+"":o,a);{let i={0:t=>m(t),1:t=>a(t),2:t=>new RegExp(t),3:t=>new Date(t),4:t=>new Map(a(t)),5:t=>new Set(a(t)),6:t=>BigInt(t),7:t=>new URL(t),8:t=>new Uint8Array(t),9:t=>new Uint16Array(t),10:t=>new Uint32Array(t),11:t=>1/0*t},o=t=>{let[l,e]=t;return l in i?i[l](e):void 0},a=t=>t.map(o),m=t=>typeof t!="object"||t===null?t:Object.fromEntries(Object.entries(t).map(([l,e])=>[l,o(e)]));class y extends HTMLElement{constructor(){super(...arguments);d(this,"Component");d(this,"hydrator");d(this,"hydrate",async()=>{var b;if(!this.hydrator||!this.isConnected)return;let e=(b=this.parentElement)==null?void 0:b.closest("astro-island[ssr]");if(e){e.addEventListener("astro:hydrate",this.hydrate,{once:!0});return}let c=this.querySelectorAll("astro-slot"),n={},h=this.querySelectorAll("template[data-astro-template]");for(let r of h){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("data-astro-template")||"default"]=r.innerHTML,r.remove())}for(let r of c){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("name")||"default"]=r.innerHTML)}let p;try{p=this.hasAttribute("props")?m(JSON.parse(this.getAttribute("props"))):{}}catch(r){let s=this.getAttribute("component-url")||"<unknown>",v=this.getAttribute("component-export");throw v&&(s+=` (export ${v})`),console.error(`[hydrate] Error parsing props for component ${s}`,this.getAttribute("props"),r),r}let u;await this.hydrator(this)(this.Component,p,n,{client:this.getAttribute("client")}),this.removeAttribute("ssr"),this.dispatchEvent(new CustomEvent("astro:hydrate"))});d(this,"unmount",()=>{this.isConnected||this.dispatchEvent(new CustomEvent("astro:unmount"))})}disconnectedCallback(){document.removeEventListener("astro:after-swap",this.unmount),document.addEventListener("astro:after-swap",this.unmount,{once:!0})}connectedCallback(){if(!this.hasAttribute("await-children")||document.readyState==="interactive"||document.readyState==="complete")this.childrenConnectedCallback();else{let e=()=>{document.removeEventListener("DOMContentLoaded",e),c.disconnect(),this.childrenConnectedCallback()},c=new MutationObserver(()=>{var n;((n=this.lastChild)==null?void 0:n.nodeType)===Node.COMMENT_NODE&&this.lastChild.nodeValue==="astro:end"&&(this.lastChild.remove(),e())});c.observe(this,{childList:!0}),document.addEventListener("DOMContentLoaded",e)}}async childrenConnectedCallback(){let e=this.getAttribute("before-hydration-url");e&&await import(e),this.start()}async start(){let e=JSON.parse(this.getAttribute("opts")),c=this.getAttribute("client");if(Astro[c]===void 0){window.addEventListener(`astro:${c}`,()=>this.start(),{once:!0});return}try{await Astro[c](async()=>{let n=this.getAttribute("renderer-url"),[h,{default:p}]=await Promise.all([import(this.getAttribute("component-url")),n?import(n):()=>()=>{}]),u=this.getAttribute("component-export")||"default";if(!u.includes("."))this.Component=h[u];else{this.Component=h;for(let f of u.split("."))this.Component=this.Component[f]}return this.hydrator=p,this.hydrate},e,this)}catch(n){console.error(`[astro-island] Error hydrating ${this.getAttribute("component-url")}`,n)}}attributeChangedCallback(){this.hydrate()}}d(y,"observedAttributes",["props"]),customElements.get("astro-island")||customElements.define("astro-island",y)}})();</script>
23<astro-island uid="Z24ppFS" prefix="r7" component-url="/_astro/DiscordBridge.CXHURiq2.js" component-export="default" renderer-url="/_astro/client.dXHaCmHv.js" props="{}" ssr client="load" opts="{"name":"DiscordBridge","value":true}"></astro-island> <astro-island uid="Z21o2Me" prefix="r8" component-url="/_astro/GamepadManager.CEeQpQQA.js" component-export="default" renderer-url="/_astro/client.dXHaCmHv.js" props="{"data-astro-transition-persist":[0,"astro-lyu3at5e-1"]}" ssr client="load" opts="{"name":"GamepadManager","value":true}" data-astro-transition-persist="astro-lyu3at5e-1"></astro-island> <astro-island uid="1RMyMH" prefix="r9" component-url="/_astro/Header.CTqUE_dm.js" component-export="default" renderer-url="/_astro/client.dXHaCmHv.js" props="{"currentPage":[0,"calibration"],"locale":[0,"en"]}" ssr client="load" opts="{"name":"Header","value":true}" await-children><nav class="fixed left-0 right-0 z-50 transition-all duration-300 top-0"><div class="absolute inset-0 h-[72px] bg-white/70 dark:bg-stone-950/70 backdrop-blur-xl border-b border-white/50 dark:border-stone-800/50 shadow-[0_1px_2px_rgba(0,0,0,0.02)] transition-colors"></div><div class="relative z-10 h-[72px] px-6 flex justify-center"><div class="max-w-7xl w-full flex items-center justify-between"><a href="/" class="flex items-center gap-3 cursor-pointer group"><div class="w-10 h-10 bg-stone-900 dark:bg-stone-100 rounded-xl flex items-center justify-center text-white dark:text-stone-900 shadow-lg shadow-stone-200 dark:shadow-stone-900/50 group-hover:bg-stone-800 dark:group-hover:bg-white transition-colors relative overflow-hidden"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="w-5 h-5 relative z-10"><rect x="2" y="6" width="20" height="12" rx="2"></rect><path d="M6 12h4m-2-2v4"></path><line x1="15" y1="11" x2="15" y2="11"></line><line x1="18" y1="13" x2="18" y2="13"></line></svg></div><span class="text-xl font-bold tracking-tight text-stone-800 dark:text-stone-100 group-hover:text-stone-600 dar
23k:group-hover:text-stone-300 transition-colors">ControllerTest.io</span></a><div class="hidden lg:flex items-center gap-0.5 bg-stone-100/40 dark:bg-stone-800/40 p-1 rounded-full backdrop-blur-md border border-stone-200/50 dark:border-stone-700/30 transition-colors overflow-x-auto no-scrollbar max-w-[680px] xl:max-w-none"><a href="/" class="px-3 py-1.5 rounded-full transition-all duration-300 text-sm font-medium whitespace-nowrap flex items-center gap-1.5 text-stone-500 dark:text-stone-400 hover:bg-white/50 dark:hover:bg-stone-800/50 hover:text-stone-900 dark:hover:text-stone-100">Home</a><a href="/stick-drift-test/" class="px-3 py-1.5 rounded-full transition-all duration-300 text-sm font-medium whitespace-nowrap flex items-center gap-1.5 text-stone-500 dark:text-stone-400 hover:bg-white/50 dark:hover:bg-stone-800/50 hover:text-stone-900 dark:hover:text-stone-100" title="Stick Drift Test" aria-label="Stick Drift Test"><span class="w-1.5 h-1.5 rounded-full bg-orange-500"></span>Drift</a><a href="/ps-controller-calibration/" class="px-3 py-1.5 rounded-full transition-all duration-300 text-sm font-medium whitespace-nowrap flex items-center gap-1.5 bg-white dark:bg-stone-800 text-stone-900 dark:text-stone-100 shadow-sm ring-1 ring-black/5 dark:ring-white/10" title="PS Controller Calibration" aria-label="PS Controller Calibration"><span class="w-1.5 h-1.5 rounded-full bg-emerald-500"></span>Calibration</a><a href="/polling-rate-test/" class="px-3 py-1.5 rounded-full transition-all duration-300 text-sm font-medium whitespace-nowrap flex items-center gap-1.5 text-stone-500 dark:text-stone-400 hover:bg-white/50 dark:hover:bg-stone-800/50 hover:text-stone-900 dark:hover:text-stone-100" title="Polling Rate Test" aria-label="Polling Rate Test"><span class="w-1.5 h-1.5 rounded-full bg-cyan-500"></span>Polling Rate</a><a href="/vibration-test/" class="px-3 py-1.5 rounded-full transition-all duration-300 text-sm font-medium whitespace-nowrap flex items-center gap-1.5 text-stone-500 dark:text-stone-400 hover:bg-white/50 dark:hover:bg-stone-800/50 hover:text-stone-900 dark:hover:text-stone-100" title="Vibration Test" aria-label="Vibration Test"><span class="w-1.5 h-1.5 rounded-full bg-purple-500"></span>Vibration</a><div class="w-px h-4 bg-stone-300 dark:bg-stone-600 mx-1 opacity-50"></div><a href="/tools/" class="px-3 py-1.5 rounded-full transition-all duration-300 text-sm font-medium whitespace-nowrap flex items-center gap-1.5 text-stone-500 dark:text-stone-400 hover:bg-white/50 dark:hover:bg-stone-800/50 hover:text-stone-900 dark:hover:text-stone-100" title="Tools" aria-label="Tools"><span class="w-1.5 h-1.5 rounded-full bg-stone-300 dark:bg-stone-600"></span>Tools</a><a href="/widgets/" class="px-3 py-1.5 rounded-full transition-all duration-300 text-sm font-medium whitespace-nowrap flex items-center gap-1.5 text-stone-500 dark:text-stone-400 hover:bg-white/50 dark:hover:bg-stone-800/50 hover:text-stone-900 dark:hover:text-stone-100" title="Widgets" aria-label="Widgets"><span class="w-1.5 h-1.5 rounded-full bg-stone-300 dark:bg-stone-600"></span>Widgets</a></div><div class="hidden md:flex lg:hidden items-center gap-1 bg-stone-100/40 dark:bg-stone-800/40 p-1.5 rounded-full backdrop-blur-md border border-stone-200/50 dark:border-stone-700/30 transition-colors"><a href="/" class="px-3 py-1.5 rounded-full transition-all duration-300 text-sm font-medium whitespace-nowrap flex items-center gap-1.5 text-stone-500 dark:text-stone-400 hover:bg-white/50 dark:hover:bg-stone-800/50 hover:text-stone-900 dark:hover:text-stone-100" title="Home" aria-label="Home">Home</a><a href="/stick-drift-test/" class="px-3 py-1.5 rounded-full transition-all duration-300 text-sm font-medium whitespace-nowrap flex items-center gap-1.5 text-stone-500 dark:text-stone-400 hover:bg-white/50 dark:hover:bg-stone-800/50 hover:text-stone-900 dark:hover:text-stone-100" title="Stick Drift Test" aria-label="Stick Drift Test"><span class="w-1.5 h-1.5 rounded-full bg-orange-500"></span>Drift</a><a href="/tools/" class="px-3 py-1.5 rounded-full transition-all duration-300 text-sm font-medium whitespace-nowrap flex items-center gap-1.5 text-stone-500 dark:text-stone-400 hover:bg-white/50 dark:hover:bg-stone-800/50 hover:text-stone-900 dark:hover:text-stone-100" title="Browse All Controller Testing Tools" aria-label="Browse All Controller Testing Tools"><span class="w-1.5 h-1.5 rounded-full bg-stone-300 dark:bg-stone-600"></span>Tools</a><a href="/widgets/" class="px-3 py-1.5 rounded-full transition-all duration-300 text-sm font-medium whitespace-nowrap flex items-center gap-1.5 text-stone-500 dark:text-stone-400 hover:bg-white/50 dark:hover:bg-stone-800/50 hover:text-stone-900 dark:hover:text-stone-100" title="Widgets" aria-label="Widgets"><span class="w-1.5 h-1.5 rounded-full bg-stone-300 dark:bg-stone-600"></span>Widgets</a></div><div class="flex items-center gap-2 sm:gap-3"><div class="relative"><button class="group/lang flex items-center justify-center sm:gap-1.5 w-10 h-10 sm:w-auto
23sm:h-auto sm:px-3 sm:py-2 rounded-full bg-stone-100/50 dark:bg-stone-800/50 backdrop-blur-md text-stone-600 dark:text-stone-400 hover:bg-stone-200 dark:hover:bg-stone-700 border border-stone-200/50 dark:border-white/10 shadow-sm transition-all duration-300 text-sm font-medium" aria-label="Change language"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-globe" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"></path><path d="M2 12h20"></path></svg><span class="hidden sm:inline text-xs font-semibold">EN</span><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down hidden sm:block transition-transform duration-200" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button></div><button class="group/theme w-10 h-10 rounded-full bg-stone-100/50 dark:bg-stone-800/50 backdrop-blur-md text-stone-600 dar
23k:text-stone-400 hover:bg-stone-200 dark:hover:bg-stone-700 border border-stone-200/50 dark:border-white/10 shadow-sm transition-all duration-300 flex items-center justify-center" aria-label="Toggle Theme" title="Switch to dark mode"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon group-hover/theme:-rotate-12 transition-transform duration-300" aria-hidden="true"><path d="M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401"></path></svg></button><button class="md:hidden pb-0 pt-0 px-1 text-stone-800 dark:text-stone-200 hover:bg-stone-100 dark:hover:bg-stone-800 rounded-xl transition-colors active:scale-95" aria-label="Open Menu"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-menu" aria-hidden="true"><path d="M4 5h16"></path><path d="M4 12h16"></path><path d="M4 19h16"></path></svg></button></div></div></div></nav><!--astro:end--></astro-island> <main class="flex-grow">
23 <astro-island uid="1o0jR4" prefix="r6" component-url="/_astro/CalibrationPage.BCLsrgqD.js" component-export="default" renderer-url="/_astro/client.dXHaCmHv.js" props="{"locale":[0,"en"],"translations":[0,{"site":[0,{"name":[0,"ControllerTest.io"],"tagline":[0,"Professional Online Gamepad Tester"],"description":[0,"ControllerTest.io is a free online gamepad tester and controller tester platform. Test Xbox, PlayStation, Switch and all major gamepads. No downloads required."],"copyright":[0,"© 2026 ControllerTest.io. All rights reserved."],"madeBy":[0,"Designed for gamers, by gamers."]}],"nav":[0,{"home":[0,"Home"],"drift":[0,"Drift"],"circularity":[0,"Circularity"],"calibration":[0,"Calibration"],"calibrationTool":[0,"PS Controller Calibration"],"pollingRate":[0,"Polling Rate"],"vibration":[0,"Vibration"],"tools":[0,"Tools"],"more":[0,"More"],"support":[0,"Support"],"generalTest":[0,"General Test"],"stickDriftTest":[0,"Stick Drift Test"],"circularityTest":[0,"Circularity Test"],"vibrationTest":[0,"Vibration Test"],"pollingRateTest":[0,"Polling Rate Test"],"xboxControllerTest":[0,"Xbox Controller Test"],"ps5ControllerTest":[0,"PS5 Controller Test"],"switchControllerTest":[0,"Switch Controller Test"],"buttonMappingTest":[0,"Button Mapping Test"],"gyroscopeTest":[0,"Gyroscope Test"],"followOnX":[0,"Follow me on X"],"joinDiscord":[0,"Join Discord"],"widgets":[0,"Widgets"]}],"footer":[0,{"tests":[0,"Tests"],"utilities":[0,"Utilities"],"aboutSupport":[0,"About & Support"],"xboxTest":[0,"Xbox Controller Test"],"ps5Test":[0,"PS5 DualSense Test"],"switchTest":[0,"Switch Joy-Con Test"],"driftTest":[0,"Stick Drift Detection"],"pollingRate":[0,"Polling Rate Test"],"allTools":[0,"All Tools"],"circularityTest":[0,"Circularity Error Test"],"vibrationTest":[0,"Vibration Motor Test"],"mappingTest":[0,"Button Mapping Test"],"about":[0,"About"],"contact":[0,"Feedback"],"support":[0,"Support"],"privacy":[0,"Privacy Policy"],"widgets":[0,"Widgets & Embeds"],"terms":[0,"Terms of Service"]}],"theme":[0,{"switchToDark":[0,"Switch to dark mode"],"switchToLight":[0,"Switch to light mode"]}],"seoHome":[0,{"title":[0,"Gamepad Tester & Controller Test - Check Joystick Online"],"description":[0,"Professional HTML5 gamepad tester for Xbox, PS5, PS4, Switch & PC. Check controller buttons, joystick deadzones, and vibration online. Compatible with Xbox 360, Xbox One, PS3, PS4 & PS5."],"keywords":[0,"gamepad tester, joypad tester, controller test, joystick test, controller input test, html5 gamepad tester, gamepad testing software, no download"]}],"home":[0,{"heroTitle":[0,"Complete Controller Tester"],"heroSubtitle":[0,"Whether you're a console player or PC gaming enthusiast, ControllerTest.io is the most accurate controller tester for diagnostics."],"connectController":[0,"Connect Controller"],"browseTools":[0,"Browse Tools"],"featuresTitle":[0,"Free Online Gamepad Tester"],"featuresSubtitle":[0,"No software downloads required, just connect. Get real data on your controller's analog sticks, buttons, and vibration performance."]}],"features":[0,{"driftDetection":[0,{"title":[0,"Stick Drift Detection"],"description":[0,"Real-time visualization of analog stick movement. Precisely detect dead zones and stick centering accuracy. Helps determine if you need hall effect sticks or physical cleaning. Supports static offset analysis."]}],"buttonsVibration":[0,{"title":[0,"Buttons & Vibration"],"description":[0,"Test all button responses and verify ABXY layout mapping. Dual motor vibration testing with independent left/right motor control. Check your force feedback system health."]}],"pollingLatency":[0,{"title":[0,"Polling Rate & Latency"],"description":[0,"Measure your controller's actual polling rate. Compare input latency between wired and Bluetooth connections. Optimize your competitive gaming experience."]}],"localSecure":[0,{"title":[0,"Local & Secure"],"description":[0,"Built on the standard Gamepad API. All input processing happens locally in your browser, protecting your privacy."]}]}],"hero":[0,{"noController":[0,"No Controller Detected"],"connectPrompt":[0,"Press any button to connect"],"player":[0,"Player"],"analogSticks":[0,"Analog Sticks"],"linearityRange":[0,"Linearity & Range"],"linearityDriftCircle":[0,"Linearity, Drift & Circularity"],"deviation":[0,"Dev"],"avgError":[0,"Err"],"jitter":[0,"Jitter"],"ratingExcellent":[0,"Excellent"],"ratingGood":[0,"Good"],"ratingAverage":[0,"Average"],"ratingPoor":[0,"Poor"],"left":[0,"Left"],"right":[0,"Right"],"triggers":[0,"Triggers"],"analogPressure":[0,"Analog Pressure (0-1)"],"vibration":[0,"Vibration"],"vibrationTest":[0,"Vibration Test"],"dualMotor":[0,"Dual Motor"],"heavy":[0,"HEAVY"],"light":[0,"LIGHT"],"burst":[0,"BURST"],"pulse":[0,"PULSE"],"testVibration":[0,"Test Vibration"],"stop":[0,"Stop"],"driftCheck":[0,"Drift Check"],"driftDetection":[0,"Drift Detection"],"staticDeadzone":[0,"Static Deadzone Monitor"],"centerOk":[0,"Center OK"],"noMovement":[0,"No Movement"],"passed":[0,"Passed"],"driftDetected":[0,"Drift Detected"],"leftStick":[0,"Left Stick"],"rightStick":[0,"Right Stick"],"testing":[0,"Testing..."],"reset":[0,"Reset"],"rawData":[0,"Raw Data"],"rawDataSub":[0,"Gamepad API Output"],"visualizerTitle":[0,"Controller Visualizer"],"customNamePlaceholder":[0,"Enter custom name..."],"renameController":[0,"
23Rename Controller"],"buttonPressed":[0,"Button Pressed"],"waitingInput":[0,"Waiting for Input"],"backToTools":[0,"Back to Tools"],"axes":[0,"Axes"],"buttons":[0,"Buttons"],"xboxController":[0,"Xbox Controller"],"switchPlayer":[0,"Switch to Player {p}"],"psController":[0,"PS Controller"],"touchpadTest":[0,"Touchpad Test"],"webHidEnhanced":[0,"WebHID Enhanced Mode"],"pressDetection":[0,"Press Detection"],"disconnectWebHid":[0,"Disconnect WebHID"],"enableWebHid":[0,"Enable touch position tracking with WebHID"],"pressed":[0,"Pressed"],"pressTouchpad":[0,"Press the touchpad"],"touchToSeePos":[0,"Touch to see position"],"totalPressCount":[0,"Total Press Count"],"webHidMultiTouch":[0,"â WebHID: Multi-touch position tracking enabled"],"clickHidBtn":[0,"Click HID button to enable touch position tracking"],"browserApiOnly":[0,"Browser API only supports press detection"],"switchJoycon":[0,"Switch Joy-Con"],"switchProController":[0,"Switch Pro Controller"],"joyconDualMode":[0,"Dual/Handheld Mode"],"dual":[0,"Dual"],"joyconSingleMode":[0,"Single/Horizontal Mode (test SL/SR)"],"horizontal":[0,"Horizontal"],"switchModeHint":[0,"Switch mode to test SL/SR"],"singleModeFooter":[0,"Single Joy-Con Mode: L/R mapped to SL/SR"],"idle":[0,"Idle"],"waiting":[0,"Waiting..."]}],"tools":[0,{"title":[0,"Controller Test Tools"],"subtitle":[0,"Comprehensive testing suite for your gaming controllers"],"driftTest":[0,{"title":[0,"Stick Drift Test"],"description":[0,"Detect analog stick drift and dead zone issues"]}],"pollingRate":[0,{"title":[0,"Polling Rate Test"],"description":[0,"Measure controller input frequency and latency"]}],"vibration":[0,{"title":[0,"Vibration Test"],"description":[0,"Test rumble motors and haptic feedback"]}],"mapping":[0,{"title":[0,"Button Mapping"],"description":[0,"Verify button assignments and layouts"]}],"gyroscope":[0,{"title":[0,"Gyroscope Test"],"description":[0,"Test motion sensors and accelerometer"]}]}],"pages":[0,{"about":[0,{"title":[0,"About ControllerTest.io"],"description":[0,"Learn more about our free online controller tester platform"],"h1p1":[0,"Minimalist Design"],"h1p2":[0,"Built for Gamers"],"subtitle":[0,"We believe a great testing tool should be like a perfect hall effect stick: precise, smooth, and drift-free."],"f1Title":[0,"Forever Free"],"f1Desc":[0,"No paywalls, no premium tiers. All features are open to all players, delivering the purest testing experience."],"f2Title":[0,"Native Technology"],"f2Desc":[0,"Built on HTML5 Gamepad API and WebHID standards. No drivers needed â just open your browser to detect Xbox, PS5, and Switch controllers."],"f3Title":[0,"Zero Bloat"],"f3Desc":[0,"Fast loading, no intrusive ads. We focus on the data itself, showing you the most accurate deadzone and centering performance."],"storyTitle":[0,"Born from Frustration, Built with Passion"],"storyP1":[0,"ControllerTest.io was inspired by a frustrating gaming experience. While playing Elden Ring, my character kept drifting left on its own â the infamous \"stick drift\" problem."],"storyP2":[0,"I tried to find an online tool to diagnose my controller, but most websites had outdated interfaces, intrusive download ads, or couldn't properly detect my DualSense."],"storyP3":[0,"So I decided to rebuild the controller tester experience with modern web technology. This is the backyard for all c
23onsole and PC gamers â the best place to verify your gear and fine-tune your deadzone settings."],"ctaTitle":[0,"Want a custom feature? Or have feedback?"],"ctaBtn":[0,"Go to Feedback Page"],"back":[0,"Back to Home"]}],"contact":[0,{"title":[0,"Contact & Feedback - ControllerTest.io"],"description":[0,"Get in touch with us for questions or suggestions"],"h1p1":[0,"We're Listening"],"h1p2":[0,"Let's Build Together"],"subtitle":[0,"Whether it's a small suggestion or a bug you've encountered, we'd love to hear your feedback."],"boxTitle":[0,"Get in Touch"],"boxDesc":[0,"Whether it's product suggestions, bug reports, or sharing your controller experiences, we're always here to help."],"boxListTitle":[0,"We'd love to hear about:"],"li1":[0,"<strong>New Device Support:</strong> If your third-party or retro controller isn't recognized, please provide the VID/PID information."],"li2":[0,"<strong>Bug Reports:</strong> Vibration not working or button mapping issues? Please tell us your OS and browser version."],"boxNote":[0,"* We typically respond to genuine inquiries within 48 hours."],"emailBtn":[0,"Email Us"],"faqTitle":[0,"FAQ"],"q1":[0,"Controller connected but not responding?"],"a1":[0,"For security reasons, browsers require you to <strong>press any button on the controller first</strong> before the page can detect it. Try pressing A or moving a stick."],"q2":[0,"Why isn't vibration working?"],"a2":[0,"Windows has poor vibration support for Xbox/PS controllers over Bluetooth. Try using a USB cable or dedicated 2.4G wireless adapter."],"q3":[0,"Does it work on iOS/Android?"],"a3":[0,"Yes! As long as your phone is connected to a controller via Bluetooth and using Chrome/Safari, button and stick testing should work normally."],"back":[0,"Back to Home"]}],"support":[0,{"title":[0,"Support - ControllerTest.io"],"description":[0,"Support the development of ControllerTest.io"],"heading":[0,"Fuel the Experience"],"subheading":[0,"With Your Support"],"intro":[0,"ControllerTest.io is maintained by independent developers with an open-source spirit. We're committed to a clean, distraction-free testing environment. Your support goes directly to server maintenance and new feature development."],"kofi":[0,"Buy us a Coffee"],"kofiDesc":[0,"Support us with a one-time donation on Ko-fi"],"note":[0,"Every contribution helps cover bandwidth costs and keeps our testing tools free, fast, and ad-free."],"problem":[0,"Have a feature idea?"],"contactButton":[0,"Let Us Know"],"back":[0,"Back to Home"]}],"privacy":[0,{"title":[0,"Privacy Policy - ControllerTest.io"],"description":[0,"ControllerTest.io uses a 'local-first' design philosophy. We believe the best way to protect your data is simply not to collect it."],"h1p1":[0,"Your Privacy"],"h1p2":[0,"Is Our Top Priority"],"subtitle":[0,"ControllerTest.io uses a \"local-first\" design philosophy. We believe the best way to protect your data is simply not to collect it."],"localProcessingTitle":[0,"Local Processing"],"localProcessingDesc":[0,"All controller input data (buttons, stick coordinates, vibration commands) is processed locally in real-time through the browser's native <strong>Gamepad API</strong>. This hardware data is never uploaded to our servers."],"noRegTitle":[0,"No Registration Required"],"noRegDesc":[0,"Using ControllerTest.io requires no account creation â no email, phone number, or personal information needed. Just plug in your controller and start testing. C
23ompletely anonymous."],"sec1Title":[0,"What Information Do We Collect?"],"sec1Desc":[0,"Simply put: <strong>Almost nothing.</strong><br /><br />This website is a pure frontend application. We don't run any backend database to store user information. The only non-personally-identifiable data we might collect is through standard web server logs (like IP addresses, browser types), used solely for basic site operation and security."],"sec2Title":[0,"About Cookies and Tracking"],"sec2Desc":[0,"We don't use any advertising tracking cookies.<br /><br />We only use browser LocalStorage to save your preferences (like dark mode settings or tutorial dismissals). Clearing your browser cache will reset these settings."],"sec3Title":[0,"About WebHID Permissions"],"sec3Desc":[0,"For some advanced features (like PS5 gyroscope testing), we may request WebHID connection permissions. This permission is only used to communicate with specific devices during the current session â we don't permanently save or misuse it. You can revoke authorization anytime from your browser's address bar."],"lastUpdated":[0,"Last Updated: January 1, 2026"],"questionsTitle":[0,"Questions about our privacy policy?"],"contactBtn":[0,"Contact Us"],"back":[0,"Back to Home"]}]}],"seo":[0,{"index":[0,{"title":[0,"Free Online Gamepad Tester - ControllerTest.io"],"description":[0,"ControllerTest.io is a professional online controller tester platform, providing comprehensive testing for Xbox, PlayStation, Switch and all major gamepads. Free to use, no downloads required."],"keywords":[0,"gamepad tester, controller test, stick drift, vibration test, polling rate, Xbox, PS5, Switch"]}],"home":[0,{"whyChoose":[0,{"title":[0,"Why Choose ControllerTest.io?"],"subtitle":[0,"More than a simple connection test â this free gamepad tester and controller checker provides a comprehensive health check for your controller's performance."],"nativeApi":[0,{"title":[0,"Native Gamepad API"],"desc":[0,"No driver downloads required. Using the browser's native Gamepad API to read hardware signals directly. Supports Xbox, PS4/PS5, Switch Pro, and other major controllers."]}],"driftDetection":[0,{"title":[0,"Stick Drift Detection"],"desc":[0,"Visual deadzone detection tool. Precisely captures micro-movements when the stick is at rest, helping you determine if you need hall effect sticks or cleaning."]}],"pollingVibration":[0,{"title":[0,"Polling Rate & Vibration"],"desc":[0,"Measure your controller's actual polling rate. Compare latency between wired and Bluetooth connections. Test dual motor vibration to verify force feedback functionality."]}]}],"howToUse":[0,{"title":[0,"How to Get Started"],"subtitle":[0,"Just three steps to run a complete controller test and understand your controller's health status."],"step1":[0,{"title":[0,"Connect Controller"],"desc":[0,"Connect your controller to your computer via USB cable or Bluetooth. If the browser doesn't respond, press any button on the controller to activate the connection."]}],"step2":[0,{"title":[0,"Button Detection"],"desc":[0,"Press each button in the visual interface and confirm the corresponding area lights up on screen. This helps troubleshoot unresponsive or double-clicking buttons."]}],"step3":[0,{"title":[0,"Sticks & Vibration"],"desc":[0,"Rotate the sticks to check linearity and drift issues; click the vibration test button to feel if the left and right motor feedback is working properly."]}]}],"glossary":[0,{"title":[0,"Controller Glossary"],"stickDrift":[0,{"term":[0,"Stick Drift"],"def":[0,"When the analog stick sends movement signals to the computer even when physically at rest. Usually caused by potentiometer wear or dust accumulation."]}],"deadzone":[0,{"term":[0,"Deadzone"],"def":[0,"A center area around the stick where movement is not recognized as input. Setting a deadzone is a software solution for minor drift."]}],"pollingRate":[0,{"term":[0,"Polling Rate"],"def":[0,"The frequency at which the controller sends data to the host. Bluetooth mode is typically 125Hz-250Hz, while wired can reach 500Hz-1000Hz."]}],"hallEffect":[0,{"term":[0,"Hall Effect Sticks"],"def":[0,"Analog stick technology using magnetic field sensing. No physical contact means theoretically no drift and much longer lifespan than traditional carbon film potentiometers."]}]}],"faq":[0,{"title":[0,"Frequently Asked Questions"],"subtitle":[0,"Here are answers to common questions you might have during testing."],"q1":[0,{"q":[0,"Why isn't my controller being detected?"],"a":[0,"For security reasons, browsers only allow web pages to read controller data after user interaction or when a controller button is pressed. Try pressing any button (like A) on your controller to activate the connection."]}],"q2":[0,{"q":[0,"Why isn't vibration working?"],"a":[0,"Make sure you're using a browser that supports vibration (Chrome or Edge recommended). On Windows, Bluetooth drivers have poor Xbox controller vibration support â try a USB wired connection or dedicated adapter."]}],"q3":[0,{"q":[0,"How do I fix stick drift?"],"a":[0,"Minor drift can be solved by increasing the 'deadzone' setting in games. For severe physical wear, try using WD-40 electronic cleaner sprayed into the stick base, or replace with hall effect stick modules."]}],"q4":[0,{"q":[0,"Does it support PS5 adaptive trigger testing?"],"a":[0,"The standard Gamepad API doesn't support controlling PS5's adaptive trigger resistance. We can only read trigger travel (0-1), but cannot send force feedback commands."]}]}],"useCases":[0,{"title":[0,"Controller Test Use Cases"],"usedTrading":[0,{"title":[0,"Used Trading"],"desc":[0,"Quickly verify button responsiveness and stick drift when buying or selling used controllers to avoid disputes."]}],"repairDiagnosis":[0,{"title":[0,"Repair Diagnosis"],"desc":[0,"Repair technicians can use visual data to quickly identify faulty buttons or stick axis problems."]}],"newUnitCheck":[0,{"title":[0,"New Unit Check"],"desc":[0,"Test all functions on a new controller right after receiving it to ensure there are no factory defects."]}],"latencyTesting":[0,{"title":[0,"Latency Testing"],"desc":[0,"
23Compare input latency between different connection methods (Bluetooth vs 2.4G vs Wired) to choose the best gaming setup."]}]}],"tips":[0,{"title":[0,"Controller Care Tips"],"dustProtection":[0,{"title":[0,"Dust Protection"],"desc":[0,"Store your controller in a dust-proof case when not in use. Dust is the number one cause of stick drift and button contact issues."]}],"batteryCare":[0,{"title":[0,"Battery Care"],"desc":[0,"Don't leave controllers with built-in lithium batteries fully discharged for long periods. Charge every 3 months to maintain battery health."]}],"avoidFastCharging":[0,{"title":[0,"Avoid Fast Charging"],"desc":[0,"Unless explicitly stated in the manual, avoid using high-power phone fast chargers for your controller to prevent circuit damage."]}],"firmwareUpdates":[0,{"title":[0,"Firmware Updates"],"desc":[0,"Regularly connect to your console or official software to update controller firmware. Manufacturers often improve deadzone and connection stability."]}]}]}],"drift":[0,{"title":[0,"Stick Drift Detection"],"circularityTitle":[0,"Circularity Error Test"],"status":[0,{"connected":[0,"Controller Connected"],"noController":[0,"No Controller"],"drifting":[0,"Drifting"],"normal":[0,"Normal"],"sampling":[0,"Sampling..."]}],"labels":[0,{"leftStick":[0,"Left Stick"],"rightStick":[0,"Right Stick"],"jitter":[0,"Jitter"],"deviation":[0,"Deviation"],"avgError":[0,"Avg Error"],"staticDrift":[0,"Static Drift"],"circularityTest":[0,"Circularity Test"],"deadzone":[0,"Deadzone"],"detectionReport":[0,"Detection Report"],"circularityReport":[0,"Circularity Report"],"avgDeviation":[0,"Avg Deviation"],"points":[0,"Points"]}],"instructions":[0,{"driftImportant":[0,"Important"],"driftWarning":[0,"DO NOT touch the sticks during test! Place the controller on a flat surface and let it sit still for 3 seconds."],"circularityTitle":[0,"Test Instructions"],"circularityDesc":[0,"Slowly rotate the stick along the edge to draw a circle. Move slowly so each point can be captured. Avg Error = average deviation from perfect circle (100% magnitude)."],"dontTouch":[0,"Don't touch the sticks..."],"keepHandsOff":[0,"Keep hands off controller during 3-second test"],"rotateSticks":[0,"Slowly rotate sticks along edge to draw a circle"]}],"buttons":[0,{"startStaticDetection":[0,"Start Static Detection"],"startCircleTest":[0,"Start Circle Test"],"stopAnalyze":[0,"Stop & Analyze"],"clickToDetect":[0,"Click Start to detect drift"],"clickToBegin":[0,"Roll sticks around the edge to begin trace"],"clearCanvas":[0,"Clear Trace Data"],"recenter":[0,"Re-center Sticks"]}],"advancedAnalysis":[0,"Advanced Analysis"],"peakError":[0,"Peak Error (Worst Case)"],"lStickMax":[0,"L-Stick Max"],"rStickMax":[0,"R-Stick Max"],"stability":[0,"Stability (Jitter)"],"quadrantErrors":[0,"Quadrant Errors (â â â â)"],"coverage":[0,"Coverage"],"features":[0,{"rangeMap":[0,"Range Map"],"rangeMapDesc":[0,"Visualizes the outer bounds of your stick movement"],"jitterDetection":[0,"Jitter Detection"],"jitterDesc":[0,"Monitors unwanted stick movement at rest"],"clear":[0,"Clear"]}],"device":[0,{"connected":[0,"Device Connected"],"rename":[0,"Rename Device"],"vendorId":[0,"Vendor ID"],"productId":[0,"Product ID"]}],"ratings":[0,{"insufficientData":[0,"Insufficient Data"],"excellent":[0,"Excellent"],"good":[0,"Good"],"average":[0,"Average"],"poor":[0,"Poor"]}],"seoContent":[0,{"metaTitle":[0,"Stick Drift Test - Controller Deadzone & Joystick Check"],"metaDesc":[0,"Precise joystick deadzone tester and drift detection. Visualize analog stick centering accuracy and measuring circularity error for Xbox, PS5, and Switch controllers."],"whyDrift":[0,{"title":[0,"Free Online Stick Drift Tester"],"subtitle":[0,"Understanding the hardware behind the phantom movements"],"potentiometer":[0,{"title":[0,"Potentiometer Wear"],"desc":[0,"Traditional analog sticks use carbon tracks (potentiometers) to measure movement. Over time, friction wears down these tracks, creating dust and altering resistance. This causes the controller to register movement even when the stick is centered."]}],"hallEffect":[0,{"title":[0,"Hall-Effect Modules"],"desc":[0,"Modern premium controllers use magnets and sensors to measure stick position without physical contact. While highly resistant to traditional drift, they can still experience centering issues due to spring fatigue or magnetic interference."]}]}],"circularity":[0,{"badge":[0,"Performance Metric"],"title":[0,"The importance of stick circularity"],"desc":[0,"Circularity error measures how well a joystick can draw a perfect circle at its physical boundaries. A lower percentage means higher precision."],"testLabel":[0,"Edge-to-edge trace analysis"],"tenPercent":[0,{"title":[0,"Why 10% is the standard"],"desc":[0,"Most competitive gamers consider a circularity error under 10% to be excellent. Higher errors can make aiming feel inconsistent across different angles."]}],"zeroPercent":[0,{"title":[0,"The 0% myth"],"desc":[0,"Perfect 0% circularity without aggressive software compensation is physically impossible. Many controllers use math to snap inputs to a perfect circle, which can sometimes hurt diagonal precision."]}]}],"deadzoneArt":[0,{"title":[0,"The Art of Deadzones"],"subtitle":[0,"Finding the perfect balance for your playstyle"],"q1":[0,{"q":[0,"What is a deadzone?"],"a":[0,"A deadzone is a software-defined circular area around the center of the joystick where physical movement is ignored. This prevents minor stick drift or resting jitter from causing unwanted camera movement in-game."]}],"q2":[0,{"q":[0,"Why not use a 0% deadzone?"],"a":[0,"Unless your controller has flawless centering, a 0% deadzone will usually result in immediate stick drift. Most top players keep their deadzones as low as possible (usually 3-5%) without inducing drift."]}],"q3":[0,{"q":[0,"Axial vs Radial deadzones?"],"a":[0,"Radial deadzones (circular) are preferred for modern 3D games as they treat all directions equally. Axial deadzones (cross-shaped) can make diagonal movement feel rigid and un-smooth."]}],"q4":[0,{"q":[0,"How to fix stick drift?"],"a":[0,"If increasing the deadzone ruins your aim, the only permanent solutions are replacing the analog stick module (requires soldering) or replacing the controller entirely. Temporary fixes like blowing compressed air rarely last."]}]}]}],"staticSeo":[0,{"understanding":[0,{"title":[0,"Understanding Your Test Results"],"desc":[0,"How to interpret the data from our stick drift and circularity analyzer"]}],"diagnosticGuide":[0,{"title":[0,"Stick Drift Diagnostic Guide"],"intro":[0,"Watch the center red dot (Raw Input) without touching the sticks. If it moves outside the deadzone circle, you have active drift."],"normal":[0,{"label":[0,"Minor tremble (Jitter):"],"desc":[0,"Perfectly normal. Fixable with a small deadzone (2-5%)."]}],"minor":[0,{"label":[0,"Slow, consistent drift:"],"desc":[0,"Common wear and tear. Indicates worn potentiometers. Increase deadzone to compensate."]}],"severe":[0,{"label":[0,"Violent snapping to edges:"],"desc":[0,"Sensor failure or severe debris obstruction. Usually requires hardware replacement."]}]}],"circularityError":[0,{"title":[0,"Circularity Error"],"intro":[0,"Rotate your stick along its physical edge. The trace should form a perfect circle. Bumps or square edges indicate physical casing limits or software manipulation."],"excellent":[0,{"label":[0,"Under 10% Error:"],"desc":[0,"Excellent precision. Optimal for competitive FPS games."]}],"average":[0,{"label":[0,"10% to 20% Error:"],"desc":[0,"Average controller. Perfectly fine for casual gaming."]}]}],"hallEffect":[0,{"badge":[0,"Pro Tip"],"title":[0,"Should you upgrade to Hall-Effect sensors?"],"desc1":[0,"If you're tired of replacing controllers due to stick drift, consider upgrading to a controller with Hall-Effect electromagnetic sensors."],"desc2Label":[0,"They are nearly immune to traditional frictional drift"],"desc2":[0,"and often feature superior circularity scores out of the box."]}]}],"circularitySeo":[0,{"metaTitle":[0,"Gamepad Circularity Error Test - Joystick Accuracy & Roundness"],"metaDesc":[0,"Test your gamepad joystick circularity error with precision. Measure analog stick roundness, detect dead spots, and analyze quadrant accuracy for Xbox, PS5, Switch controllers."],"whatIs":[0,{"title":[0,"Free Online Circularity Tester"],"subtitle":[0,"Understanding how analog stick accuracy affects your gaming precision"],"perfect":[0,{"title":[0,"Perfect Circularity"],"desc":[0,"When you rotate your joystick in a full circle at maximum deflection, an ideal controller should produce a perfect circle of coordinates. This indicates precise mechanical alignment and accurate sensor readings across all angles."]}],"errors":[0,{"title":[0,"Circularity Errors"],"desc":[0,"Deviations from perfect circularity show as bumps, flat spots, or irregular shapes. These errors can cause inconsistent aiming in FPS games, uneven turning in racing games, and unpredictable movement in platformers."]}]}],"methodology":[0,{"badge":[0,"Test Methodology"],"title":[0,"How the Test Works"],"desc":[0,"Our circularity test measures the deviation from a perfect unit circle as you rotate the joystick around its full range of motion."],"testLabel":[0,"Edge-to-edge trace analysis"],"excellent":[0,{"title":[0,"Under 5% Error"],"desc":[0,"Excellent precision suitable for competitive gaming and precision aiming"]}],"good":[0,{"title":[0,"5-10% Error"],"desc":[0,"Good quality typical of most consumer controllers"]}],"poor":[0,{"title":[0,"Over 15% Error"],"desc":[0,"May cause noticeable accuracy issues in gameplay"]}]}],"faq":[0,{"title":[0,"Frequently Asked Questions"],"subtitle":[0,"Common questions about joystick circularity testing"],"q1":[0,{"q":[0,"Why does my controller have flat spots?"],"a":[0,"Flat spots in the circularity trace are often caused by mechanical limitations in the potentiometer design or physical wear on the controller'
23s internal components. Hall-effect sticks typically show better roundness."]}],"q2":[0,{"q":[0,"What are quadrant errors?"],"a":[0,"Quadrant errors show how accuracy varies across different directions (Right, Up, Left, Down). Uneven quadrant scores may indicate mechanical issues or worn potentiometers in specific directions."]}],"q3":[0,{"q":[0,"How do I get accurate results?"],"a":[0,"Push the joystick fully to the edge and rotate slowly and steadily. Cover all 360° at least twice for best accuracy. Make sure to push all the way to the mechanical limit."]}],"q4":[0,{"q":[0,"Can poor circularity be fixed?"],"a":[0,"Minor circularity issues can sometimes be compensated with in-game sensitivity curves. Severe issues typically require replacing the analog stick module or the entire controller."]}]}]}]}],"steeringWheelSeo":[0,{"title":[0,"Steering Wheel Tester - Test Racing Wheels, Pedals & Shifters Online"],"description":[0,"Free online steering wheel tester for Logitech G29/G923, Thrustmaster T300, Fanatec, and all racing sim hardware. Test wheel rotation, pedal linearity, and force feedback axes."],"h2_1":[0,"Free Online Steering Wheel Tester"],"desc_1":[0,"The ultimate online tool for testing racing wheels, pedals, shifters, and handbrakes. Visualize wheel rotation and pedal response in real-time."],"f1Title":[0,"Wheel Rotation"],"f1Desc":[0,"See your wheel turn in real-time. Test the full rotation range from 180° to 1080° depending on your hardware."],"f2Title":[0,"Pedal Calibration"],"f2Desc":[0,"Test throttle, brake, and clutch pedals. Verify full travel range and check for potentiometer issues."],"f3Title":[0,"Linearity Check"],"f3Desc":[0,"Detect dirty potentiometers and sensor issues. A clean pedal should produce a smooth, linear response curve."],"hardwareBadge":[0,"Sim Racing Hardware"],"hardwareTitle":[0,"Works With Your Setup"],"hardwareDesc":[0,"Compatible with all major racing wheel brands and accessories."],"h1Title":[0,"Logitech Wheels"],"h1Desc":[0,"G25, G27, G29, G920, G923, Driving Force GT"],"h2Title":[0,"Thrustmaster Ecosystem"],"h2Desc":[0,"T150, T300, T500, TX, TS-XW, T-GT, T-LCM Pedals"],"h3Title":[0,"Fanatec & Direct Drive"],"h3Desc":[0,"CSL, CSW, DD1, DD2, ClubSport Pedals, Moza, Simagic"],"plugTest":[0,"PLUG & TEST"],"faqTitle":[0,"Frequently Asked Questions"],"faqDesc":[0,"Common questions about testing racing wheels online"],"q1":[0,"Why does my wheel only show partial rotation?"],"a1":[0,"The browser receives normalized axis values (-1 to +1). Some wheels need driver software to set the rotation range (e.g., Logitech G HUB, Thrustmaster Control Panel)."],"q2":[0,"My pedals show jumpy/erratic values?"],"a2":[0,"This usually indicates dirty or worn potentiometers. Clean them with electrical contact cleaner, or consider upgrading to hall-effect or load cell sensors."],"q3":[0,"Can I test force feedback here?"],"a3":[0,"Browser APIs don't support force feedback output. Use this tool for input testing only. For FFB testing, check your wheel's manufacturer software."],"q4":[0,"Which axis is which pedal?"],"a4":[0,"Axis mapping varies by device. Common mappings: Axis 0 = Steering, Axis 1 = Throttle, Axis 2 = Brake, Axis 3 = Clutch. Use this tool to identify your specific layout."],"ctaBadge":[0,"Sim Racing Ready"],"ctaTitle":[0,"Perfect for iRacing, ACC & F1"],"ctaDesc":[0,"Verify your hardware is working correctly before jumping into a race. Test pedal calibration, wheel centering, and button assignments with confidence."]}],"calibration":[0,{"metaTitle":[0,"PS5 Controller Calibration â DualShock & DualSense Stick Drift Fix"],"metaDesc":[0,"Free PS5 & PS4 controller calibration tool. Fix DualSense and DualShock 4 stick drift at the firmware level via WebHID â no software install, runs in Chrome."],"h2_1":[0,"Free Online PS5 Controller Calibration Tool"],"desc_1":[0,"The only browser-based tool that calibrates DualShock 4 and DualSense analog sticks at the firmware level â using the same factory commands Sony uses during manufacturing. Fix stick drift without opening your controller."],"f1Title":[0,"Firmware-Level Fix"],"f1Desc":[0,"
23Unlike software deadzones that mask the problem, this tool rewrites the center and range calibration data stored in your controller's non-volatile memory â the same data Sony writes during factory assembly."],"f2Title":[0,"Zero Software Install"],"f2Desc":[0,"Runs entirely in your browser via WebHID API. No drivers, no desktop apps, no admin permissions. Just plug in via USB and click Connect. Works on Chrome and Edge."],"f3Title":[0,"Zero Network Access"],"f3Desc":[0,"All calibration data is processed locally between your browser and controller. No telemetry, no cloud storage, no data ever leaves your machine. Fully offline-capable."],"howBadge":[0,"5-Step Calibration Process"],"howTitle":[0,"How It Works"],"howDesc":[0,"Our guided wizard walks you through the complete calibration process with real-time visual feedback at every step."],"how1Title":[0,"Connect via USB"],"how1Desc":[0,"Plug your DualShock 4 or DualSense into your computer with a USB cable. Bluetooth does not expose the HID Feature Reports required for calibration."],"how2Title":[0,"Center Calibration"],"how2Desc":[0,"Push both sticks to each corner and release. The tool samples the resting position to establish the true analog center â eliminating neutral drift."],"how3Title":[0,"Range Calibration"],"how3Desc":[0,"Slowly rotate both sticks in full circles. The tool records the maximum deflection in all directions to map your controller's complete analog range."],"how4Title":[0,"Verify Results"],"how4Desc":[0,"Calibration is applied temporarily so you can test immediately. Move the sticks around to confirm drift is gone and full range is preserved before committing."],"how5Title":[0,"Save Permanently"],"how5Desc":[0,"Type SAVE to write calibration data to the controller's NVS (Non-Volatile Storage). This persists across reboots â your controller remembers the fix."],"safetyBadge":[0,"Safety First"],"safetyTitle":[0,"Built-In Protection"],"safetyDesc":[0,"We take firmware modifications seriously. Multiple safety layers protect your controller throughout the process."],"s1Title":[0,"Battery Check"],"s1Desc":[0,"Permanent save is blocked if battery level is below 30% to prevent write corruption from power loss during NVS operations."],"s2Title":[0,"Clone Detection"],"s2Desc":[0,"Third-party clone controllers are detected and blocked automatically. Calibration commands on non-genuine hardware may cause unpredictable behavior."],"s3Title":[0,"USB Enforcement"],"s3Desc":[0,"Bluetooth connections are rejected â USB provides the stable, low-latency link required for reliable HID Feature Report communication."],"s4Title":[0,"Write Confirmation"],"s4Desc":[0,"Permanent save requires typing SAVE as explicit confirmation. Temporary calibration can be tested first and undone by simply restarting the controller."],"hardwareBadge":[0,"Supported Controllers"],"hardwareTitle":[0,"Compatible PlayStation Hardware"],"hardwareDesc":[0,"This tool supports genuine Sony controllers that expose factory calibration HID commands over USB."],"h1Title":[0,"DualShock 4 (CUH-ZCT1 / CUH-ZCT2)"],"h1Desc":[0,"Both V1 and V2 models. The most common stick drift candidates due to aging ALPS potentiometers."],"h2Title":[0,"DualSense (CFI-ZCT1)"],"h2Desc":[0,"Standard DualSense with full calibration support. The most frequently requested controller for this tool."],"h3Title":[0,"Not Supported"],"h3Desc":[0,"DualSense Edge, DualShock 3, and third-party clones are blocked for safety. Edge requires hardware-level modification."],"plugTest":[0,"USB · WEBHID · CHROME/EDGE"],"faqTitle":[0,"Frequently Asked Questions"],"faqDesc":[0,"Common questions about PS controller calibration and stick drift repair"],"q1":[0,"Will this void my warranty?"],"a1":[0,"This tool uses the same undocumented HID commands that Sony uses during factory calibration. However, since it modifies NVS data, Sony may consider it an unauthorized modification. If your controller is still under warranty, consider contacting Sony support first."],"q2":[0,"Can this brick my controller?"],"a2":[0,"The calibration commands are identical to those Sony uses in the factory. The primary risk is interrupting the NVS write process â which is why we enforce battery checks, USB-only connections, and explicit SAVE confirmation. In the worst case, you can recalibrate again."],"q3":[0,"Why USB only? Can't I use Bluetooth?"],"a3":[0,"Calibration requires HID Feature Reports (0x02, 0x05, 0x09) which are only available over USB. Bluetooth HID does not expose these low-level commands. Additionally, USB provides a more stable connection for firmware-level operations."],"q4":[0,"How is this different from adjusting deadzones?"],"a4":[0,"In-game deadzone settings add a software buffer that masks drift but reduces your effective analog range. This tool actually rewrites the center and range values in the controller's firmware â fixing the root cause rather than hiding the symptom."],"q5":[0,"What if calibration makes things worse?"],"a5":[0,"If you save permanently and results are bad, simply run the calibration again. If you haven't saved yet, just restart your controller â temporary calibration is discarded automatically. The tool also offers backup export before any permanent write."],"q6":[0,"Does this work on PS5 / PS4 console?"],"a6":[0,"This is a browser-based tool that requires a computer with Chrome or Edge. You connect your PS controller to your PC via USB for calibration, then use it normally on your console afterward. The calibration persists in the controller's firmware."],"ctaBadge":[0,"Fix Drift Today"],"ctaTitle":[0,"Stop Masking Drift â Fix It at the Source"],"ctaDesc":[0,"
23Software deadzones are band-aids. This tool writes directly to your controller's firmware calibration data â the same way Sony calibrates brand-new controllers at the factory. Plug in via USB and fix your stick drift in under 2 minutes."]}]}],"common":[0,{"loading":[0,"Loading..."],"error":[0,"Error"],"retry":[0,"Retry"],"close":[0,"Close"],"save":[0,"Save"],"cancel":[0,"Cancel"],"confirm":[0,"Confirm"],"back":[0,"Back"],"next":[0,"Next"],"learnMore":[0,"Learn More"],"getStarted":[0,"Get Started"]}],"floatingTools":[0,{"bookmark":[0,"Bookmark Page"],"share":[0,"Share Link"],"feedback":[0,"Send Feedback"],"toast":[0,{"welcome":[0,"Find this tool helpful? Don't forget to bookmark us!"],"bookmark":[0,"Press {shortcut} to bookmark ControllerTest.io"],"shareSuccess":[0,"Link copied to clipboard! Feel free to share."],"shareError":[0,"Failed to copy. Please copy the URL manually."]}]}],"seoVibration":[0,{"about":[0,{"title":[0,"Free Online Vibration Tester"],"desc":[0,"Vibration (Rumble) is key to gaming immersion. Modern controllers typically use an \"asymmetric dual-motor\" design. This tool lets you independently control left and right motors to test vibration functionality."],"tip":[0,"Perfect for checking gamepad vibration test 3000 style diagnostics and troubleshooting weaker rumble issues on PC."]}],"motors":[0,{"title":[0,"Asymmetric Motors Explained"],"left":[0,{"label":[0,"Left Motor (Heavy/Low Freq):"],"desc":[0,"Larger internal weight, slower rotation. Produces heavy, intense low-frequency vibration (explosions, crashes)."]}],"right":[0,{"label":[0,"Right Motor (Light/High Freq):"],"desc":[0,"Smaller internal weight, very fast rotation. Produces subtle, light high-frequency vibration (tire spin, gun recoil)."]}]}],"troubleshooting":[0,{"title":[0,"Why Isn't My Controller Vibrating?"],"browser":[0,{"label":[0,"1. Browser Limitation:"],"desc":[0,"Please use Chrome, Edge or other Chromium-based browsers. Firefox has incomplete Gamepad API vibration support."]}],"bluetooth":[0,{"label":[0,"2. Bluetooth Driver Issues:"],"desc":[0,"Windows native Bluetooth drivers have poor Xbox controller vibration support, may lose vibration or only have one-sided vibration. Try USB connection for testing."]}],"battery":[0,{"label":[0,"3. Low Battery:"],"desc":[0,"Some controllers automatically disable vibration motors in low-battery mode to save power."]}]}],"metaTitle":[0,"Gamepad Vibration Test - Controller Rumble & Motor Check"],"metaDesc":[0,"Test controller vibration strength and motors online. Support for dual-motor rumble, haptic feedback, and continuous vibration testing for diagnosing motor health."]}],"seoPolling":[0,{"metaTitle":[0,"Polling Rate Test - Controller Latency & Hz Checker"],"metaDesc":[0,"Measure gamepad polling rate (Hz) and input latency (ms). Test controller delay for wireless Bluetooth vs USB wired connections. Accurate online Hz tester."],"about":[0,{"title":[0,"Free Online Polling Rate Tester"],"desc":[0,"Polling rate determines how many times per second data is sent. This gamepad latency test reveals the true input lag of your device. Higher Hz means smoother movement."]}],"guide":[0,{"title":[0,"Value Guide"],"1000hz":[0,{"label":[0,"1000Hz (1ms):"],"desc":[0,"Competition standard. Data transmitted every 1 millisecond. Ideal for FPS and fighting games."]}],"250hz":[0,{"label":[0,"250Hz (4ms):"],"desc":[0,"Excellent wireless performance. Most 2.4G controllers and high-performance Bluetooth fall in this range."]}],"125hz":[0,{"label":[0,"125Hz (8ms):"],"desc":[0,"Standard Bluetooth performance. Suitable for RPGs or slower-paced games. More power efficient."]}]}],"inputLag":[0,{"title":[0,"Input Lag"],"desc":[0,"Polling rate directly determines theoretical minimum input latency."]}],"overclock":[0,{"badge":[0,"About Overclocking"],"title":[0,"Can Controllers Be \"Overclocked\"?"],"desc":[0,"Some enthusiasts use third-party tools to overclock DualSense or Xbox controllers, forcing USB polling rates to 1000Hz or higher."],"warning":[0,{"label":[0,"Risk Warning:"],"desc":[0,"This may cause connection instability, slight CPU usage increase, and potentially shorten the controller's motherboard lifespan. For most players, stable 125Hz-250Hz is smooth enough."]}]}]}],"seoGyro":[0,{"about":[0,{"title":[0,"Free Online Gyroscope Tester"],"desc":[0,"The standard Gamepad API only supports buttons and sticks, not gyroscope data. This tool works as a specialized gamepad gyro test using WebHID technology to communicate directly with controller hardware."]}],"sixaxis":[0,{"title":[0,"Sixaxis Sensors"],"intro":[0,"Sony controllers include a 3-axis gyroscope and 3-axis accelerometer."],"gyroscope":[0,{"label":[0,"Gyroscope:"],"desc":[0,"Detects angular velocity â how fast the controller is rotating. Used for gyro aiming."]}],"accelerometer":[0,{"label":[0,"Accelerometer:"],"desc":[0,"Detects gravity direction and movement acceleration. Used to determine tilt angle (horizontal/vertical)."]}]}],"activation":[0,{"title":[0,"Why Activation Is Needed?"],"desc":[0,"To save power, PS4/PS5 controllers default to \"simple mode\" when connected to PC, only sending basic button data without high-frequency sensor data."],"howItWorks":[0,{"label":[0,"How It Works:"],"desc":[0,"This tool sends a specific Feature Report command (0x02, 0x03, 0x04) to switch the controller into \"full report mode\". This is most stable over USB."]}]}],"useCases":[0,{"badge":[0,"Use Cases"],"title":[0,"Motion Controls in PC Gaming"],"desc":[0,"Modern emulators (like Yuzu, Ryujinx) and Steam Input support mapping controller gyroscope to mouse or stick movements."],"tip":[0,"If motion controls aren't working in games, use this tool first to confirm your controller's sensors are functioning properly."]}]}],"seoMapping":[0,{"intro":[0,{"title":[0,"Free Online Button Mapping Tester"],"desc":[0,"Why does pressing A show B? Use this controller input test tool to reveal the underlying driver logic. The best way to test c
23ontroller buttons and troubleshoot remapping errors on PC."]}],"xinput":[0,{"title":[0,"XInput Standard Protocol"],"desc":[0,"Most PC games and browsers follow the Xbox 360 controller layout standard. This means regardless of your controller brand, the system maps buttons to standard indices 0-16."],"button0":[0,"Button 0: A (Bottom)"],"button1":[0,"Button 1: B (Right)"],"button2":[0,"Button 2: X (Left)"],"button3":[0,"Button 3: Y (Top)"]}],"issues":[0,{"title":[0,"Common Mapping Issues"],"nintendo":[0,{"label":[0,"Nintendo Layout Conflict:"],"desc":[0,"Switch controllers physically have \"A right, B bottom\" but PC reads \"A bottom, B right\". If buttons seem swapped during testing, this is a protocol difference. Fix via Steam Input."]}],"macro":[0,{"label":[0,"Macro/Remap Detection:"],"desc":[0,"If you use back paddle mapping or macros, this tool shows the remapped logical button. For example, if you map a back paddle to A, pressing it will light up Button 0."]}]}],"apiIndices":[0,{"title":[0,"About API Indices"],"face":[0,"Index 0-3: Face Buttons"],"bumpers":[0,"Index 4-5: Bumpers (LB/RB)"],"triggers":[0,"Index 6-7: Triggers (LT/RT)"],"menu":[0,"Index 8-9: Select/Start"],"sticks":[0,"Index 10-11: Stick Clicks"],"dpad":[0,"Index 12-15: D-Pad"],"home":[0,"Index 16: Home"],"share":[0,"Index 17: Share/Touch"]}]}],"seoPs5":[0,{"intro":[0,{"title":[0,"Free Online PS5 Controller Tester"],"desc":[0,"DualSense, DualShock 4, and even the classic DualShock 3 have always had compatibility quirks on PC. This tool uses web standard protocols to help you determine if your controller is broken or if drivers aren't properly configured. Test symmetric sticks, touchpad presses, and L2/R2 analog triggers."]}],"features":[0,{"directInput":[0,{"title":[0,"Native DirectInput Support"],"desc":[0,"Unlike Xbox controllers using XInput, Sony controllers use DirectInput. Our tool natively supports this protocol without needing DS4Windows."]}],"webHid":[0,{"title":[0,"WebHID Gyroscope"],"desc":[0,"Want to test motion controls? Connect via USB and visit the \"Gyroscope Test\" page. We use WebHID technology to read raw sensor data directly."]}],"adaptiveTrigger":[0,{"title":[0,"Adaptive Trigger Testing"],"desc":[0,"While web pages can't control resistance feedback, you can precisely test L2/R2 analog travel (0.00 - 1.00) to diagnose trigger spring fatigue."]}]}],"issues":[0,{"title":[0,"Common Connection Issues"],"scenario1":[0,{"title":[0,"Scenario 1: Browser detects it, but games don't respond"],"desc":[0,"Many older games (or non-Steam games) only support Xbox controllers (XInput protocol)."],"solutionLabel":[0,"Solution:"],"solution":[0,"Install the open-source DS4Windows software, which emulates your PlayStation controller as an Xbox 360 controller for universal compatibility."]}],"scenario2":[0,{"title":[0,"Scenario 2: Weak or no vibration over wireless"],"desc":[0,"Sony controllers share haptic feedback and audio signals over the same channel. Bluetooth bandwidth is often insufficient for high-fidelity data."],"solutionLabel":[0,"Solution:"],"solution":[0,"We strongly recommend using a USB-C cable for testing and gaming to get full vibration and lower input latency."]}],"scenario3":[0,{"title":[0,"Scenario 3: Stick drift"],"desc":[0,"Controller stick modules are prone to dust or wear. In our \"Drift Detection\" tool, observe the dot coordinates when the stick is at rest. If the dot continues to jump and exceeds the center circle (deadzone) without touching it, physical drift exists. Minor drift can be mitigated by increasing in-game deadzone settings; severe drift requires professional repair."]}]}],"specs":[0,{"btPolling":[0,"Bluetooth Polling"],"wiredPolling":[0,"Wired Polling"],"touchpad":[0,"Touchpad Protocol"],"binaryClick":[0,"Binary Click"]}]}],"seoXbox":[0,{"intro":[0,{"title":[0,"Free Online Xbox Controller Tester"],"desc":[0,"Whether you need an xbox 360 controller tester or diagnostics for the latest Series X/S, this tool provides millisecond-level feedback. It also serves as a reliable gamepad tester for Windows 10/11 without installing drivers."]}],"connection":[0,{"bluetooth":[0,{"title":[0,"Bluetooth vs Wireless Adapter"],"btLabel":[0,"Bluetooth Connection:"],"btDesc":[0,"Convenient but polling rate is typically limited to 125Hz. On Windows, 3.5mm headphone audio may not work and vibration feedback may be weaker."],"
23adapterLabel":[0,"Xbox Wireless Adapter (2.4G):"],"adapterDesc":[0,"Microsoft's proprietary protocol. Supports full functionality (including audio and precision vibration), more stable connection, lower latency."]}],"wired":[0,{"title":[0,"Advantages of Wired"],"desc":[0,"For competitive FPS players, USB-C wired connection is always the best choice. It provides the most stable 500Hz+ polling rate and eliminates wireless signal interference issues."],"tip":[0,"Tip: When a data cable is connected, the controller automatically switches to wired mode."]}]}],"troubleshooting":[0,{"title":[0,"Common Troubleshooting"],"aButton":[0,{"title":[0,"A Button Missing / Double Clicking"],"desc":[0,"Early Xbox Series controller batches had an issue where the A button wouldn't register at certain press angles. Use the \"Button Visualization\" feature to test A button presses from different angles."]}],"btDisconnect":[0,{"title":[0,"Bluetooth Keeps Disconnecting"],"desc":[0,"This is usually caused by outdated firmware. Download the \"Xbox Accessories\" app from the Windows Store, connect via USB, and update to the latest firmware version."]}],"impulseTriggers":[0,{"title":[0,"Impulse Triggers"],"desc":[0,"The web Gamepad API doesn't support Xbox's unique \"impulse trigger\" motors â only the main grip dual motors can be tested. This is a browser limitation, not a controller issue."]}],"stickLoose":[0,{"title":[0,"Stick Center Looseness"],"desc":[0,"Microsoft has a small default deadzone. If the drift test shows values within ±0.05 when centered, that's excellent. Values exceeding ±0.1 may indicate drift risk."]}]}],"specs":[0,{"title":[0,"Quick Specs"],"protocol":[0,"Protocol"],"protocolVal":[0,"XInput / Bluetooth LE"],"pollingRate":[0,"Polling Rate"],"pollingRateVal":[0,"125Hz (BT) / 1000Hz (USB)"],"triggerPrecision":[0,"Trigger Precision"],"triggerPrecisionVal":[0,"10-bit (1024 levels)"],"stickType":[0,"Stick Type"],"stickTypeVal":[0,"ALPS Potentiometer"]}],"metaTitle":[0,"Xbox Controller Test - Driver, Input & Wireless Check"],"metaDesc":[0,"Test tool designed for Xbox Series X|S, Elite, and One controllers. Diagnose connection issues, test driver, input response. Xbox 360, Xbox One, Series X/S & Elite controller support."]}],"seoJoycon":[0,{"intro":[0,{"title":[0,"Free Online Joy-Con Tester"],"desc":[0,"\"Joy-Con drift\" is every Switch player's nightmare. Without turning on your console, you can precisely check stick offset values directly in your PC browser to determine if cleaning or repair is needed. Also test for damaged SL/SR ribbon cables."]}],"connection":[0,{"title":[0,"How to Connect Joy-Con to PC?"],"step1":[0,{"title":[0,"Hold Pairing Button"],"desc":[0,"On the Joy-Con rail side, there's a small round black button. Hold it until the LEDs start scrolling/flashing."]}],"step2":[0,{"title":[0,"Bluetooth Search"],"desc":[0,"Open your PC's Bluetooth settings and add a device. You'll see Joy-Con (L) or Joy-Con (R), click to connect."]}],"step3":[0,{"title":[0,"Activate Controller"],"desc":[0,"After connecting, LEDs may still flash. Press any button (like L/R) and the browser page will detect it."]}]}],"drift":[0,{"title":[0,"Stick Drift Diagnosis"],"desc":[0,"
23Joy-Con stick drift is usually caused by worn carbon contact points inside the module."],"normal":[0,{"label":[0,"Normal:"],"desc":[0,"At rest, the dot stays within the center dashed circle (value < 0.05)."]}],"minor":[0,{"label":[0,"Minor:"],"desc":[0,"Occasionally jumps outside center. Try spraying contact cleaner at the stick base."]}],"severe":[0,{"label":[0,"Severe:"],"desc":[0,"Dot constantly moves or won't center. Consider replacing with hall effect sticks."]}]}],"slsr":[0,{"title":[0,"SL/SR Ribbon Cable Test"],"desc":[0,"This is the second most common Joy-Con issue. The rail ribbon cable's folded design leads to damage from repeated docking, causing SL/SR buttons to fail and LEDs to stop working."],"howToTest":[0,"How to Test?"],"howToTestDesc":[0,"In the visualizer, click the \"Horizontal Mode\" button in the top right. Then press SL or SR on the rail. If the corresponding button doesn't light up on screen, the ribbon cable may be broken."]}],"pairing":[0,{"title":[0,"Can I Connect Both Joy-Cons?"],"desc":[0,"Yes. Your PC will recognize left and right controllers as two separate devices. In the visualizer card, click the P1 / P2 button in the top right to switch between controllers for testing."]}]}],"seoSwitchPro":[0,{"intro":[0,{"title":[0,"Free Online Switch Pro Tester"],"desc":[0,"The Switch Pro Controller has excellent ergonomics, but often comes with button layout confusion and counterfeit concerns. This tool provides the authentic Nintendo button layout view with vibration and stick performance analysis."]}],"features":[0,{"abxy":[0,{"title":[0,"ABXY Layout Adaptation"],"desc":[0,"PC defaults to Xbox layout (A bottom, B right), causing Switch controller logic to seem reversed. Our visualizer is corrected to Nintendo layout (A right, B bottom) â what you see is what you get."]}],"digitalTriggers":[0,{"title":[0,"Digital Triggers"],"desc":[0,"Switch Pro ZL/ZR are non-analog digital micro switches (like mouse clicks), not pressure-sensitive. This tool correctly shows their \"pressed/released\" state, not a progress bar."]}],"hdRumble":[0,{"title":[0,"HD Rumble Quality"],"desc":[0,"While web APIs can't fully simulate HD Rumble, you can feel the motor quality through \"Vibration Test\". Original controllers have tight, precise vibration; counterfeits often feel loose and noisy."]}]}],"faq":[0,{"title":[0,"FAQ"],"q1":[0,{"q":[0,"Why isn't my PC detecting the controller?"],"aBt":[0,{"label":[0,"Bluetooth:"],"desc":[0,"Hold the small round pairing button on top for 3 seconds until the bottom LEDs flash, then add device in PC Bluetooth settings."]}],"aWired":[0,{"label":[0,"Wired:"],"desc":[0,"Connect directly via USB-C. Note: Some charging-only cables won't work â make sure to use a data cable."]}]}],"q2":[0,{"q":[0,"Q: Why can't I draw a perfect circle with the stick?"],"a":[0,"Congratulations â this may actually indicate an authentic controller. Original Switch Pro controllers have an octagonal gate physical stick limiter, not circular. When drawing circles, you'll feel 8 distinct corners and the path will trend towards a polygon."]}],"q3":[0,{"q":[0,"Q: Why does pressing A show B on screen?"],"a":[0,"This is caused by the underlying XInput driver protocol. The system identifies controllers as standard devices and sends signals by position (right button sends \"Button 1\"). This page's visualizer is visually corrected â just confirm the lit button position matches your finger's physical position."]}]}]}],"seoPollingExt":[0,{"whatIs":[0,{"title":[0,"What is Controller Polling Rate?"],"subtitle":[0,"It's a key metric that determines game response speed. Higher values mean faster state reporting from controller to PC."],"hzLatTitle":[0,"Hz & Latency"],"hzLatDesc":[0,"Polling rate (Hz) directly correlates with input latency (ms). 1000Hz means
23signals are sent every 1ms, while 125Hz means every 8ms. For competitive gaming, "],"hzLatBold":[0,"higher is better"],"connTitle":[0,"Connection Type Comparison"],"wired":[0,"Wired (USB)"],"wiredHz":[0,"Stable 1000Hz"],"wireless24":[0,"2.4G Receiver"],"wireless24Hz":[0,"Stable 1000Hz"],"btXbox":[0,"Bluetooth (Xbox)"],"btXboxHz":[0,"~125Hz"],"btPs":[0,"Bluetooth (PS4/PS5)"],"btPsHz":[0,"~250Hz+"],"ocTitle":[0,"Can I Overclock?"],"ocDesc1":[0,"Yes! For controllers locked at 125Hz, third-party tools (like "],"ocDesc2":[0,") can force USB polling rate up to 1000Hz or higher, significantly reducing input latency."]}],"tips":[0,{"badge":[0,"Expert Tips"],"title":[0,"Why Are My Test Results Unstable?"],"desc":[0,"Browser environment differs from native applications, subject to strict OS scheduling and power-saving policies."],"vsyncTitle":[0,"Chrome vSync Limitation"],"vsyncDesc":[0,"Some browser versions bind input polling to screen refresh rate (60Hz/144Hz), causing data to appear \"stuck\" at specific values."],"powerTitle":[0,"Power Saving Interference"],"powerDesc":[0,"When laptops run on battery, Windows reduces USB port polling frequency to save power. Please plug in the power adapter for testing."],"stabilityLabel":[0,"Data Stability Analysis"]}],"faq":[0,{"title":[0,"Frequently Asked Questions"],"subtitle":[0,"About controller latency and polling rate"],"q1":[0,"Is 1000Hz really necessary?"],"a1":[0,"For most players, 250Hz (4ms) is smooth enough. But for FPS (CS2, Valorant) or fighting game players, 1000Hz (1ms) can provide theoretically more responsive control."],"q2":[0,"Why rotate sticks during testing?"],"a2":[0,"Controller protocols are usually 'event-driven'. Without input, controllers may stop sending packets to save power. Rotating sticks forces full-speed data transmission for peak polling rate measurement."],"q3":[0,"Is 125Hz Bluetooth normal?"],"a3":[0,"Completely normal. Standard Bluetooth HID protocol defaults to 125Hz polling. PS4/PS5 controllers can run higher but may experience signal instability."],"q4":[0,"Cannot test 3rd party controller?"],"a4":[0,"Many 3rd party controllers default to X-Input mode, which WebHID cannot access. Try switching to D-Input mode (Common shortcut: Home+A/B) to unlock detection."],"q5":[0,"How accurate is this website?"],"a5":[0,"The Gamepad API polling rate is limited by the browser. The values shown are 'browser-received frequency', typically slightly lower than actual hardware output, but sufficient for performance reference."]}]}],"toolPolling":[0,{"title":[0,"Controller Polling Rate Test"],"status":[0,{"connected":[0,"Controller Connected"],"disconnected":[0,"No Controller"]}],"xboxLimitation":[0,{"title":[0,"Xbox Controller Limitation"],"desc":[0,"Xbox controllers on Windows are locked to X-Input mode and cannot test polling rate via WebHID."],"suggestion":[0,"Suggestion:"],"step1":[0,"Please refresh the page and "],"step1b":[0,"DO NOT"],"step1c":[0," connect WebHID."],"step2":[0,"Test directly using the standard driver (usually limited to 125Hz - 250Hz)."]}],"zeroHz":[0,{"title":[0,"0Hz Data Error"],"desc":[0,"WebHID connected but no data received. Controller may be in "],"descExt":[0," mode."],"solution":[0,"Solution:"],"step1":[0,"Switch controller to"],"step1b":[0,"mode"],"step1Tip":[0,"Common shortcuts: Home+A or Home+B"],"step2":[0,"After switching modes, click the button below to reconnect."],"btn":[0,"Switched? Reconnect WebHID"]}],"actions":[0,{"export":[0,"Export Poster"],"stop":[0,"Stop Test"],"resume":[0,"Resume Test"]}],"badges":[0,{"jitter":[0,"Jitter:"],"webhid":[0,"WebHID Verified"],"device":[0,"Device Connected"]}],"limit":[0,{"badge":[0,"Browser Rate Limit Detected"],"desc1":[0,"System limits detected at ~"],"desc2":[0,"Hz. Switch to WebHID to bypass restrictions."],"btn":[0,"Unleash 1000Hz (WebHID)"]}],"stats":[0,{"peak":[0,"Peak Rate"],"avg":[0,"Avg Rate"],"interval":[0,"Estimated Interval Delay"],"intervalDesc":[0,"* Theoretical minimum update interval based on current polling rate."]}],"ref":[0,{"title":[0,"Performance Reference"]}],"tipLabel":[0,"Tip: Many third-party controllers require"],"tipMode":[0,"D-Input"],"tipExt":[0,"mode to access WebHID and higher polling rates. (Common shortcut: Home+A/B)"],"waiting":[0,"Please connect controller..."]}],"toolVibration":[0,{"title":[0,"Controller Vibration Motor Test"],"status":[0,{"connected":[0,"Controller Connected"],"disconnected":[0,"No Controller"]}],"alerts":[0,{"noController":[0,"No controller detected. Press any button on your controller to activate connection."],"notSupported":[0,"Your controller or browser does not support the Vibration API (Standard Gamepad API)"]}],"visualizer":[0,{"leftMotor":[0,"Left Motor (Low Freq Heavy)"],"rightMotor":[0,"Right Motor (High Freq Light)"]}],"settings":[0,{"title":[0,"Parameter Settings"],"left":[0,"Left Motor Intensity"],"right":[0,"Right Motor Intensity"],"duration":[0,"Duration"],"presets":[0,"Quick Presets"],"heartbeat":[0,"Heartbeat"],"explosion":[0,"Explosion"],"click":[0,"Click"],"start":[0,"Start Vibration"],"testing":[0,"Testing..."]}]}],"seoVibrationExt":[0,{"dualMotor":[0,{"title":[0,"Dual Motor System: The Secret of Left-Heavy Right-Light"],"subtitle":[0,"Why do controllers use two motors? How does this design simulate rich haptic feedback?"],"leftTitle":[0,"Left Motor (Low Frequency Heavy Rumble)"],"leftDesc1":[0,"Typically uses "],"leftDescBadge":[0,"ERM (Eccentric Rotating Mass)"],"leftDesc2":[0,". Slower rotation but stronger vibration, simulating "],"leftDescBold":[0,"explosions, collisions, engine roar"],"leftDesc3":[0," and other low-frequency scenarios."],"leftInt":[0,"90% Intensity"],"rightTitle":[0,"Right Motor (High Frequency Light Rumble)"],"rightDesc1":[0,"Modern controllers often use "],"rightDescBadge":[0,"LRA (Linear Resonant Actuator)"],"rightDesc2":[0,". Fast response, simulating "],"rightDescBold":[0,"bullet impacts, button clicks, texture friction"],"rightDesc3":[0," and other fine touches."],"rightInt":[0,"50% Intensity"]}],"hdRumble":[0,{"badge":[0,"Future Technology"],"title":[0,"HD Rumble and Linear Motor Technology Evolution"],"desc":[0,"Not all vibrations are the same. From traditional \"buzzing\" to precise haptics that can simulate ice cubes clinking - this is a quiet technological leap."],"switchTitle":[0,"Nintendo Switch HD Rumble"],"switchDesc":[0,"Can simulate delicate sensations like \"ice cubes clinking in a glass\", even conveying object quantity and material information through vibration frequency."],"ps5Title":[0,"DualSense Haptic Feedback"],"ps5Desc":[0,"PS5 controller's Voice Coil linear motor, combined with adaptive triggers, can precisely recreate bow string tension, gun recoil, and different road surface textures."],"waveform":[0,"Haptic Waveform"]}],"faq":[0,{"title":[0,"Frequently Asked Questions"],"subtitle":[0,"All about controller vibration"],"q1":[0,"Why doesn't my controller support vibration?"],"a1":[0,"Browser Gamepad API vibration requires HTTPS environment or localhost. If you're on an HTTP website or your browser is outdated, vibration won't work."],"q2":[0,"Does Switch Pro controller work?"],"a2":[0,"Yes! Switch Pro controller's HD Rumble is recognized as standard dual motors in Web API. However, due to browser limitations, you won't experience true HD rumble effects."],"q3":[0,"Will vibration damage my controller?"],"a3":[0,"Normal use won't. Motors are designed for millions of cycles. Unless you vibrate at full intensity 24/7 for months (unreal
23istic), there's no need to worry."],"q4":[0,"Can I customize vibration waveforms?"],"a4":[0,"Web Gamepad API currently only supports simple dual motor control (intensity + duration). Complex waveform programming is only possible in native game engines (Unity, Unreal)."]}]}],"toolXbox":[0,{"title":[0,"Xbox Controller Test"],"badges":[0,{"models":[0,"Series X|S · One · Elite · 360"],"desc":[0,"Deep inspection of analog triggers, rumble motors, stick drift, and button response."],"multiplayer":[0,"Multi-Player Support"],"xinput":[0,"XInput Native"]}]}],"seoXboxExt":[0,{"advantages":[0,{"title":[0,"Why Xbox Controllers Are PC's First Choice"],"subtitle":[0,"15 years of driver legacy, native XInput support, nearly 100% game compatibility"],"xinputTitle":[0,"XInput Standard"],"xinputDesc1":[0,"Unlike DirectInput, XInput defines "],"xinputDescBold":[0,"fixed button mapping, analog trigger value ranges, and motor control protocols"],"xinputDesc2":[0,". All Xbox controllers speak the same languageâno additional drivers needed, no mapping issues."],"eliteTitle":[0,"Elite Series 2"],"eliteDesc1":[0,"Microsoft's pro controller: metal paddles, "],"eliteDescBold":[0,"adjustable travel distance triggers"],"eliteDesc2":[0,", magnetic swappable D-pad and sticks. Supports custom profiles, far ahead of the competition."],"impulseTitle":[0,"Impulse Triggers"],"impulseDesc1":[0,"Xbox One introduced "],"impulseDescBadge":[0,"4 vibration motors"],"impulseDesc2":[0,": L/R main motors + L/R trigger motors. For example, Forza Horizon uses trigger motors to simulate road texture."]}],"connection":[0,{"badge":[0,"Connection Comparison"],"title":[0,"USB vs Wireless vs Bluetooth: Which to Choose?"],"subtitle":[0,"Xbox controllers support three connection types, each with pros and cons. Choose based on your use case."],"usbTitle":[0,"USB Cable"],"usbDescBold":[0,"Lowest latency (~1ms)"],"usbDesc":[0,", full charging, most stable connection. Competitive players' choice."],"adapterTitle":[0,"Xbox Wireless Adapter"],"adapterDesc1":[0,"Proprietary 2.4GHz technology, "],"adapterDescBold":[0,"latency ~4ms"],"adapterDesc2":[0,", supports up to 8 controllers simultaneously, uses controller audio jack wirelessly."],"btTitle":[0,"Bluetooth"],"btDesc1":[0,"Good for portability (laptops, tablets, phones), "],"btDescBold":[0,"latency ~10-15ms"],"btDesc2":[0,", audio jack unusable. Note: Only Series X|S controllers support BLE."],"imgCaption":[0,"Xbox Wireless"]}],"faq":[0,{"title":[0,"Frequently Asked Questions"],"subtitle":[0,"Everything about Xbox controllers"],"q1":[0,"Can I use Xbox 360 controllers still?"],"a1":[0,"Yes! Xbox 360 controllers still work via USB adapter (wired) or official wireless receiver. But they're DirectInput not XInputâwait, no, 360 IS XInput. Very high compatibility for PC gaming even in 2024."],"q2":[0,"My controller disconnects randomly?"],"a2":[0,"â Check battery (AA or rechargeable pack); â¡ If Bluetooth, ensure you're pairing to PC not console; ⢠Try updating controller firmware via Xbox Accessories app; ⣠Electromagnetic interference from USB 3.0 devices can cause issues."],"q3":[0,"How to get lower latency?"],"a3":[0,"â Use USB cable (always lowest latency); â¡ With wireless adapter, stay within 6m range; ⢠Update firmware regularly;
23 ⣠Avoid Bluetooth for competitive games; ⤠Consider Elite controller with its optimized polling rate."],"q4":[0,"Can Xbox controllers do gyro aiming?"],"a4":[0,"No. Xbox controllers don't have gyroscopes. If you want motion aiming on PC, you'll need PlayStation, Switch Pro, or Steam controllers with gyro support."]}]}],"toolPs5":[0,{"title":[0,"DualSense Tester - PS5 & PS4 Controller Tester"],"description":[0,"Comprehensive testing for DualSense and DualShock 4. Test adaptive triggers, haptic feedback and touchpad. Also supports older DualShock 3 (PS3) controllers via USB connection."],"headerTitle":[0,"PlayStation Controller Test"],"badges":[0,{"models":[0,"DualSense · Edge · DS4 · DS3"],"desc":[0,"Deep inspection of adaptive trigger values, touchpad, vibration feedback, and gyroscope."],"multiplayer":[0,"Multi-Player Support"],"touchpad":[0,"Touchpad"]}]}],"seoPs5Ext":[0,{"innovation":[0,{"title":[0,"DualSense: Next-Gen Haptic Breakthrough"],"subtitle":[0,"From DualShock to DualSenseâhow Sony redefined 'immersion' with haptic feedback and adaptive triggers"],"hapticTitle":[0,"Haptic Feedback"],"hapticDesc1":[0,"Not just simple \"vibration\"âusing "],"hapticDescBadge":[0,"Voice Coil linear motors"],"hapticDesc2":[0," to simulate various textures: raindrops on an umbrella, the difference between sand and ice underfoot, even the tension of drawing a bowstring."],"adaptiveTitle":[0,"Adaptive Triggers"],"adaptiveDesc1":[0,"The "],"adaptiveDescBold":[0,"electromagnetic resistance mechanism"],"adaptiveDesc2":[0," inside L2/R2 can dynamically adjust trigger resistance. Gunfire recoil, gas pedal feel, bow draw tensionâevery game can customize unique haptics."],"touchpadTitle":[0,"Touchpad 2.0"],"touchpadDesc1":[0,"Compared to DS4, DualSense's touchpad is larger and more responsive. Supports "],"touchpadDescBold1":[0,"two-finger gestures"],"touchpadDescMid":[0," and "],"touchpadDescBold2":[0,"edge swipes"],"touchpadDesc2":[0,"âin some games it can be used for map zoom or quick menus."]}],"compat":[0,{"badge":[0,"Compatibility Guide"],"title":[0,"Why Won't Games Recognize My PS Controller?"],"subtitle":[0,"PS controllers use DirectInput protocol, while many PC games only support Microsoft's XInput. That's why you need \"emulator\" software."],"ds4wTitle":[0,"Solution: DS4Windows"],"ds4wDesc":[0,"Free open-source tool that disguises PS4/PS5 controllers as Xbox 360 controllers. Supports custom button mapping, macros, touchpad gestures, and even LED light adjustment."],"steamTitle":[0,"Steam Input Native Support"],"steamDesc":[0,"If you launch games through Steam, Steam Input automatically handles controller adaptationân
23o extra software needed. But non-Steam games still require DS4Windows."],"imgCaption":[0,"Controller Emulation"]}],"faq":[0,{"title":[0,"Frequently Asked Questions"],"subtitle":[0,"Everything about PlayStation controllers"],"q1":[0,"Is the DualSense Edge worth it?"],"a1":[0,"If you're a pro or hardcore gamer, the Edge's swappable stick modules, back buttons, and hair triggers are very useful. But it's 2x the price of the standard version and has shorter battery life (only 5-6 hours)."],"q2":[0,"How much Bluetooth latency?"],"a2":[0,"PS5 controller Bluetooth latency is about 10-15ms, slightly higher than Xbox (8-12ms). Good enough for most games, but fighting game or rhythm game players should use wired connection."],"q3":[0,"Why doesn't haptic feedback work on PC?"],"a3":[0,"DualSense haptic feedback and adaptive triggers require native game support. Currently only a few PC games (Death Stranding, Returnal) integrate Sony's SDK. Other games only get basic vibration."],"q4":[0,"Can I still use DS3 (DualShock 3)?"],"a4":[0,"Yes, but you need SCP Toolkit or ScpToolkit drivers. DS3 uses old Bluetooth 2.0 with a complex pairing process and no touchpad support. Not recommended unless you're nostalgic."]}]}],"toolJoycon":[0,{"title":[0,"Joy-Con Tester - Switch Controller Drift & Button Test"],"description":[0,"Professional Joy-Con testing tool focused on stick drift detection. Test SL/SR shoulder buttons, HD Rumble vibration, and horizontal grip mode. Determine if stick module replacement is needed."],"headerTitle":[0,"Joy-Con Test"],"badges":[0,{"models":[0,"L / R Controllers"],"desc":[0,"Switch controller test. Check for stick drift, HD Rumble, gyroscope, and button response."],"multiplayer":[0,"Multi-Player"],"bt":[0,"Bluetooth Required"]}]}],"seoJoyconExt":[0,{"innovation":[0,{"title":[0,"Joy-Con: The Most Innovative Split Controller"],"subtitle":[0,"Detachable design, HD Rumble, IR cameraâhow Nintendo redefined gaming interaction"],"formsTitle":[0,"Three Forms, One Controller"],"formsDesc":[0,"<strong>Handheld mode</strong>: Attached to Switch sides; <strong>Split mode</strong>: One in each hand; <strong>Horizontal mode</strong>: SL/SR become a full controller. One device, three ways to play."],"hdTitle":[0,"HD Rumble"],"hdDesc":[0,"Uses <strong>linear resonant actuators</strong> to simulate ice cubes rolling in a glass, marbles colliding, even counting balls in a cup. The pinnacle of haptic feedback."],"irTitle":[0,"IR Motion Camera"],"irDesc":[0,"The infrared sensor at the bottom of the right Joy-Con can recognize gestures, measure distance, and even scan simple shapes (like the fishing rod in Nintendo Labo)."]}],"drift":[0,{"badge":[0,"Known Issue"],"title":[0,"Joy-Con Drift: A Global Problem"],"subtitle":[0,"Joy-Con drift occurs when the analog stick registers movement without being touched. Your character moves on its ownâalmost every Switch player's nightmare."],"causeTitle":[0,"Cause"],"causeDesc":[0,"Joy-Con uses low-quality stick modules with carbon film contacts that wear easily. Even new controllers can develop drift within months. This is a design flaw, not user error."],"tempTitle":[0,"Temporary Solutions"],"tempL1":[0,"⢠<strong>Calibrate stick</strong>: System Settings â Controllers â Calibrate Control Sticks"],"tempL2":[0,"⢠<strong>Clean contacts</strong>: Use isopropyl alcohol on a cotton swab under the stick cap"],"tempL3":[0,"⢠<strong>Increase deadzone</strong>: Some games allow adjusting deadzone settings"],"permTitle":[0,"Permanent Fix"],"permDesc":[0,"Replace the stick module ($5-15 DIY kits available). Or contact Nintendo supportâfree repair in most regions regardless of warranty status."],"imgCaption":[0,"Stick Drift Detection"]}],"faq":[0,{"title":[0,"Frequently Asked Questions"],"subtitle":[0,"Everything about Joy-Con controllers"],"q1":[0,"Is the Joy-Con Grip worth buying?"],"a1":[0,"If you prefer traditional controller grip, just buy a Pro Controller. The Grip only holds two Joy-Cons togetherâit doesn't solve issues like small sticks and short battery life."],"q2":[0,"Why does the left Joy-Con disconnect more often?"],"a2":[0,"The left Joy-Con's Bluetooth antenna placement has a design flaw that makes it easy to block with your palm. Solutions: use wired connection, reduce obstacles between controller and console, or update system firmware (Nintendo has released fixes)."],"q3":[0,"Can I use third-party Joy-Cons?"],"a3":[0,"Yes, but most don't support HD Rumble, IR camera, or NFC (amiibo). For casual gaming, third-party Joy-Cons are cheaper and work fine."],"q4":[0,"SL/SR buttons don't work in sideways mode?"],"a4":[0,"Could be poor contact or damaged buttons. Check if Joy-Con firmware is up to date (Settings â Controllers â Update Controllers). If physically damaged, you'll need to replace the button ribbon cable."]}]}],"toolsExt":[0,{"pageTitle":[0,"Testing Toolkit"],"pageSubtitle":[0,"& More Tools"],"pageDesc":[0,"ControllerTest.io is dedicated to providing the most comprehensive controller tester services. Here are all the testing tools we've developed."],"comingSoonTitle":[0,"More Coming Soon"],"comingSoonDesc":[0,"Stay tuned"],"needToolTitle":[0,"Need a New Tool?"],"needToolDesc":[0,"We're constantly expanding our toolkit. If you need a specific tool (like macro testing, input delay comparison, etc.), let us know."],"submitFeedback":[0,"Submit Feedback"],"items":[0,{"calibration":[0,{"name":[0,"PS Controller Calibration"],"desc":[0,"Fix stick drift at the firmware level. Calibrate DualShock 4 and DualSense analog sticks â center, range, and permanent save via WebHID."]}],"steering-wheel":[0,{"name":[0,"Steering Wheel Tester"],"desc":[0,"Test racing wheels, pedals, and shifters. Visualize wheel rotation, pedal linearity, and diagnose potentiometer issues."]}],"fight-stick":[0,{"name":[0,"Fight Stick Tester"],"desc":[0,"
23Test arcade sticks, hitbox, and mixbox controllers. Features Vewlix layout, SOCD cleaning test, and input history."]}],"joystick":[0,{"name":[0,"Joystick Tester"],"desc":[0,"Test flight sticks, HOTAS, racing wheels and all controllers. Supports 128+ buttons, 10+ axes with real-time visualization."]}],"latency":[0,{"name":[0,"Latency Test"],"desc":[0,"Measure controller input lag and response time in milliseconds. Compare wired vs wireless latency with WebHID 1000Hz precision."]}],"gyro":[0,{"name":[0,"Gyroscope Test"],"desc":[0,"Designed for PS4/PS5 controllers. Uses WebHID to read 6-axis sensor data with real-time 3D visualization of gyroscope and accelerometer."]}],"mapping":[0,{"name":[0,"Button Mapping Test"],"desc":[0,"Visualize button remapping results. Display logical button indices in real-time to verify remaps and macro settings."]}],"switch-pro":[0,{"name":[0,"Switch Pro Controller Test"],"desc":[0,"Designed for Nintendo Switch Pro controllers. Features Nintendo ABXY layout, ZL/ZR digital trigger detection, and HD Rumble testing."]}],"midi":[0,{"name":[0,"MIDI Tester"],"desc":[0,"Test MIDI keyboards, drum pads, and controllers. Monitor notes, CC messages, pitch bend, and velocity."]}],"xbox":[0,{"name":[0,"Xbox Controller Test"],"desc":[0,"Full-featured testing tool designed for Xbox Series X/S controllers. Optimized for hybrid D-pad, with visual button, stick, and trigger status."]}],"ps5":[0,{"name":[0,"PS5 Controller Test"],"desc":[0,"Designed for DualSense controllers. Features symmetric stick layout, touchpad press detection, and adaptive trigger (simulated) testing."]}],"joycon":[0,{"name":[0,"Joy-Con Drift Detection"],"desc":[0,"Nintendo Switch Joy-Con testing. Detect stick drift, test SL/SR side buttons, and support separate left/right controller display."]}],"polling":[0,{"name":[0,"Polling Rate Test"],"desc":[0,"Real-time detection of controller polling rate and input latency. Compare Bluetooth vs wired connection performance."]}],"drift":[0,{"name":[0,"Stick Drift Detection"],"desc":[0,"Precisely detect stick drift and deadzone. Real-time coordinate tracking with error analysis."]}],"circularity":[0,{"name":[0,"Stick Circularity Test"],"desc":[0,"Measure joystick accuracy and roundness. Analyze quadrant errors, coverage, and peak deviation."]}],"vibration":[0,{"name":[0,"Vibration Test"],"desc":[0,"Test left and right controller motors independently. Adjust strong rumble (low freq) and weak rumble (high freq) intensity."]}]}],"seo":[0,{"title":[0,"Controller Test Tools - Drift, Latency, Vibration & More"],"description":[0,"ControllerTest toolbox includes stick drift test, polling rate detection, vibration analysis, gyroscope calibration and 10+ professional testing tools. Your one-stop controller diagnostics solution."]}],"widgetsBanner":[0,{"title":[0,"Want to embed these tools on your site?"],"desc":[0,"Get free gamepad testing widgets for your website. Easy to integrate, fully responsive, and zero dependencies."],"button":[0,"Explore Widgets"]}]}],"toolSteeringWheel":[0,{"title":[0,"Steering Wheel Tester"],"connected":[0,"Connected"],"noDevice":[0,"No Device"],"rotation":[0,"Rotation"],"throttle":[0,"Throttle"],"brake":[0,"Brake"],"clutch":[0,"Clutch"],"pedalLinearity":[0,"Pedal Linearity"],"smoothCurveHint":[0,"A smooth curve indicates healthy potentiometers. Jumpy lines suggest worn or dirty sensors."],"rawAxisData":[0,"Raw Axis Data"],"connectDeviceHint":[0,"Connect a device to see axis data"],"axisPrefix":[0,"Axis"],"buttonsCount":[0,"Buttons ({count})"],"noButtonsDetected":[0,"No buttons detected"],"eventLog":[0,"Event Log"],"pressButtonsHint":[0,"Press buttons to see events..."],"buttonPressed":[0,"Button {index} Pressed"],"tipPrefix":[0,"Tip:"],"tipText":[0,"Axis mapping varies by device. If pedals appear swapped, check your wheel'
23s driver software to customize axis assignments."]}],"toolFightStick":[0,{"title":[0,"Fight Stick Tester"],"connected":[0,"Connected"],"noDevice":[0,"No Device"],"modeStick":[0,"Stick"],"modeHitbox":[0,"Hitbox"],"socdTitle":[0,"SOCD Cleaner Test"],"socdOutput":[0,"SOCD Output"],"socdHint":[0,"Press L+R or U+D simultaneously to test SOCD cleaning."],"allButtons":[0,"All Buttons ({count})"],"connectDevice":[0,"Connect a device"],"inputHistory":[0,"Input History"],"moveStickHint":[0,"Move the stick..."],"tipPrefix":[0,"Tip:"],"tipText":[0,"Use numpad notation for fighting game inputs. 236 = âââ (Quarter Circle Forward), 623 = âââ (Dragon Punch motion)."]}],"seoFightStickExt":[0,{"title":[0,"Fight Stick Tester - Test Arcade Sticks & Hitbox Controllers Online"],"description":[0,"Free online fight stick tester for arcade sticks, hitbox, and mixbox controllers. Test SOCD cleaning, button response, and directional inputs for fighting games."],"h2_1":[0,"Free Online Fight Stick Tester"],"desc_1":[0,"Test your arcade stick, hitbox, or mixbox controller with a Vewlix-style layout. Perfect for fighting game players."],"f1Title":[0,"8-Way Directional"],"f1Desc":[0,"Visualize all 8 directions plus neutral. Essential for testing motion inputs and quarter-circle commands."],"f2Title":[0,"SOCD Cleaner Test"],"f2Desc":[0,"Test simultaneous opposite cardinal direction handling. Verify Neutral, Last Input Priority, or other SOCD modes."],"f3Title":[0,"Input History"],"f3Desc":[0,"View your input sequence in fighting game notation. Great for practicing combos and verifying clean inputs."],"hardwareBadge":[0,"Fighting Game Controllers"],"hardwareTitle":[0,"Works With All Fight Sticks"],"hardwareDesc":[0,"Compatible with arcade sticks, hitbox controllers, and all-button layouts."],"h1Title":[0,"Arcade Sticks"],"h1Desc":[0,"Hori, Qanba, Razer, Mad Catz, Victrix"],"h2Title":[0,"Hitbox & Mixbox"],"h2Desc":[0,"All-button controllers with SOCD cleaning"],"h3Title":[0,"Leverless Controllers"],"h3Desc":[0,"Snackbox Micro, Flatbox, DIY builds"],"vewlixLayout":[0,"VEWLIX LAYOUT"],"faqTitle":[0,"Frequently Asked Questions"],"faqDesc":[0,"Common questions about testing fight sticks"],"q1":[0,"What is SOCD cleaning?"],"a1":[0,"SOCD (Simultaneous Opposite Cardinal Directions) cleaning determines what happens when you press Left+Right or Up+Down at the same time. Common modes include Neutral (no input) and Last Input Priority."],"q2":[0,"Why use Vewlix layout?"],"a2":[0,"Vewlix is the standard arcade cabinet layout used in Japanese fighting games. The 8-button layout (two rows of four) matches how most fight sticks are designed."],"q3":[0,"How do I read input notation?"],"a3":[0,"Directions use numpad notation (1-9, with 5 being neutral). For example, 236 means Down, Down-Forward, Forward - the quarter-circle motion for a hadouken."],"q4":[0,"Is this tournament legal?"],"a4":[0,"This is a testing tool only. For tournament legality, check with the specific event rules regarding SOCD modes and controller types (CPT, EVO, TWT have different rules)."]}],"toolJoystick":[0,{"title":[0,"Joystick Tester"],"connected":[0,"Connected"],"noController":[0,"No Controller"],"detectedDevice":[0,"Detected Device"],"buttonsCount":[0,"{count} Buttons"],"axesCount":[0,"{count} Axes"],"connectJoystick":[0,"Connect Your Joystick"],"connectPrompt":[0,"Press any button on your controller to start testing"],"tipPrefix":[0,"Tip:"],"tipText":[0,"Standard gamepads show 18 buttons and 4 axes. Flight sticks and HOTAS may have 128+ buttons and 10+ axesâuse the data panel on the right to see all inputs."],"buttonMatrix":[0,"Button Matrix ({count})"],"pressed":[0,"{count} pressed"],"connectToSeeButtons":[0,"Connect a controller to see buttons"],"connectController":[0,"Connect a controller"],"rawAxisData":[0,"Raw Axis Data ({count})"],"axisLabel":[0,"AXIS {index}"],"noAxisData":[0,"No axis data available"],"noAxisDataShort":[0,"No axis data"],"eventLog":[0,"Event Log"],"clearLog":[0,"Clear Log"],"waitingForInput":[0,"Waiting for input..."],"dataOnlyMode":[0,"Data-Only Mode"],"showController":[0,"Show Controller"],"proTipPrefix":[0,"Pro Tip:"],"proTipText":[0,"Flight sticks and HOTAS with many axes/buttons automatically switch to full-width data view."],"proTipToggle":[0,"button to toggle between controller view and data-only mode."],"joystickConnected":[0,"Joystick Connected"],"joystickDisconnected":[0,"Joystick Disconnected"],"buttonPressed":[0,"PRESSED"],"buttonReleased":[0,"Released"]}],"seoJoystickExt":[0,{"title":[0,"Joystick Tester - Test Flight Sticks, HOTAS & Controllers Online"],"description":[0,"Free online joystick tester for flight sticks, HOTAS, racing wheels, and gamepads. Visualize all buttons and axes in real-time. Supports 128+ buttons, 10+ axes. No downloads required."],"h2_1":[0,"Free Online Joystick Tester"],"desc_1":[0,"A comprehensive online tool for testing any USB or Bluetooth controller, including flight sticks, HOTAS systems, racing wheels, and standard gamepads."],"f1Title":[0,"128+ Button Support"],"f1Desc":[0,"Automatically detects and displays all buttons on your device. Perfect for complex HOTAS setups with dozens of switches and toggles."],"f2Title":[0,"10+ Axes Visualization"],"f2Desc":[0,"Monitor throttle, rudder, X/Y rotation, and all analog inputs in real-time with precise numerical values and visual bars."],"f3Title":[0,"Smart Device Detection"],"f3Desc":[0,"Automatically identifies flight sticks and HOTAS systems, switching to an optimized full-width data view for better visibility."],"hardwareBadge":[0,"Universal Compatibility"],"hardwareTitle":[0,"Works With All Your Devices"],"hardwareDesc":[0,"Our joystick tester uses the standard Gamepad API, making it compatible with virtually any controller that Windows, macOS, or Linux can recognize."],"h1Title":[0,"Flight Sticks & HOTAS"],"h1Desc":[0,"Logitech Extreme 3D Pro, Thrustmaster T.16000M, VKB Gladiator, Virpil, X52, X56, Warthog"],"h2Title":[0,"Racing Wheels & Pedals"],"h2Desc":[0,"Logitech G29/G923, Thrustmaster T300, Fanatec CSL, Moza R5, handbrakes, and shifters"],"h3Title":[0,"Standard Gamepads"],"h3Desc":[0,"Xbox, PlayStation, Switch Pro, 8BitDo, and any DirectInput/XInput compatible controller"],"plugAndPlay":[0,"PLUG & PLAY"],"faqTitle":[0,"Frequently Asked Questions"],"faqDesc":[0,"Common questions about testing joysticks and controllers online"],"q1":[0,"Why won't my joystick show up?"],"a1":[0,"Press any button on your controller firstâbrowsers require physical interaction to detect gamepads. Make sure you're using Chrome, Edge, or Firefox. Some devices may need drivers installed."],"q2":[0,"What's the difference between axes and buttons?"],"a2":[0,"Axes are analog inputs (sticks, throttles, pedals) that report values from -1 to +1. Buttons are digital inputs that are either pressed (1) or released (0), though some triggers report analog values."],"q3":[0,"Can I test my HOTAS throttle separately?"],"a3":[0,"
23Yes! Each USB device appears as a separate controller. Use the controller selector in the navbar to switch between your stick and throttle units if they're recognized as separate devices."],"q4":[0,"Why are some buttons showing wrong numbers?"],"a4":[0,"Button indices are determined by your device's firmware. The numbers you see here match what games and simulators will receive. Use this tool to verify your in-game bindings."],"simTitle":[0,"Built for Flight Simmers & Sim Racers"],"simDesc":[0,"Whether you're flying in Microsoft Flight Simulator, X-Plane, DCS World, or racing in iRacing, Assetto Corsa, or Gran Turismoâour tester helps you verify every input before you take off or hit the track."],"flightSimTitle":[0,"Flight Simulation"],"flightSimDesc":[0,"Perfect for verifying your flight controls before a session:"],"flightSim1":[0,"Test all axes"],"flightSim1Desc":[0,"pitch, roll, yaw, throttle, mixture"],"flightSim2":[0,"Verify HAT switches"],"flightSim2Desc":[0,"check all 8 directions"],"flightSim3":[0,"Check mode switches"],"flightSim3Desc":[0,"verify toggle states"],"simRacingTitle":[0,"Sim Racing"],"simRacingDesc":[0,"Essential checks for your racing setup:"],"simRacing1":[0,"Wheel centering"],"simRacing1Desc":[0,"verify axis returns to 0"],"simRacing2":[0,"Pedal calibration"],"simRacing2Desc":[0,"check full brake/throttle travel"],"simRacing3":[0,"Button mapping"],"simRacing3Desc":[0,"identify shifter paddle indices"],"noDownloadBadge":[0,"No Downloads Required"],"browserTitle":[0,"Works In Your Browser"],"browserDesc":[0,"No software to install, no drivers to configure. Simply plug in your joystick and start testing. Works on Chrome, Edge, Firefox, and Opera."],"bestExperience":[0,"Best experience:"],"bestExperienceDesc":[0,"Use Chromium-based browsers (Chrome, Edge) for the most comprehensive Gamepad API support."]}],"toolGyro":[0,{"title":[0,"Controller Gyroscope Test"],"notConnected":[0,"Not Connected (WebHID)"],"connectToStart":[0,"Connect Controller to Start"],"connectDesc":[0,"Requires a WebHID-compatible browser (Chrome/Edge). Supports PS4 DualShock 4 and PS5 DualSense controllers."],"connectBtn":[0,"Connect Controller (WebHID)"],"errNoBrowser":[0,"Your browser doesn't support WebHID API (use Chrome/Edge 89+)"],"errFailed":[0,"Connection failed or user cancelled"],"errActivation":[0,"Activation failed: ensure USB connection"],"sensorData":[0,"Sensor Data"],"accelerometer":[0,"Accelerometer"],"gyroscope":[0,"Gyroscope"],"whyNotChanging":[0,"Why aren't the values changing?"],"reasonTitle":[0,"Reason:"],"reasonDesc":[0,"Sony controllers default to \"power-saving mode\" and don't send motion data."],"recommendedTitle":[0,"Recommended:"],"recommendedDesc":[0,"Use a USB cable connection. (100% success rate)"],"bluetoothTitle":[0,"Bluetooth:"],"bluetoothDesc":[0,"Protocol limitations may cause activation to fail."],"clickWakeup":[0,"Click the button below to manually send a wake-up command."],"btnWakeup":[0,"Try Activate (USB)"],"btnSent":[0,"Command Sent"],"resetView":[0,"Reset View"],"pitch":[0,"Pitch:"],"roll":[0,"Roll:"]}],"seoGyroExt":[0,{"title":[0,"Gyroscope Test - Gamepad Motion & Sixaxis Calibration"],"description":[0,"Test PS5/PS4 controller 6-axis motion sensors. Calibrate gamepad gyroscope and accelerometer online using WebHID technology."],"h2_1":[0,"Gyroscope vs Accelerometer: The Twin Sensors of Motion Control"],"desc_1":[0,"
23Why do modern controllers need two types of sensors? How do they work together for precise motion aiming?"],"s1Title":[0,"Gyroscope"],"s1Desc":[0,"Measures <strong>angular velocity</strong> (rotation speed). When you rotate the controller, the gyroscope detects how fast you're rotating around the X/Y/Z axes. Used for <strong>aiming, camera control</strong>."],"s1Ex":[0,"<strong>Examples:</strong> Zelda bow aiming, Splatoon gyro shooting"],"s2Title":[0,"Accelerometer"],"s2Desc":[0,"Measures <strong>linear acceleration</strong> (forward/back, left/right, up/down movement). Combined with the gyroscope, can calculate controller <strong>orientation angles</strong> (Pitch/Roll)."],"s2Ex":[0,"<strong>Examples:</strong> Racing game tilt steering, Ring Fit detecting workout intensity"],"badgeWebHID":[0,"Browser Technology"],"h2WebHID":[0,"Why Is WebHID Needed?"],"descWebHID":[0,"The standard Gamepad API doesn't provide gyroscope data. WebHID (Web Human Interface Device) allows browsers to directly read raw data reports from HID devices."],"b1Title":[0,"Supported Browsers"],"b1Desc":[0,"Chrome/Edge 89+, Opera 75+. Firefox and Safari don't support it yet (waiting for standardization)."],"b2Title":[0,"Supported Controllers"],"b2Desc":[0,"<strong>Fully supported:</strong> PS4 DualShock 4, PS5 DualSense (USB connection recommended for data stability)<br /><strong>Not supported:</strong> Xbox controllers (don't expose gyro data), Switch Pro (incompatible protocol)"],"apiBadge":[0,"WebHID API"],"faqTitle":[0,"Frequently Asked Questions"],"faqDesc":[0,"Everything about controller gyroscopes"],"q1":[0,"Why are the values always 0?"],"a1":[0,"PS controllers default to power-saving mode and don't actively send gyroscope data. Solution: â Use USB connection (recommended); â¡ Click 'Try Activate' button to send a wake-up command (may fail over Bluetooth)."],"q2":[0,"Does the gyroscope drift?"],"a2":[0,"Yes. Integration error in gyroscopes causes angle offset over extended use. This isn't a defect, but a technical limitation. Games typically solve this with 'press button to reset view' or 'periodic auto-calibration'."],"q3":[0,"Why can Steam games use gyro but web pages can't?"],"a3":[0,"Steam Input reads controller data directly through driver-level access, bypassing browser APIs. Web pages are limited by WebHID support and require users to manually authorize device access."],"q4":[0,"Can I use this on mobile browsers?"],"a4":[0,"No. WebHID is currently limited to desktop browsers (Chrome/Edge). Mobile browsers (including Android Chrome) don't support this API."]}],"toolMapping":[0,{"title":[0,"Button Mapping Detection"],"connected":[0,"Controller Connected"],"notConnected":[0,"No Controller"],"howToUseTitle":[0,"How to use:"],"howToUseDesc":[0,"Press any physical button on your controller. Observe which area lights up on screen and its corresponding index number. If the lit area doesn't match the button you pressed, there may be a mapping modification or driver issue."],"realTimeLog":[0,"Real-time Event Log"],"clearLogTitle":[0,"Clear Log"],"waitingInput":[0,"Waiting for input..."],"pressed":[0,"PRESSED"],"released":[0,"Released"],"rawAxisData":[0,"Raw Axis Data"],"axis":[0,"AXIS"],"systemConnected":[0,"Gamepad Connected"],"systemConnectedStore":[0,"Gamepad Connected (Store)"],"systemDisconnected":[0,"Gamepad Disconnected"]}],"seoMappingExt":[0,{"title":[0,"Button Mapping Test - Controller Input & Layout Check"],"description":[0,"Verify controller button layout and mapping. Test inputs for A/B/X/Y, triggers, and bumpers. Diagnose gamepad driver issues and logical mapping errors."],"h2_1":[0,"Standard Gamepad: The Unified Web Standard"],"desc_1":[0,"How did W3C define the future of cross-platform controllers with 17 buttons and 4 axes?"],"badgeW3C":[0,"W3C Standard"],"h3_1":[0,"Standard Gamepad Button Layout"],"desc_1_body":[0,"The Gamepad API defines a fixed \"Standard Gamepad\" layout: <strong>4 face buttons</strong> (Index 0-3, ABXY), <strong>shoulder buttons</strong> (Index 4-7, LB/RB/LT/RT), <strong>system buttons</strong> (Index 8-9), etc."],"quickRef":[0,"Button Index Quick Reference"],"b0_3":[0,"A/B/X/Y (face)"],"b10_11":[0,"LS/RS (stick click)"],"b4_5":[0,"LB/RB (bumpers)"],"b12_15":[0,"D-Pad"],"b6_7":[0,"LT/RT (triggers)"],"b16":[0,"Home/Share (extended)"],"axesDataTitle":[0,"Axes Data"],"axesDataDesc":[0,"<strong>0/1:</strong> Left stick X/Yã<strong>2/3:</strong> Right stick X/Y (range -1.0 to 1.0)"],"apiBadge":[0,"Standard Gamepad API"],"h2_2":[0,"Why Is My Controller Mapping Wrong?"],"desc_2":[0,"DirectInput, XInput, different drivers... Uncovering the truth behind button confusion"],"s1Title":[0,"DirectInput's Randomness"],"s1Desc":[0,"DirectInput doesn't specify button orderâeach manufacturer defines it freely. PS controller's \"Ã\" button might be Index 0 or Index 1. This means <strong>the same physical button can have different indices with different drivers</strong>."],"s2Title":[0,"Driver-Level Mapping Modifications"],"s2Desc":[0,"Tools like DS4Windows and BetterJoy \"disguise\" your controller as an Xbox controller. This modifies the button mapping to conform to Standard Gamepad spec. This is <strong>intentional behavior</strong>, not a bug."],"faqTitle":[0,"Frequently Asked Questions"],"faqDesc":[0,"Everything about controller button mapping"],"q1":[0,"Why is my D-Pad showing as Axis instead of Buttons?"],"a1":[0,"Some older controllers (like Xbox 360) implement the D-Pad as axes (Axis 6/7) rather than 4 separate buttons. This is a hardware design difference, and the browser faithfully reflects the hardware state."],"q2":[0,"Why are LT/RT sometimes Buttons and sometimes Axes?"],"a2":[0,"This depends on the driver mode. In XInput mode, LT/RT are Buttons 6/7 (digital). In DirectInput mode, they may be Axes (analog 0-1). The Standard Gamepad spec requires triggers to be buttons."],"q3":[0,"Can I modify the button mapping myself?"],"a3":[0,"The browser Gamepad API is read-onlyâyou can't modify mappings. Solutions: â Use system-level tools (AntiMicro, JoyToKey); â¡ In-game key customization; ⢠Change drivers (DS4Windows)."],"q4":[0,"Why does my controller have 20+ buttons?"],"a4":[0,"Some advanced controllers (flight sticks, racing wheels) have many physical buttons. The browser exposes all buttons, but Standard Gamepad only defines the first 17. Extra buttons have no standard names."]}],"toolSwitchPro":[0,{"title":[0,"Switch Pro Controller Test"],"badge":[0,"Pro Controller"],"description":[0,"Nintendo layout support | Compatible with Pro Controller and third-party alternatives"],"multiPlayer":[0,"Multi-Player"],"digitalTriggers":[0,"ZL/ZR Digital Triggers"]}],"seoSwitchProExt":[0,{"title":[0,"Switch Pro Controller Test - Input, Drift & Stick Check"],"description":[0,"Test all Switch Pro Controller features including 40-hour battery verification, stick precision, HD Rumble, and PC cross-platform compatibility. Supports official and third-party Pro controllers."],"h2_1":[0,"Pro Controller: The Pro Player's Choice"],"desc_1":[0,"40-hour battery, traditional layout, HD Rumbleâwhy it's the best Switch controller"],"s1Title":[0,"Exceptional Battery Life"],"s1Desc":[0,"Single charge lasts about <strong>40 hours</strong>â8x longer than Joy-Cons. USB-C charging port means no more constant Joy-Con charging frustration."],"s2Title":[0,"Traditional Layout + Premium Build"],"s2Desc":[0,"Full <strong>D-pad</strong> (not Joy-Con's split buttons), full-size sticks, and ZL/ZR digital triggers. Solid construction with feel far superior to Joy-Cons."],"s3Title":[0,"HD Rumble + NFC"],"s3Desc":[0,"Supports HD Rumble and amiibo scanning with the same experience as Joy-Cons. Also has gyroscope for motion aiming (no IR camera though)."],"badgeCrossPlatform":[0,"Cross-Platform"],"h2_2":[0,"Use Pro Controller on PC?"],"desc_2":[0,"Absolutely! Pro Controller connects to PC via Bluetooth or USB-C and is recognized as a standard gamepad. Steam has native support; other platforms may need drivers."],"p1Title":[0,"Steam Games"],"p1Desc":[0,"Steam Input automatically recognizes Pro Controllerâno extra drivers needed. Button mapping, gyro aiming, and rumble feedback all supported."],"p2Title":[0,"Non-Steam Games"],"p2Desc":[0,"Use BetterJoy or DS4Windows (Switch Pro compatible) to emulate as XInput device for universal PC game compatibility."],"crossPlatformGaming":[0,"Cross-Platform Gaming"],"faqTitle":[0,"Frequently Asked Questions"],"faqDesc":[0,"Everything about Switch Pro Controller"],"q1":[0,"Does the Pro Controller get drift?"],"a1":[0,"It can, but far less often than Joy-Cons. Pro Controller uses higher-quality stick modules, and the full-size design reduces accidental input. Even if mild drift occurs, calibration usually fixes it."],"q2":[0,"Are third-party Pro controllers worth it?"],"a2":[0,"If on a budget, third-party options (like 8BitDo, PowerA) are decent alternatives. But note: most don't support HD Rumble or amiibo, and build quality varies compared to Nintendo originals."],"q3":[0,"Can Pro Controller connect to Switch and PC simultaneously?"],"a3":[0,"No. Pro Controller can only pair with one device at a time. To switch between Switch and PC, you'll need to re-pair (hold sync button)."],"q4":[0,"Why are my Pro Controller buttons wrong on PC?"],"a4":[0,"Windows defaults to recognizing Switch Pro as DirectInput, not XInput. Solution: Use Steam Input or install BetterJoy driver for proper button mapping."]}],"toolLatency":[0,{"title":[0,"Controller Latency Test"],"resume":[0,"Resume"],"pause":[0,"Pause"],"connected":[0,"Connected"],"noController":[0,"No Controller"],"error0HzTitle":[0,"0Hz Data Error"],"error0HzDescPrefix":[0,"WebHID connected but no data received. Switch to"],"error0HzDescBold":[0,"D-Input"],"error0HzDescSuffix":[0,"mode."],"reconnectWebHID":[0,"Reconnect WebHID"],"ms":[0,"ms"],"hz":[0,"Hz"],"unlock1000Hz":[0,"Unlock 1000Hz (WebHID)"],"unlockDesc":[0,"Standard API is limited to ~200Hz. WebHID provides true precision."],"webhidVerified":[0,"WebHID Verified"],"deviceConnected":[0,"Device Connected"],"renameDevice":[0,"Rename Device"],"vendorId":[0,"Vendor ID"],"productId":[0,"Product ID"],"latencyStats":[0,"Latency Statistics"],"average":[0,"Average"],"jitter":[0,"Jitter"],"min":[0,"Min"],"max":[0,"Max"],"pollingRate":[0,"Polling Rate"],"latencyGuide":[0,"Latency Guide"],"scale0to2":[0,"0-2ms"],"scale0to2Desc":[0,"Excellent ⢠Pro-level"],"scale2to5":[0,"2-5ms"],"scale2to5Desc":[0,"Great ⢠Wired USB"],"scale5to8":[0,"5-8ms"],"scale5to8Desc":[0,"Average ⢠2.4GHz Wireless"],"scale8plus":[0,"8ms+"],"
23scale8plusDesc":[0,"High ⢠Bluetooth"],"notePrefix":[0,"Note:"],"noteText":[0,"This measures controller-to-PC latency (input delay between packets). Total system latency also includes display lag and game engine processing."]}],"seoLatencyExt":[0,{"title":[0,"Controller Latency Test - Check Input Lag & Response Time"],"description":[0,"Free online controller latency test and input lag checker. Measure your gamepad's response time in milliseconds. Supports Xbox, PS5, and all USB/Bluetooth controllers. WebHID 1000Hz precision."],"h2_1":[0,"Free Online Controller Latency Tester"],"desc_1":[0,"Input latency is the time delay between pressing a button and your game registering that input. Lower latency means faster, more responsive controls."],"f1Title":[0,"0-5ms: Excellent"],"f1Desc":[0,"Pro-level responsiveness. Ideal for competitive FPS and fighting games where every millisecond counts."],"f2Title":[0,"5-10ms: Good"],"f2Desc":[0,"Standard for wired controllers. Suitable for most gaming scenarios including action and racing games."],"f3Title":[0,"10ms+: High Latency"],"f3Desc":[0,"Common with Bluetooth connections. May cause noticeable input delay in fast-paced games."],"badgeWiredVsWireless":[0,"Wired vs Wireless"],"h2WiredVsWireless":[0,"Connection Type Matters"],"descWiredVsWireless":[0,"The way you connect your controller significantly impacts input latency. Use this tool to compare wired and wireless performance."],"h1Type":[0,"USB Wired Connection"],"d1Type":[0,"Typically 1-4ms latency. Most consistent and reliable for competitive gaming."],"h2Type":[0,"2.4GHz Wireless Dongle"],"d2Type":[0,"Usually 2-8ms latency. Near-wired performance with the convenience of wireless."],"h3Type":[0,"Bluetooth Connection"],"d3Type":[0,"Typically 8-16ms+ latency. Convenient but not recommended for competitive play."],"rtMeasurement":[0,"REAL-TIME MEASUREMENT"],"faqTitle":[0,"Frequently Asked Questions"],"faqDesc":[0,"Common questions about controller input lag testing"],"q1":[0,"What does \"input lag\" actually measure?"],"a1":[0,"This tool measures the time between your controller sending data packets to your computer. It reflects how quickly your PC receives input signals, not the total system latency (which also includes display lag)."],"q2":[0,"Why does WebHID give more accurate results?"],"a2":[0,"WebHID bypasses browser limitations (like Chrome's 200Hz cap) and reads directly from your controller's hardware. This provides true 1000Hz measurement capability for precision testing."],"q3":[0,"How can I reduce my controller's latency?"],"a3":[0,"Use a wired USB connection instead of Bluetooth. Update your controller's firmware. Close background applications. Some controllers support high-polling-rate modes (1000Hz) via software."],"q4":[0,"What's the difference between polling rate and latency?"],"a4":[0,"Polling rate (Hz) is how often your controller sends data. Latency (ms) is the time between packets. They're inversely related: 1000Hz = 1ms intervals, 125Hz = 8ms intervals."],"badgeWebHID":[0,"WebHID Precision"],"ctaTitle":[0,"Unlock True 1000Hz Testing"],"ctaDesc":[0,"Standard browser APIs are limited to ~200Hz polling. Connect via WebHID to bypass these restrictions and measure your controller's true performance up to 1000Hz."]}],"toolMidi":[0,{"title":[0,"Online MIDI Tester"],"description":[0,"Test your MIDI keyboards, controllers, drum pads, and synthesizers right in y
23our browser. Send and receive data without installing any software."],"features":[0,{"title":[0,"Features & Capabilities"],"f1":[0,"Hardware Detection"],"f1d":[0,"Automatically detects all connected MIDI input and output devices."],"f2":[0,"Real-time Monitoring"],"f2d":[0,"View raw MIDI messages, Notes, Velocity, Control Changes (CC), Pitch Bend, and Aftertouch instantly."],"f3":[0,"Advanced Routing"],"f3d":[0,"Filter redundant signals, route inputs to outputs, and send custom Hex/SysEx commands."],"f4":[0,"No Installation"],"f4d":[0,"Runs locally in your browser leveraging the Web MIDI API. No drivers or software needed."]}],"connect":[0,"Connect"],"connecting":[0,"Connecting..."],"webMidiNotSupported":[0,"Web MIDI API Not Supported"],"useChromeEdgeOpera":[0,"Please use a compatible browser like Chrome, Edge, or Opera."],"connectMidiDevice":[0,"Connect Your MIDI Device"],"grantBrowserPermission":[0,"Grant browser permission to detect MIDI devices."],"midiConnected":[0,"MIDI Connection Active"],"inputsOutputs":[0,"{inputs} Inputs, {outputs} Outputs Available"],"notConnected":[0,"Not Connected"],"full88Keys":[0,"Full 88 Keys (A0âC8)"],"allDevices":[0,"Listen to All Devices"],"lastNote":[0,"Last Note"],"velocity":[0,"Velocity"],"active":[0,"Active"],"total":[0,"Total"],"pitchBend":[0,"Pitch Bend"],"aftertouch":[0,"Aftertouch"],"avg":[0,"Avg: {avg} | Min: {min} | Max: {max}"],"controlChange":[0,"Control Change (CC)"],"program":[0,"Program {program}"],"moveKnobs":[0,"Move knobs or faders to see CC values"],"activeNotes":[0,"Playing Notes"],"noActiveNotes":[0,"No notes playing"],"clickToOutput":[0,"Click keys to send notes to the selected Output"],"midiLog":[0,"MIDI Log ({count})"],"clearMessages":[0,"Clear Messages"],"playNotesOrMove":[0,"Play some notes or move a controller to see MIDI data..."],"sysexMode":[0,"Sysex Mode"],"sysexWarning":[0,"Requires advanced permissions to send System Exclusive messages."],"sysexEnable":[0,"Enable Sysex"],"sysexMessages":[0,"Sysex Messages"],"sysexNotSupported":[0,"Sysex is not supported or permission was denied by your browser."],"sysexDenied":[0,"Permission to use System Exclusive messages was denied by the browser."],"sysexHex":[0,"Hex Data"],"logFormatReadable":[0,"Readable"],"logFormatHex":[0,"Hex"],"filterClock":[0,"Clock (F8)"],"filterActiveSensing":[0,"Active Sensing (FE)"],"exportLog":[0,"Export Log (.txt)"],"selectOutput":[0,"Output Destination"],"selectOutputFirst":[0,"Please select an Output device above to send data."],"midiThru":[0,"MIDI Thru (Forwarding)"],"panicButton":[0,"Panic (All Notes Off)"],"sendHex":[0,"Send"],"sysexTruncated":[0,"... ({count} bytes, download to view all)"],"hexSent":[0,"Sent!"],"hexInputPlaceholder":[0,"Enter hex bytes (e.g. F0 41 10 ... F7)"],"customHexTerminal":[0,"SysEx / Hex Terminal"],"hexInvalidLength":[0,"Hex string must have an even number of characters."],"hexFormatError":[0,"Invalid hex format."],"sysexModalTitle":[0,"â ï¸ Enable Advanced System Exclusive (SysEx)"],"sysexModalContent":[0,"Enabling this mode allows you to monitor and send low-level hexadecimal code. Sending incorrect code may modify your hardware settings. Please ensure you know
23what you are doing."],"sysexModalConfirm":[0,"I understand the risks, Enable"],"cancel":[0,"Cancel"],"iUnderstand":[0,"I understand the risks, Enable"],"backToTools":[0,"Back to Tools"],"panic":[0,"Panic"],"in":[0,"IN"],"thru":[0,"Thru"],"noOutput":[0,"-- No Output --"],"out":[0,"OUT"],"view":[0,"View"],"filters":[0,"Filters"],"enableSysexTitle":[0,"Enable System Exclusive (Sysex)?"],"sysexWarningDetail":[0,"Sysex messages can alter deep device settings. Sending incorrect data may modify your hardware configuration. Are you sure you want to proceed?"],"enable":[0,"Enable Sysex"],"tipPrefix":[0,"Tip:"],"tipContent":[0,"Velocity ranges from 0-127. A healthy keyboard should produce consistent velocity values across all keys. Use the statistics to check for dead or unresponsive keys."]}],"seoMidiExt":[0,{"title":[0,"MIDI Tester - Test MIDI Controllers & Keyboards Online"],"description":[0,"Free online MIDI tester for keyboards, drum pads, and controllers. Test note on/off, velocity, control change, and pitch bend with real-time visualization."],"h2_1":[0,"Free Online MIDI Tester"],"desc_1":[0,"Test MIDI keyboards, drum pads, and controllers directly in your browser. No software installation required."],"f1Title":[0,"Note Detection"],"f1Desc":[0,"See Note On/Off messages with pitch names (C4, D#5, etc.) and velocity values in real-time."],"f2Title":[0,"Control Change"],"f2Desc":[0,"Monitor CC messages from knobs, faders, and mod wheels. Track controller numbers and values."],"f3Title":[0,"Pitch Bend"],"f3Desc":[0,"Visualize pitch bend wheel position and aftertouch pressure in real-time."],"badgeWebMidi":[0,"Web MIDI API"],"h2_2":[0,"Works With All MIDI Devices"],"desc_2":[0,"
23Any class-compliant USB MIDI device works instantly."],"p1Title":[0,"MIDI Keyboards"],"p1Desc":[0,"Akai, Arturia, Native Instruments, Novation, M-Audio"],"p2Title":[0,"Drum Pads & Controllers"],"p2Desc":[0,"Akai MPC, Ableton Push, Maschine, Launchpad"],"p3Title":[0,"DAW Controllers"],"p3Desc":[0,"Faders, knobs, transport controls, and mixing surfaces"],"plugAndPlay":[0,"PLUG & PLAY"],"faqTitle":[0,"Frequently Asked Questions"],"faqDesc":[0,"Common questions about testing MIDI devices"],"q1":[0,"Which browsers support Web MIDI?"],"a1":[0,"Chrome, Edge, and Opera support Web MIDI API. Firefox and Safari do not currently support it. Use a Chromium-based browser for best results."],"q2":[0,"My device isn't detected?"],"a2":[0,"Make sure your device is connected before loading the page. Try refreshing if it's not detected. Some devices need drivers installed first."],"q3":[0,"What is a CC message?"],"a3":[0,"CC (Control Change) messages are sent by knobs, faders, and other continuous controllers. Each has a CC number (0-127) and value (0-127)."],"q4":[0,"Can I test MIDI output?"],"a4":[0,"This tool monitors MIDI input only. For testing MIDI output, you would need to route MIDI back to an input device or use DAW software."]}],"widgets":[0,{"badge":[0,"Widgets & Embeds"],"title":[0,"Embed Free Controller Test Tools"],"subtitle":[0,"Enrich your website with our interactive controller test widgets. Highly customizable, mobile-friendly, and free to use."],"configureWidget":[0,"Configure Widget"],"selectTool":[0,"Select Tool"],"widgetSuffix":[0,"Widget"],"language":[0,"Language"],"themePreference":[0,"Theme Preference"],"themeAuto":[0,"Auto"],"themeLight":[0,"Light"],"themeDark":[0,"Dark"],"embedCode":[0,"Embed Code"],"copy":[0,"Copy"],"copied":[0,"Copied"],"responsiveHint":[0,"Our widgets are highly responsive. Feel free to adjust the {height} and {width} attributes to fit your container perfectly."],"livePreview":[0,"Live Preview"],"openNewTab":[0,"Open in new tab"],"seoTitle":[0,"Embed Gamepad Testing Widgets - ControllerTest.io"],"seoDesc":[0,"Embed free gamepad and joystick testing widgets into your own website. Choose from 15 different controller test tools to enrich your content."],"features":[0,{"badge":[0,"Why Choose Our Widgets"],"title":[0,"Built for Developers & Content Creators"],"subtitle":[0,"Powerful, lightweight controller test widgets that integrate seamlessly into any website."],"f1Title":[0,"Fully Responsive"],"f1Desc":[0,"Widgets automatically adapt to any container size. Perfect for sidebars, full-width layouts, and mobile devices."],"f2Title":[0,"Multi-Language Support"],"f2Desc":[0,"Available in 10 languages including English, Japanese, Korean, Chinese, and European languages. Serve a global audience."],"f3Title":[0,"Theme Customizable"],"f3Desc":[0,"Choose between light, dark, or auto theme modes. Widgets seamlessly blend with your site's design."],"f4Title":[0,"Zero Dependencies"],"f4Desc":[0,"Simple iframe embed with no JavaScript SDK required. Just paste the code and it works instantly."]}],"useCases":[0,{"badge":[0,"Use Cases"],"title":[0,"Perfect For Every Scenario"],"subtitle":[0,"See how different websites and platforms use our controller test widgets."],"u1Title":[0,"Gaming Review Sites"],"u1Desc":[0,"Let readers test their controllers directly within your hardware reviews. Embed stick drift tests alongside controller reviews for interactive content."],"u2Title":[0,"E-Commerce Product Pages"],"u2Desc":[0,"Add controller test widgets to your product listings. Help customers verify their new controller works perfectly right after purchase."],"u3Title":[0,"Gaming Communities & Forums"],"u3Desc":[0,"Embed polling rate or latency tests in your community pages. Help members diagnose controller issues and share results."]}],"faq":[0,{"title":[0,"Frequently Asked Questions"],"subtitle":[0,"Everything you need to know about embedding our widgets"],"q1":[0,"Are the widgets free to use?"],"a1":[0,"Yes, all our widgets are completely free to embed on any website. No API key, registration, or payment required."],"q2":[0,"Do the widgets work on mobile devices?"],"a2":[0,"Yes, all widgets are fully responsive and optimized for mobile browsers. They support touch input and automatically adapt to screen size."],"q3":[0,"Can I customize the widget appearance?"],"a3":[0,"You can set the theme (light, dark, or auto) and language via URL parameters. The widget dimensions are controlled via the iframe's width and height attributes."],"q4":[0,"Which controllers are supported?"],"a4":[0,"Our widgets support any controller recognized by the browser's Gamepad API â including Xbox, PlayStation, Switch Pro, and most third-party USB/Bluetooth controllers."]}],"watermarkHover":[0,"Visit ControllerTest.io for more tools"],"copyEmbed":[0,"Embed Widget"]}],"terms":[0,{"title":[0,"Terms of Service"],"subtitle":[0,"Legal Agreements & Disclaimers"],"desc":[0,"Please read these terms carefully before using ControllerTest.io. By using this website, you agree to be bound by these terms."],"lastUpdated":[0,"Last Updated: March 2026"],"acceptanceTitle":[0,"1. Acceptance of Terms"],"acceptanceDesc":[0,"By accessing and using ControllerTest.io (the \"Service\"), you accept and agree to be bound by the terms and provision of this agreement. If you do not agree to abide by the above, please do not use this service."],"hardwareLiabilityTitle":[0,"2. Hardware Liability Disclaimer"],"hardwareLiabilityDesc":[0,"THE SERVICE IS PROVIDED \"AS IS\" WITHOUT WARRANTY OF ANY KIND. ControllerTest.io provides diagnostic tools (including but not limited to Vibration Tests, Joystick Calibration, and Trigger Polling) for informational purposes only. You expressly understand and agree that we shall not be liable for any direct, indirect, incidental, or consequential damages, including but not limited to: hardware failure, broken cables or ribbon cables, data loss, or any other device malfunctions that may occur before, during, or after using our testing tools. Any physical repairs, modifications, or teardowns performed by you based on our diagnostic results are done entirely at your own risk."],"widgetRevocationTitle":[0,"3. Widget Usage & Revocation Rights"],"widgetRevocationDesc":[0,"We provide embeddable \"Widgets\" for third-party websites to utilize our testing interface. By embedding our widgets, you agree that ControllerTest.io reserves the right, in its sole discretion, to block, suspend, or terminate widget access to any domain or IP address at any time, without prior notice or liability. Reasons for revocation may include, but are not limited to: violation of applicable laws, abusive automated requests, or generating excessive traffic that threatens our server infrastru
23cture."],"ipProtectionTitle":[0,"4. Intellectual Property & Anti-Cloning"],"ipProtectionDesc":[0,"All content, visual interfaces, UI designs (including our specific \"Bento\" aesthetic and color palettes), graphics, code, and other material on this site are the exclusive property of ControllerTest.io. You are granted a limited, non-exclusive license to use the Service as intended. You explicitly agree NOT to: copy, clone, scrape, reverse-engineer, mirror, or otherwise reproduce the frontend design or backend logic of this website to create a competing product or for any other purpose. Unauthorized cloning of our UI or assets is strictly prohibited and will be subject to enforcement."],"privacyTitle":[0,"5. Privacy Policy"],"privacyDesc":[0,"Your use of the Service is also governed by our Privacy Policy. We respect your privacy and do not collect unnecessary personal identifiable information."],"changesTitle":[0,"6. Changes to Terms"],"changesDesc":[0,"We reserve the right to modify these terms at any time. We do so by posting and drawing attention to the updated terms on the Site. Your decision to continue to visit and make use of the Site after such changes have been made constitutes your formal acceptance of the new Terms of Service."],"contactTitle":[0,"7. Contact Us"],"contactDesc":[0,"If you have any questions about these Terms, please contact us."]}],"toolCalibration":[0,{"title":[0,"PS Controller Calibration"],"description":[0,"Calibrate PlayStation controller sticks via WebHID. Supports DualShock 4 and DualSense."],"connectTitle":[0,"Connect Your Controller"],"connectDesc":[0,"Plug in your PlayStation controller using a USB cable. Bluetooth connections are not supported for calibration."],"connectBtn":[0,"Connect Controller"],"connectFailed":[0,"Failed to connect. Make sure your controller is plugged in via USB and you're using Chrome or Edge."],"disconnected":[0,"Controller disconnected. Please reconnect via USB."],"usbOnly":[0,"USB connection required â Bluetooth is not supported"],"browserReq":[0,"Requires Chrome or Edge browser (WebHID API)"],"disclaimerNotAffiliated":[0,"This website is not affiliated with Sony or PlayStation."],"disclaimerNoWarranty":[0,"Provided without warranty. Use at your own risk."],"disclaimerBattery":[0,"Ensure the controller battery is well charged. If the battery dies during calibration, the controller may be permanently damaged."],"disclaimerTempFirst":[0,"Try the temporary calibration first before saving permanently."],"cloneDetected":[0,"Clone controller detected. Calibration is disabled for safety."],"cloneWarning":[0,"Clone Detected"],"genuine":[0,"Genuine Controller"],"step":[0,"Step"],"step1":[0,"Connect"],"step2":[0,"Center"],"step3":[0,"Range"],"step4":[0,"Verify"],"step5":[0,"Save"],"leftStick":[0,"Left Stick"],"rightStick":[0,"Right Stick"],"pushtopLeft":[0,"Push both sticks to the top-left corner, then release"],"pushtopRight":[0,"Push both sticks to the top-right corner, then release"],"pushbottomLeft":[0,"Push both sticks to the bottom-left corner, then release"],"pushbottomRight":[0,"Push both sticks to the bottom-right corner, then release"],"releaseAndContinue":[0,"Release the sticks completely, then press Next"],"centerDone":[0,"Center calibration complete"],"next":[0,"Next"],"startRange":[0,"Continue to Range Calibration"],"sampling":[0,"Sampling in progress"],"rotateInstructions":[0,"Slowly rotate both analog sticks in full circles. Cover all directions to ensure complete range calibration."],"done":[0,"Finish Range Calibration"],"keepRotating":[0,"Keep rotating... cover all sectors"],"calibrationApplied":[0,"Calibration applied temporarily"],"verifyDesc":[0,"Test your sticks now. The calibration is active but temporary â it will be lost if you restart the controller without saving."],"looksgood":[0,"Looks Good â Save"],"undo":[0,"Undo â Restart Controller"],"saveTitle":[0,"Save Calibration Permanently"],"saveWarning":[0,"This will permanently write calibration data to the controller's NVS firmware. Do not disconnect USB or let the battery die during this process. Modifying NVS data may be considered unauthorized modification by Sony and could affect your warranty. You assume all responsibility."],"saveBatteryLow":[0,"Battery level is below 30%. Please charge your controller before saving to prevent write corruption."],"saveBatteryUnknown":[0,"Unable to read the battery level. Charge the controller, then reconnect it before saving."],"typeSave":[0,"Type SAVE to confirm"],"savePermanent":[0,"Save Permanently"],"keepTemp":[0,"Keep Temporary"],"tempOnly":[0,"Calibration is temporary. It will be lost when you restart the controller."],"savedSuccess":[0,"Calibration Saved Successfully!"],"saveSuccessDesc":[0,"Your controller's calibration has been permanently updated. You can now disconnect the USB cable."],"exportBackup":[0,"Export Backup"],"calibrateAgain":[0,"Calibrate Again"],"resetDone":[0,"Controller reset. Restart the controller to restore original calibration."],"deviceInfo":[0,"Device Info"],"model":[0,"Model"],"serial":[0,"
23Serial"],"firmware":[0,"Firmware"],"color":[0,"Color"],"nvs":[0,"NVS Status"],"battery":[0,"Battery"],"safetyStatus":[0,"Safety Status"],"warnings":[0,"Important Warnings"],"warnBattery":[0,"Ensure battery is above 30% before saving permanently"],"warnUSB":[0,"Do not disconnect USB during the save process"],"warnPermanent":[0,"Permanent save modifies controller firmware calibration data"],"warnClone":[0,"Clone controllers are not supported and will be blocked"],"toolName":[0,"PS Controller Calibration"],"toolDesc":[0,"Fix stick drift at the firmware level. Calibrate DualShock 4 and DualSense analog sticks â center, range, and permanent save via WebHID."],"tryDemo":[0,"Try Demo Mode (no controller needed)"],"quickAutoCalib":[0,"Quick Auto Calibrate"],"expertMode":[0,"Expert Mode (skip progress requirement)"],"rotateFullCircles":[0,"rotate both sticks in full circles"],"ftTitle":[0,"Fine-Tune Stick Values"],"ftCenter":[0,"Center"],"ftCircularity":[0,"Circularity"],"ftCurrent":[0,"Current"],"ftLiveInMemory":[0,"live in memory"],"ftOriginal":[0,"Original"],"ftSessionStart":[0,"session start"],"ftSaved":[0,"Saved"],"ftInNvs":[0,"in NVS"],"ftCenterModeDesc":[0,"Center mode â keep stick released, use D-pad/ââââ to nudge center point."],"ftCircModeDesc":[0,"Circularity mode â push stick to edge, use D-pad to adjust range. L2/R2 for auto-tune."],"ftStickActive":[0,"{stick} stick active."],"ftLeft":[0,"Left"],"ftRight":[0,"Right"],"ftStep":[0,"Step"],"ftErrorSlack":[0,"Error Slack"],"ftUndoSlack":[0,"Undo"],"ftAll12":[0,"All 12 values"],"ftChanged":[0,"{count} changed"],"ftResetCenter":[0,"Reset {stick} Center"],"ftResetRange":[0,"Reset {stick} Range"],"ftUnsavedChanges":[0,"Unsaved changes in controller memory"],"ftInSync":[0,"In sync with NVS"],"ftRestoreTo":[0,"Restore toâ¦"],"ftSessionOriginal":[0,"Session Original"],"ftLastNvsSave":[0,"Last NVS Save"],"ftFromHistory":[0,"From History"],"ftDiscardClose":[0,"Discard & Close"],"ftTitleSessionOriginal":[0,"Values when you opened finetune or last re-calibrated"],"ftTitleLastNvs":[0,"Last values saved permanently to controller NVS"],"ftTitleFromHistory":[0,"Browse and restore from saved history entries"],"ftTitleDiscard":[0,"Discard all changes and restore to session original"],"ftQuickCalibrate":[0,"Quick Calibrate"],"ftQuickCenter":[0,"Center"],"ftQuickRange":[0,"Range (10s)"],"ftAutoTuneAll":[0,"Auto-Tune All 4 Axes"],"ftUnableToRead":[0,"Unable to read finetune data"],"ftLoading":[0,"Loading..."],"ftTempActiveNote":[0,"Your adjustments are active temporarily. They will be lost if the controller is rebooted. Save permanently to keep them."],"ftSavePermanently":[0,"Save Permanently"],"unsavedTitle":[0,"Unsaved Changes"],"unsavedDesc":[0,"Changes are temporary and will be lost when the controller is rebooted. Save permanently to keep them."],"usbConnected":[0,"USB Connected"],"btNotSupported":[0,"Bluetooth (Not Supported)"],"usbLostSave":[0,"USB connection lost. Cannot save over Bluetooth. Please reconnect via USB cable."],"extendedInfo":[0,"Extended Info"],"calibHistory":[0,"Calibration History"],"clearAll":[0,"Clear All"],"historySaved":[0,"Saved"],"historyTemporary":[0,"Temporary"],"historyLastSaved":[0,"Last Saved"],"historyRestore":[0,"Restore"],"historyDelete":[0,"Delete"],"historyExport":[0,"Export"],"historyImport":[0,"Import"],"historyImportOk":[0,"Backup imported successfully."],"historyImportFail":[0,"Invalid backup file format."],"blockClone":[0,"Clone detected â calibration blocked"],"blockReboot":[0,"Pending reboot â power-cycle required"],"blockSaveInterrupted":[0,"Save was interrupted â check controller"],"blockBatteryLow":[0,"Battery too low for calibration"],"blockUsbRequired":[0,"USB connection required"],"rebootRequired":[0,"Reboot required â please power-cycle the controller"],"demoComplete":[0,"Demo completed â no actual changes were made to any controller."],"saveNeedsReboot":[0,"Calibration saved. Please power-cycle the controller for changes to take full effect."],"batteryTooLow":[0,"Battery too low to save ({level}% < {min}%)"],"usbRequiredSave":[0,"USB connection required to save"],"errDisconnectCalib":[0,"Disconnected during calibration"],"errCalibNotSaved":[0,"In-progress calibration was not saved"],"errReconnectUsb":[0,"Reconnect the controller via USB"],"errStartOver":[0,"Start calibration from the beginning"],"errDisconnectSave":[0,"Disconnected during save"],"errCalibPartial":[0,"Calibration may be partially written"],"errPowerCycle":[0,"Power-cycle the controller immediately"],"errCheckNvs":[0,"Reconnect and check NVS status"],"errRestoreHistory":[0,"Restore from history if needed"],"errDisconnected":[0,"Disconnected"],"errNewSession":[0,"Start a new calibration session"],"errBlocked":[0,"Blocked"],"errCloneDetected":[0,"Clone controller detected"],"errCloneDisabled":[0,"Calibration is disabled for clone/counterfeit controllers"],"errUseOfficial":[0,"Use an official Sony controller"],"errOldFirmware":[0,"This DualSense controller has outdated firmware (2020/2021)"],"errOldFirmwareDisabled":[0,"Calibration is disabled for controllers with outdated firmware"],"errUpdateFirmware":[0,"Please update the firmware via PS5 system settings and try again"],"errPowerCycleRequired":[0,"Power-cycle required"],"errPowerCycleDesc":[0,"Calibration was saved, but this controller must be power-cycled before continuing"],"errUnplug10s":[0,"Unplug the controller completely for 10 seconds"],"errReconnectUsb2":[0,"Reconnect via USB cable"],"errStartAgain":[0,"Then start calibration again"],"errConnFailed":[0,"Connection failed"],"errRetryConnect":[0,"Try connecting again"],"errCenterFailed":[0,"Center calibration failed"],"errCalibStepFailed":[0,"Calibration step failed"],"errKeepUsb":[0,"Keep the controller connected via USB"],"errRetryCenter":[0,"Retry this center calibration step"],"errQuickFailed":[0,"Quick calibration failed"],"errRetryQuick":[0,"Retry quick center calibration"],"errRangeFailed":[0,"Range calibration failed"],"errRotateRetry":[0,"Rotate both sticks fully and retry"],"errReconnectPersist":[0,"Reconnect the controller if the problem persists"],"errSaveFailed":[0,"Save failed"],"errUnknown":[0,"Unknown error"],"errRetrySave":[0,"Re-click Save to retry"],"errPowerReconnect":[0,"Power-cycle the controller and reconnect"],"errSavedReboot":[0,"Saved successfully â power-cycle required"],"errSavedRebootDesc":[0,"Your calibration is saved, but the controller must be restarted before any further changes"],"errNewSessionNeeded":[0,"Then start a new session if needed"],"errFtLoadFailed":[0,"Finetune load failed"],"errFtBlocked":[0,"Finetune blocked"],"errCannotLockNvs":[0,"Cannot lock NVS"],"errDisconnectReconnect":[0,"Try disconnecting and reconnecting"],"errReconnectController":[0,"Reconnect the controller"],"errRetryFinetune":[0,"Try opening finetune again"],"errPendingNvsWrite":[0,"Controller has a pending NVS write and must be restarted"],"errThenNewSession":[0,"Then start a new session"],"errRestoreRejected":[0,"Restore rejected"],"errDataLenMismatch":[0,"Data has {count} values, expected 12"],"errNotCompatible":[0,"This entry is not compatible with the current controller"],"errDeleteOrTry":[0,"Delete it or try another entry"],"errOutOfRange":[0,"Values out of range for this device (max {max})"],"errDifferentModel":[0,"
23This entry may be from a different controller model"],"confirmRestoreDifferent":[0,"This entry is from a different controller ({serial}). Restore anyway?"],"restoredFromHistory":[0,"Restored from history. Changes are temporary â use \"Save Permanently\" to keep them."],"confirmDeleteEntry":[0,"Delete this calibration entry?"],"confirmDeleteAll":[0,"Delete all calibration history for this controller? This cannot be undone."],"confirmRestoreOverwrite":[0,"Restore this calibration? Current values will be overwritten."],"unsavedPrevSession":[0,"You have unsaved calibration changes from a previous session. Save them to make permanent, or reset."],"centerRecalibDone":[0,"Center re-calibrated. New temporary baseline applied â save permanently to keep."],"ftCenterRecalibFailed":[0,"Finetune center recalibration failed"],"errRetryRecalib":[0,"Retry center recalibration"],"errReconnectNeeded":[0,"Reconnect the controller if needed"],"demoRotateSticks":[0,"Demo: rotate both sticks in full circlesâ¦"],"rotateSticks10s":[0,"Rotate both sticks in full circles for 10 seconds, then click Done."],"rangeRecalibDone":[0,"Range re-calibrated. New temporary baseline applied â save permanently to keep."],"ftRangeRecalibFailed":[0,"Finetune range recalibration failed"],"errRetryRange":[0,"Rotate both sticks fully and retry"],"ftFlashFailed":[0,"Flash failed"],"errUnknownTemp":[0,"Unknown error â changes remain temporary"],"errRetrySavePerm":[0,"Re-click Save Permanently"],"demoFtSaved":[0,"Demo: finetune values saved (no actual controller write)."],"savedNeedsReboot":[0,"Saved permanently. Please power-cycle the controller for changes to take full effect."],"savedPermanently":[0,"Changes saved permanently to controller."],"restoredSessionOriginal":[0,"Restored to session original (before your edits)."],"restoredLastNvs":[0,"Restored to last NVS-saved values (permanent baseline)."],"stuckAxisWarning":[0,"Stick axis stuck at maximum â this may indicate a failed calibration. Consider resetting and re-calibrating."],"ftWarnReleaseCenter":[0,"Release {stick} stick to center before adjusting"],"ftWarnPushEdge":[0,"Push {stick} stick to edge before adjusting"],"ftWriteWarning":[0,"Write failed â values may not have reached the controller. Try again or reconnect."]}]}]}" ssr client="load" opts="{"name":"CalibrationPage","value":true}" await-children><div class="min-h-screen pt-[72px] pb-12 px-4 sm:px-6 flex flex-col box-border animate-in fade-in duration-300"><div class="max-w-7xl mx-auto w-full flex flex-col"><div class="my-4 w-full flex justify-center"><div id="gamepad" style="height:90px;width:100%"></div></div><div data-wizard-card="true" class="w-full min-h-[600px] bg-white dark:bg-stone-900 rounded-[2rem] border border-stone-200 dark:border-stone-800 flex flex-col relative overflow-hidden transition-colors shadow-2xl shadow-stone-200/50 dark:shadow-none"><div class="h-20 px-6 sm:px-8 border-b border-stone-100 dark:border-stone-800 flex items-center justify-between shrink-0 bg-white/80 dark:bg-stone-950/80 backdrop-blur-md z-30"><div class="flex items-center gap-4"><a href="/tools/" class="p-2 -ml-2 text-stone-500 hover:bg-stone-100 dark:hover:bg-stone-800 rounded-xl transition-colors group" aria-label="Back"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-left group-hover:-translate-x-0.5 transition-transform" aria-hidden="true"><path d="m12 19-7-7 7-7"></path><path d="M19 12H5"></path></svg></a><div class="flex flex-col"><h1 class="text-lg font-bold text-stone-900 dark:text-stone-100 flex items-center gap-2"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-crosshair text-blue-500" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><line x1="22" x2="18" y1="12" y2="12"></line><line x1="6" x2="2" y1="12" y2="12"></line><line x1="12" x2="12" y1="6" y2="2"></line><line x1="12" x2="12" y1="22" y2="18"></line></svg><span class="hidden sm:inline">PS Controller Calibration</span></h1></div></div></div>
23<div class="px-6 sm:px-8 py-4 border-b border-stone-100 dark:border-stone-800 bg-stone-50/50 dark:bg-stone-950/30"><div class="flex items-center justify-center gap-2 sm:gap-4 max-w-lg mx-auto"><div class="flex items-center gap-1.5 px-2.5 py-1.5 rounded-lg text-xs font-bold transition-all bg-blue-100 dark:bg-blue-900/30 text-blue-600"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-usb" aria-hidden="true"><circle cx="10" cy="7" r="1"></circle><circle cx="4" cy="20" r="1"></circle><path d="M4.7 19.3 19 5"></path><path d="m21 3-3 1 2 2Z"></path><path d="M9.26 7.68 5 12l2 5"></path><path d="m10 14 5 2 3.5-3.5"></path><path d="m18 12 1-1 1 1-1 1Z"></path></svg><span class="hidden sm:inline">Connect</span></div><div class="hidden sm:block flex-1 h-px bg-stone-200 dark:bg-stone-700"></div><div class="flex items-center gap-1.5 px-2.5 py-1.5 rounded-lg text-xs font-bold transition-all text-stone-400"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-crosshair" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><line x1="22" x2="18" y1="12" y2="12"></line><line x1="6" x2="2" y1="12" y2="12"></line><line x1="12" x2="12" y1="6" y2="2"></line><line x1="12" x2="12" y1="22" y2="18"></line></svg><span class="hidden sm:inline">Center</span></div><div class="hidden sm:block flex-1 h-px bg-stone-200 dark:bg-stone-700"></div><div class="flex items-center gap-1.5 px-2.5 py-1.5 rounded-lg text-xs font-bold transition-all text-stone-400"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle></svg><span class="hidden sm:inline">Range</span></div><div class="hidden sm:block flex-1 h-px bg-stone-200 dark:bg-stone-700"></div><div class="flex items-center gap-1.5 px-2.5 py-1.5 rounded-lg text-xs font-bold transition-all text-stone-400"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-shield" aria-hidden="true"><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"></path></svg><span class="hidden sm:inline">Verify</span></div><div class="hidden sm:block flex-1 h-px bg-stone-200 dark:bg-stone-700"></div><div class="flex items-center gap-1.5 px-2.5 py-1.5 rounded-lg text-xs font-bold transition-all text-stone-400"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-save" aria-hidden="true"><path d="M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z"></path><path d="M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7"></path><path d="M7 3v4a1 1 0 0 0 1 1h7"></path></svg><span class="hidden sm:inline">Save</span></div></div></div><div class="flex-1 flex flex-col lg:flex-row overflow-hidden"><div class="flex-1 relative bg-stone-50/50 dark:bg-stone-950/30 overflow-y-auto custom-scrollbar"><div class="absolute inset-0 pointer-events-none opacity-[0.03] dark:opacity-[0.05]" style="background-image:linear-gradient(rgba(59,130,246,0.5) 1px, transparent 1px), linear-gradient(90deg, rgba(59,130,246,0.5) 1px, transparent 1px);background-size:40px 40px"></div><div class="min-h-full flex flex-col items-center justify-center relative z-10"><div class="flex flex-col items-center justify-center gap-6 p-8 min-h-[400px]"><div class="w-20 h-20 bg-blue-50 dark:bg-blue-900/20 rounded-3xl flex items-center justify-center"><svg xmlns="http://www.w3.org/2000/svg" width="36" height="36" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-usb text-blue-500" aria-hidden="true"><circle cx="10" cy="7" r="1"></circle><circle cx="4" cy="20" r="1"></circle><path d="M4.7 19.3 19 5"></path><path d="m21 3-3 1 2 2Z"></path><path d="M9.26 7.68 5 12l2 5"></path><path d="m10 14 5 2 3.5-3.5"></path><path d="m18 12 1-1 1 1-1 1Z"></path></svg></div><div class="text-center space-y-2 max-w-md"><h2 class="text-2xl font-black text-stone-900 dark:text-stone-100">Connect Your Controller</h2><p class="text-stone-500 dark:text-stone-400 text-sm">Plug in your PlayStation controller using a USB cable. Bluetooth connections are not supported for calibration.</p></div><button class="px-8 py-3 bg-blue-600 hover:bg-blue-700 text-white rounded-xl font-bold text-sm transition-all shadow-lg shadow-blue-500/20 flex items-center gap-2 disabled:opacity-50"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewB
23ox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-usb" aria-hidden="true"><circle cx="10" cy="7" r="1"></circle><circle cx="4" cy="20" r="1"></circle><path d="M4.7 19.3 19 5"></path><path d="m21 3-3 1 2 2Z"></path><path d="M9.26 7.68 5 12l2 5"></path><path d="m10 14 5 2 3.5-3.5"></path><path d="m18 12 1-1 1 1-1 1Z"></path></svg>Connect Controller</button><div class="flex flex-col gap-2 text-xs text-stone-400 mt-4"><div class="flex items-center gap-2"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-triangle-alert" aria-hidden="true"><path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3"></path><path d="M12 9v4"></path><path d="M12 17h.01"></path></svg> <!-- -->USB connection required â Bluetooth is not supported</div><div class="flex items-center gap-2"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-info" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><path d="M12 16v-4"></path><path d="M12 8h.01"></path></svg> <!-- -->Requires Chrome or Edge browser (WebHID API)</div></div><div class="w-full max-w-md mt-4 px-4 py-3 bg-amber-50/60 dark:bg-amber-900/10 border border-amber-200/60 dark:border-amber-800/40 rounded-xl text-[11px] text-amber-700 dark:text-amber-400 space-y-1.5"><div class="flex items-start gap-2"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-shield-alert shrink-0 mt-0.5" aria-hidden="true"><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"></path><path d="M12 8v4"></path><path d="M12 16h.01"></path></svg> <!-- -->Provided without warranty. Use at your own risk.</div><div class="flex items-start gap-2"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-info shrink-0 mt-0.5" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><path d="M12 16v-4"></path><path d="M12 8h.01"></path></svg> <!-- -->This website is not affiliated with Sony or PlayStation.</div><div class="flex items-start gap-2"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-battery shrink-0 mt-0.5" aria-hidden="true"><path d="M 22 14 L 22 10"></path><rect x="2" y="6" width="16" height="12" rx="2"></rect></svg> <!-- -->Ensure the controller battery is well charged. If the battery dies during calibration, the controller may be permanently damaged.</div><div class="flex items-start gap-2"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-save shrink-0 mt-0.5" aria-hidden="true"><path d="M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z"></path><path d="M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7"></path><path d="M7 3v4a1 1 0 0 0 1 1h7"></path></svg> <!-- -->Try the temporary calibration first before saving permanently.</div></div><button class="mt-4 px-5 py-2 bg-stone-100 dark:bg-stone-800 hover:bg-stone-200 dark:hover:bg-stone-700 text-stone-500 dark:text-stone-400 rounded-lg text-xs font-medium transition-all border border-stone-200 dark:border-stone-700">Try Demo Mode (no controller needed)</button></div></div></div></div></div></div></div><!--astro:end--></astro-island> <div class="px-4 sm:px-6 pb-24"> <div class="max-w-7xl mx-auto w-full">
23 <div class="border-t border-stone-100 dark:border-stone-800 pt-16 mt-8"> <!-- Section 1: What is This Tool --> <div class="max-w-7xl mx-auto space-y-32 mb-32"> <div> <div class="flex flex-col items-center text-center mb-16"> <div class="w-12 h-12 bg-stone-100 dark:bg-stone-800 rounded-2xl flex items-center justify-center text-stone-900 dark:text-stone-100 border border-stone-200 dark:border-stone-700 mb-4"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><circle cx="12" cy="12" r="1"></circle><path d="M12 2v4"></path><path d="M12 18v4"></path><path d="M2 12h4"></path><path d="M18 12h4"></path></svg> </div> <h1 class="text-3xl md:text-4xl font-black text-stone-900 dark:text-stone-100 tracking-tight">Free Online PS5 Controller Calibration Tool</h1> <p class="text-lg text-stone-500 dark:text-stone-400 max-w-2xl leading-relaxed mt-4">The only browser-based tool that calibrates DualShock 4 and DualSense analog sticks at the firmware level â using the same factory commands Sony uses during manufacturing. Fix stick drift without opening your controller.</p> </div> <div class="grid grid-cols-1 md:grid-cols-3 gap-6"> <div class="bg-white dark:bg-stone-900 p-8 rounded-[2rem] border border-stone-200/60 dark:border-stone-800"> <div class="w-12 h-12 bg-blue-50 dark:bg-blue-900/20 rounded-2xl flex items-center justify-center text-blue-600 dark:text-blue-400 mb-6"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path><polyline points="7.5 4.21 12 6.81 16.5 4.21"></polyline><polyline points="7.5 19.79 7.5 14.6 3 12"></polyline><polyline points="21 12 16.5 14.6 16.5 19.79"></polyline><polyline points="3.27 6.96 12 12.01 20.73 6.96"></polyline><line x1="12" y1="22.08" x2="12" y2="12"></line></svg> </div> <h3 class="text-xl font-bold text-stone-900 dark:text-stone-100 mb-3">Firmware-Level Fix</h3> <p class="text-stone-500 dark:text-stone-400 leading-relaxed text-sm">Unlike software deadzones that mask the problem, this tool rewrites the center and range calibration data stored in your controller's non-volatile memory â the same data Sony writes during factory assembly.</p> </div> <div class="bg-white dark:bg-stone-900 p-8 rounded-[2rem] border border-stone-200/60 dark:border-stone-800"> <div class="w-12 h-12 bg-emerald-50 dark:bg-emerald-900/20 rounded-2xl flex items-center justify-center text-emerald-600 dark:text-emerald-400 mb-6"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="18" height="18" x="3" y="3" rx="2"></rect><path d="M7 7h10"></path><path d="M7 12h10"></path><path d="M7 17h10"></path></svg> </div> <h3 class="text-xl font-bold text-stone-900 dark:text-stone-100 mb-3">Zero Software Install</h3> <p class="text-stone-500 dark:text-stone-400 leading-relaxed text-sm">Runs entirely in your browser via WebHID API. No drivers, no desktop apps, no admin permissions. Just plug in via USB and click Connect. Works on Chrome and Edge.</p> </div> <div class="bg-white dark:bg-stone-900 p-8 rounded-[2rem] border border-stone-200/60 dark:border-stone-800"> <div class="w-12 h-12 bg-purple-50 dark:bg-purple-900/20 rounded-2xl flex items-center justify-center text-purple-600 dark:text-purple-400 mb-6"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="18" height="11" x="3" y="11" rx="2" ry="2"></rect><path d="M7 11V7a5 5 0 0 1 10 0v4"></path></svg> </div> <h3 class="text-xl font-bold text-stone-900 dark:text-stone-100 mb-3">Zero Network Access</h3> <p class="text-stone-500 dark:text-stone-400 leading-relaxed text-sm">All calibration data is processed locally between your browser and controller. No telemetry, no cloud storage, no data ever leaves your machine. Fully offline-capable.</p> </div> </div> </div> <!-- Section 2: How It Works (5-Step Process) --> <div class="bg-white dark:bg-stone-900 rounded-[3rem] p-8 md:p-16 border border-stone-200/60 dark:border-stone-800"> <div class="text-center mb-12"> <div class="inline-flex items-center gap-2 px-3 py-1 rounded-full bg-blue-50 dark:bg-blue-900/20 text-blue-600 dar
23k:text-blue-400 text-xs font-bold uppercase tracking-wider mb-4"> 5-Step Calibration Process </div> <h2 class="text-3xl font-black text-stone-900 dark:text-stone-100">How It Works</h2> <p class="text-lg text-stone-500 dark:text-stone-400 leading-relaxed mt-4 max-w-2xl mx-auto">Our guided wizard walks you through the complete calibration process with real-time visual feedback at every step.</p> </div> <div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-5 gap-6"> <div class="relative"> <div class="w-8 h-8 rounded-full bg-blue-500 text-white flex items-center justify-center text-sm font-black mb-4">1</div> <h4 class="font-bold text-stone-900 dark:text-stone-100 mb-2">Connect via USB</h4> <p class="text-sm text-stone-500 dark:text-stone-400 leading-relaxed">Plug your DualShock 4 or DualSense into your computer with a USB cable. Bluetooth does not expose the HID Feature Reports required for calibration.</p> </div> <div class="relative"> <div class="w-8 h-8 rounded-full bg-blue-500 text-white flex items-center justify-center text-sm font-black mb-4">2</div> <h4 class="font-bold text-stone-900 dark:text-stone-100 mb-2">Center Calibration</h4> <p class="text-sm text-stone-500 dark:text-stone-400 leading-relaxed">Push both sticks to each corner and release. The tool samples the resting position to establish the true analog center â eliminating neutral drift.</p> </div> <div class="relative"> <div class="w-8 h-8 rounded-full bg-blue-500 text-white flex items-center justify-center text-sm font-black mb-4">3</div> <h4 class="font-bold text-stone-900 dark:text-stone-100 mb-2">Range Calibration</h4> <p class="text-sm text-stone-500 dark:text-stone-400 leading-relaxed">Slowly rotate both sticks in full circles. The tool records the maximum deflection in all directions to map your controller's complete analog range.</p> </div> <div class="relative"> <div class="w-8 h-8 rounded-full bg-blue-500 text-white flex items-center justify-center text-sm font-black mb-4">4</div> <h4 class="font-bold text-stone-900 dark:text-stone-100 mb-2">Verify Results</h4> <p class="text-sm text-stone-500 dark:text-stone-400 leading-relaxed">Calibration is applied temporarily so you can test immediately. Move the sticks around to confirm drift is gone and full range is preserved before committing.</p> </div> <div class="relative"> <div class="w-8 h-8 rounded-full bg-blue-500 text-white flex items-center justify-center text-sm font-black mb-4">5</div> <h4 class="font-bold text-stone-900 dark:text-stone-100 mb-2">Save Permanently</h4> <p class="text-sm text-stone-500 dark:text-stone-400 leading-relaxed">Type SAVE to write calibration data to the controller's NVS (Non-Volatile Storage). This persists across reboots â your controller remembers the fix.</p> </div> </div> </div> <!-- Section 3: Safety & Protection --> <div> <div class="flex flex-col items-center text-center mb-12"> <div class="inline-flex items-center gap-2 px-3 py-1 rounded-full bg-amber-50 dark:bg-amber-900/20 text-amber-600 dark:text-amber-400 text-xs font-bold uppercase tracking-wider mb-4"> <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10"></path></svg> Safety First </div> <h2 class="text-3xl font-black text-stone-900 dark:text-stone-100">Built-In Protection</h2> <p class="text-lg text-stone-500 dark:text-stone-400 leading-relaxed mt-4 max-w-2xl mx-auto">We take firmware modifications seriously. Multiple safety layers protect your controller throughout the process.</p> </div> <div class="grid grid-cols-1 md:grid-cols-2 gap-6"> <div class="bg-white dark:bg-stone-900 p-6 rounded-2xl border border-stone-200/60 dark:border-stone-800 flex gap-4"> <div class="w-10 h-10 bg-amber-50 dark:bg-amber-900/20 rounded-xl flex items-center justify-center text-amber-500 shrink-0"> <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="18" height="12" x="3" y="6" rx="2"></rect><path d="M22 10H2"></path></svg> </div> <div> <h4 class="font-bold text-stone-900 dark:text-stone-100 mb-1">Battery Check</h4> <p class="text-sm text-stone-500 dark:text-stone-400 leading-relaxed">Permanent save is blocked if battery level is below 30% to prevent write corruption from power loss during NVS operations.</p> </div> </div> <div class="bg-white dark:bg-stone-900 p-6 rounded-2xl border border-stone-200/60 dark:border-stone-800 flex gap-4"> <div class="w-10 h-10 bg-amber-50 dark:bg-amber-900/20 rounded-xl flex items-center justify-center text-amber-500 shrink-0"> <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z"></path><circle cx="12" cy="12" r="3"></circle></svg> </div> <div> <h4 class="font-bold text-stone-900 dark:text-stone-100 mb-1">Clone Detection</h4> <p class="text-sm text-stone-500 dark:text-stone-400 leading-relaxed">Third-party clone controllers are detected and blocked automatically. Calibration commands on non-genuine hardware may cause unpredictable behavior.</p> </div> </div> <div class="bg-white dark:bg-stone-900 p-6 rounded-2xl border border-stone-200/60 dark:border-stone-800 flex gap-4"> <div class="w-10 h-10 bg-amber-50 dark:bg-amber-900/20 rounded-xl flex items-center justify-center text-amber-500 shrink-0"> <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10z"></path><path d="m4.93 4.93 14.14 14.14"></path></svg> </div> <div> <h4 class="font-bold text-stone-900 dark:text-stone-100 mb-1">USB Enforcement</h4> <p class="text-sm text-stone-500 dark:text-stone-400 leading-relaxed">Bluetooth connections are rejected â USB provides the stable, low-latency link required for reliable HID Feature Report communication.</p> </div> </div> <div class="bg-white dark:bg-stone-900 p-6 rounded-2xl border border-stone-200/60 dark:border-stone-800 flex gap-4"> <div class="w-10 h-10 bg-amber-50 dark:bg-amber-900/20 rounded-xl flex items-center justify-center text-amber-500 shrink-0"> <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10"></path><path d="m9 12 2 2 4-4"></path></svg> </div> <div> <h4 class="font-bold text-stone-900 dark:text-stone-100 mb-1">Write Confirmation</h4> <p class="text-sm text-stone-500 dark:text-stone-400 leading-relaxed">Permanent save requires typing SAVE as explicit confirmation. Temporary calibration can be tested first and undone by simply restarting the controller.</p> </div> </div> </div> </div> <!-- Section 4: Supported Controllers --> <div class="bg-white dark:bg-stone-900 rounded-[3rem] p-8 md:p-16 border border-stone-200/60 dark:border-stone-800"> <div class="flex flex-col md:flex-row gap-12 items-center"> <div class="flex-1 space-y-6"> <div class="inline-flex items-center gap-2 px-3 py-1 rounded-full bg-blue-50 dark:bg-blue-900/20 text-blue-600 dar
23k:text-blue-400 text-xs font-bold uppercase tracking-wider"> Supported Controllers </div> <h2 class="text-3xl font-black text-stone-900 dark:text-stone-100">Compatible PlayStation Hardware</h2> <p class="text-lg text-stone-500 dark:text-stone-400 leading-relaxed">This tool supports genuine Sony controllers that expose factory calibration HID commands over USB.</p> <ul class="space-y-4"> <li class="flex items-start gap-3"> <svg class="text-blue-500 mt-1 shrink-0" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6 9 17l-5-5"></path></svg> <div> <h4 class="font-bold text-stone-900 dark:text-stone-100">DualShock 4 (CUH-ZCT1 / CUH-ZCT2)</h4> <p class="text-sm text-stone-500 dark:text-stone-400">Both V1 and V2 models. The most common stick drift candidates due to aging ALPS potentiometers.</p> </div> </li> <li class="flex items-start gap-3"> <svg class="text-blue-500 mt-1 shrink-0" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6 9 17l-5-5"></path></svg> <div> <h4 class="font-bold text-stone-900 dark:text-stone-100">DualSense (CFI-ZCT1)</h4> <p class="text-sm text-stone-500 dark:text-stone-400">Standard DualSense with full calibration support. The most frequently requested controller for this tool.</p> </div> </li> <li class="flex items-start gap-3"> <svg class="text-stone-400 mt-1 shrink-0" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6 6 18"></path><path d="m6 6 12 12"></path></svg> <div> <h4 class="font-bold text-stone-900 dark:text-stone-100">Not Supported</h4> <p class="text-sm text-stone-500 dark:text-stone-400">DualSense Edge, DualShock 3, and third-party clones are blocked for safety. Edge requires hardware-level modification.</p> </div> </li> </ul> </div> <div class="w-full md:w-[350px] aspect-square bg-stone-50 dark:bg-stone-950 rounded-[2.5rem] flex items-center justify-center p-8 relative overflow-hidden"> <div class="absolute inset-0 opacity-20 pointer-events-none" style="background-image: radial-gradient(circle at 2px 2px, #a8a29e 1px, transparent 0); background-size: 24px 24px;"></div> <div class="relative z-10 text-center space-y-4"> <svg class="w-24 h-24 text-blue-500 mx-auto opacity-80" stroke-width="1.5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><circle cx="12" cy="12" r="1"></circle><path d="M12 2v4"></path><path d="M12 18v4"></path><path d="M2 12h4"></path><path d="M18 12h4"></path></svg> <p class="text-xs font-mono text-stone-400">USB · WEBHID · CHROME/EDGE</p> </div> </div> </div> </div> <!-- Section 5: FAQ (6 questions for hot tool) --> <div> <div class="flex flex-col items-center text-center mb-16"> <div class="w-12 h-12 bg-stone-100 dark:bg-stone-800 rounded-2xl flex items-center justify-center text-stone-900 dark:text-stone-100 border border-stone-200 dark:border-stone-700 mb-4"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><path d="M12 17h.01"></path></svg> </div> <h2 class="text-3xl md:text-4xl font-black text-stone-900 dark:text-stone-100 tracking-tight">Frequently Asked Questions</h2> <p class="text-lg text-stone-500 dark:text-stone-400 max-w-2xl leading-relaxed mt-4">Common questions about PS controller calibration and stick drift repair</p> </div> <div class="grid grid-cols-1 md:grid-cols-2 gap-6"> <div class="bg-white dark:bg-stone-900 rounded-2xl p-8 border border-stone-200/60 dark:border-stone-800"> <h4 class="font-bold text-lg text-stone-900 dark:text-stone-100 mb-3 flex items-start gap-3">
23 <span class="flex-shrink-0 w-6 h-6 rounded-md bg-stone-100 dark:bg-stone-800 text-stone-500 dark:text-stone-400 flex items-center justify-center text-xs font-black">Q</span> Will this void my warranty? </h4> <p class="text-stone-500 dark:text-stone-400 leading-relaxed pl-9 text-sm">This tool uses the same undocumented HID commands that Sony uses during factory calibration. However, since it modifies NVS data, Sony may consider it an unauthorized modification. If your controller is still under warranty, consider contacting Sony support first.</p> </div> <div class="bg-white dark:bg-stone-900 rounded-2xl p-8 border border-stone-200/60 dark:border-stone-800"> <h4 class="font-bold text-lg text-stone-900 dark:text-stone-100 mb-3 flex items-start gap-3"> <span class="flex-shrink-0 w-6 h-6 rounded-md bg-stone-100 dark:bg-stone-800 text-stone-500 dark:text-stone-400 flex items-center justify-center text-xs font-black">Q</span> Can this brick my controller? </h4> <p class="text-stone-500 dark:text-stone-400 leading-relaxed pl-9 text-sm">The calibration commands are identical to those Sony uses in the factory. The primary risk is interrupting the NVS write process â which is why we enforce battery checks, USB-only connections, and explicit SAVE confirmation. In the worst case, you can recalibrate again.</p> </div> <div class="bg-white dark:bg-stone-900 rounded-2xl p-8 border border-stone-200/60 dark:border-stone-800"> <h4 class="font-bold text-lg text-stone-900 dark:text-stone-100 mb-3 flex items-start gap-3"> <span class="flex-shrink-0 w-6 h-6 rounded-md bg-stone-100 dark:bg-stone-800 text-stone-500 dark:text-stone-400 flex items-center justify-center text-xs font-black">Q</span> Why USB only? Can't I use Bluetooth? </h4> <p class="text-stone-500 dark:text-stone-400 leading-relaxed pl-9 text-sm">Calibration requires HID Feature Reports (0x02, 0x05, 0x09) which are only available over USB. Bluetooth HID does not expose these low-level commands. Additionally, USB provides a more stable connection for firmware-level operations.</p> </div> <div class="bg-white dark:bg-stone-900 rounded-2xl p-8 border border-stone-200/60 dark:border-stone-800"> <h4 class="font-bold text-lg text-stone-900 dark:text-stone-100 mb-3 flex items-start gap-3"> <span class="flex-shrink-0 w-6 h-6 rounded-md bg-stone-100 dark:bg-stone-800 text-stone-500 dark:text-stone-400 flex items-center justify-center text-xs font-black">Q</span> How is this different from adjusting deadzones? </h4> <p class="text-stone-500 dark:text-stone-400 leading-relaxed pl-9 text-sm">In-game deadzone settings add a software buffer that masks drift but reduces your effective analog range. This tool actually rewrites the center and range values in the controller's firmware â fixing the root cause rather than hiding the symptom.</p> </div> <div class="bg-white dark:bg-stone-900 rounded-2xl p-8 border border-stone-200/60 dark:border-stone-800"> <h4 class="font-bold text-lg text-stone-900 dark:text-stone-100 mb-3 flex items-start gap-3"> <span class="flex-shrink-0 w-6 h-6 rounded-md bg-stone-100 dark:bg-stone-800 text-stone-500 dark:text-stone-400 flex items-center justify-center text-xs font-black">Q</span> What if calibration makes things worse? </h4> <p class="text-stone-500 dark:text-stone-400 leading-relaxed pl-9 text-sm">If you save permanently and results are bad, simply run the calibration again. If you haven't saved yet, just restart your controller â temporary calibration is discarded automatically. The tool also offers backup export before any permanent write.</p> </div> <div class="bg-white dark:bg-stone-900 rounded-2xl p-8 border border-stone-200/60 dark:border-stone-800"> <h4 class="font-bold text-lg text-stone-900 dark:text-stone-100 mb-3 flex items-start gap-3"> <span class="flex-shrink-0 w-6 h-6 rounded-md bg-stone-100 dark:bg-stone-800 text-stone-500 dark:text-stone-400 flex items-center justify-center text-xs font-black">Q</span> Does this work on PS5 / PS4 console? </h4> <p class="text-stone-500 dark:text-stone-400 leading-relaxed pl-9 text-sm">This is a browser-based tool that requires a computer with Chrome or Edge. You connect your PS controller to your PC via USB for calibration, then use it normally on your console afterward. The calibration persists in the controller's firmware.</p> </div> </div> </div> </div> <!-- Bottom CTA --> <div class="max-w-4xl mx-auto"> <div class="bg-white dark:bg-stone-900 rounded-[2.5rem] border border-stone-200/60 dark:border-stone-800 p-8 md:p-12 text-center"> <div class="inline-flex items-center gap-2 px-4 py-1.5 rounded-full bg-blue-50 dark:bg-blue-900/20 text-blue-600 dar
23k:text-blue-400 text-xs font-bold uppercase tracking-wider mb-6"> <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10z"></path><path d="m9 12 2 2 4-4"></path></svg> Fix Drift Today </div> <h3 class="text-2xl font-bold text-stone-900 dark:text-stone-100 mb-4">Stop Masking Drift â Fix It at the Source</h3> <p class="text-stone-500 dark:text-stone-400 leading-relaxed max-w-2xl mx-auto"> Software deadzones are band-aids. This tool writes directly to your controller's firmware calibration data â the same way Sony calibrates brand-new controllers at the factory. Plug in via USB and fix your stick drift in under 2 minutes. </p> </div> </div> </div> </div> </div> </main> <footer class="bg-white dark:bg-stone-950 border-t border-stone-100 dark:border-stone-900 pt-16 pb-8 transition-colors duration-300"><div class="px-6"><div class="max-w-7xl mx-auto"><div class="grid grid-cols-1 md:grid-cols-4 gap-12 mb-16"><div class="col-span-1 md:col-span-1"><a href="/" class="flex items-center gap-2 mb-4 cursor-pointer group"><div class="w-8 h-8 bg-stone-900 dark:bg-stone-100 rounded-lg flex items-center justify-center text-white dark:text-stone-900 shadow-sm transition-colors overflow-hidden"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="w-4 h-4"><rect x="2" y="6" width="20" height="12" rx="2"></rect><path d="M6 12h4m-2-2v4"></path><line x1="15" y1="11" x2="15" y2="11"></line><line x1="18" y1="13" x2="18" y2="13"></line></svg></div><span class="text-lg font-bold text-stone-900 dark:text-stone-100 transition-colors">ControllerTest.io</span></a><p class="text-stone-500 dark:text-stone-400 text-sm leading-relaxed transition-colors">ControllerTest.io is a free online gamepad tester and controller tester platform. Test Xbox, PlayStation, Switch and all major gamepads. No downloads required.</p></div><div><h4 class="font-bold text-stone-900 dark:text-stone-100 mb-4 transition-colors">Tests</h4><ul class="space-y-3 text-sm text-stone-500 dark:text-stone-400"><li><a href="/xbox-controller-test/" class="hover:text-stone-900 dark:hover:text-stone-200 text-left transition-colors block" title="Xbox Controller Test" aria-label="Xbox Controller Test">Xbox Controller Test</a></li><li><a href="/ps5-controller-test/" class="hover:text-stone-900 dark:hover:text-stone-200 text-left transition-colors block" title="PS5 DualSense Test" aria-label="PS5 DualSense Test">PS5 DualSense Test</a></li><li><a href="/switch-joycon-test/" class="hover:text-stone-900 dark:hover:text-stone-200 text-left transition-colors block" title="Switch Joy-Con Test" aria-label="Switch Joy-Con Test">Switch Joy-Con Test</a></li><li><a href="/stick-drift-test/" class="hover:text-stone-900 dark:hover:text-stone-200 text-left transition-colors block" title="Stick Drift Detection" aria-label="Stick Drift Detection">Stick Drift Detection</a></li><li><a href="/polling-rate-test/" class="hover:text-stone-900 dark:hover:text-stone-200 text-left transition-colors block" title="Polling Rate Test" aria-label="Polling Rate Test">Polling Rate Test</a></li></ul></div><div><h4 class="font-bold text-stone-900 dark:text-stone-100 mb-4 transition-colors">Utilities</h4><ul class="space-y-3 text-sm text-stone-500 dark:text-stone-400"><li><a href="/tools/" class="hover:text-stone-900 dark:hover:text-stone-200 text-left transition-colors block" title="All Tools" aria-label="All Tools">All Tools</a></li><li><a href="/circularity-test/" class="hover:text-stone-900 dark:hover:text-stone-200 text-left transition-colors block" title="Circularity Error Test" aria-label="Circularity Error Test">Circularity Error Test</a></li><li><a href="/vibration-test/" class="hover:text-stone-900 dark:hover:text-stone-200 text-left transition-colors block" title="Vibration Motor Test" aria-label="Vibration Motor Test">Vibration Motor Test</a></li><li><a href="/gamepad-mapping-test/" class="hover:text-stone-900 dark:hover:text-stone-200 text-left transition-colors block" title="Button Mapping Test" aria-label="Button Mapping Test">Button Mapping Test</a></li><li><a href="/widgets/" class="hover:text-stone-900 dark:hover:text-stone-200 text-left transition-colors block" title="Widgets & Embeds" aria-label="Widgets & Embeds">Widgets & Embeds</a></li></ul></div><div><h4 class="font-bold text-stone-900 dark:text-stone-100 mb-4 transition-colors">About & Support</h4><ul class="space-y-3 text-sm text-stone-500 dark:text-stone-400"><li><a href="/about/" class="hover:text-stone-900 dark:hover:text-stone-200 text-left transition-colors block">About</a></li><li><a href="/contact/" class="hover:text-stone-900 dark:hover:text-stone-200 text-left transition-colors block">Feedback</a></li><li><a href="/support/" class="hover:text-stone-900 dark:hover:text-stone-200 text-left transition-colors block">Support</a></li><li><a href="/privacy/" class="hover:text-stone-900 dark:hover:text-stone-200 text-left transition-colors block">Privacy Policy</a></li><li><a href="/terms/" class="hover:text-stone-900 dark:hover:text-stone-200 text-left transition-colors block">Terms of Service</a></li></ul></div></div>
23<div class="pt-8 border-t border-stone-100 dark:border-stone-900 flex flex-col md:flex-row items-center justify-between gap-4 transition-colors"><div class="flex flex-col items-center md:items-start gap-1 text-sm text-stone-400 dark:text-stone-600 transition-colors"><p>© 2026 ControllerTest.io. All rights reserved.</p><p class="text-xs opacity-80">Designed for gamers, by gamers.</p></div></div></div></div></footer>
23<script>(()=>{var l=(n,t)=>{let i=async()=>{await(await n())()},e=typeof t.value=="object"?t.value:void 0,s={timeout:e==null?void 0:e.timeout};"requestIdleCallback"in window?window.requestIdleCallback(i,s):setTimeout(i,s.timeout||200)};(self.Astro||(self.Astro={})).idle=l;window.dispatchEvent(new Event("astro:idle"));})();</script>
23<astro-island uid="Z1mF1Vn" prefix="r11" component-url="/_astro/FloatingTools.BFsJe0JE.js" component-export="default" renderer-url="/_astro/client.dXHaCmHv.js" props="{"locale":[0,"en"]}" ssr client="idle" opts="{"name":"FloatingTools","value":true}" await-children><div class="fixed bottom-12 right-8 z-40 flex flex-col gap-4 items-end pointer-events-none"><div class=" 24 transition-all duration-500 cubic-bezier(0.16, 1, 0.3, 1) transform origin-bottom-right mr-1 25 opacity-0 translate-y-4 scale-95 26 "></div><div class=" 27 pointer-events-auto relative 28 bg-white/80 dark:bg-stone-900/80 backdrop-blur-xl border border-white/60 dark:border-stone-800 shadow-[0_8px_30px_rgb(0,0,0,0.06)] dark:shadow-black/20 29 rounded-full flex items-center overflow-hidden 30 transition-all duration-500 cubic-bezier(0.23, 1, 0.32, 1) 31 w-12 h-12 p-0 justify-center hover:scale-105 cursor-pointer hover:bg-white dark:hover:bg-stone-800 32 "><div class=" 33 absolute inset-0 flex items-center justify-center text-stone-600 dar
33k:text-stone-300 transition-opacity duration-300 34 opacity-100 delay-200 35 "><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-plus opacity-80" aria-hidden="true"><path d="M5 12h14"></path><path d="M12 5v14"></path></svg></div><div class=" 36 flex items-center justify-between w-full transition-opacity duration-300 37 opacity-0 pointer-events-none 38 "><button class="group relative p-3 rounded-full hover:bg-stone-100 dark:hover:bg-stone-800 transition-colors duration-300 text-stone-400 dark:text-stone-500 hover:text-red-500 dark:hover:text-red-400" aria-label="Bookmark Page"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-heart" aria-hidden="true"><path d="M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5"></path></svg></button><div class="w-px h-4 bg-stone-200/50 dark:bg-stone-700/50"></div><button class="group relative p-3 rounded-full hover:bg-stone-100 dark:hover:bg-stone-800 transition-colors duration-300 text-stone-400 dark:text-stone-500 hover:text-blue-500 dark:hover:text-blue-400" aria-label="Share Link"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-share2 lucide-share-2" aria-hidden="true"><circle cx="18" cy="5" r="3"></circle><circle cx="6" cy="12" r="3"></circle><circle cx="18" cy="19" r="3"></circle><line x1="8.59" x2="15.42" y1="13.51" y2="17.49"></line><line x1="15.41" x2="8.59" y1="6.51" y2="10.49"></line></svg></button><div class="w-px h-4 bg-stone-200/50 dark:bg-stone-700/50"></div><a href="/contact/" class="group relative p-3 rounded-full hover:bg-stone-100 dark:hover:bg-stone-800 transition-colors duration-300 text-stone-400 dark:text-stone-500 hover:text-amber-500 dark:hover:text-amber-400" aria-label="Send Feedback"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-square" aria-hidden="true"><path d="M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z"></path></svg></a></div></div></div><!--astro:end--></astro-island>
38<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"67132de9d22149bb80cfb4add9b55e7d","r":1,"spa":2}' crossorigin="anonymous"></script>
38 39</body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.