{
  "_attribution": "Data from https://mygearcheck.com/ (CC BY 4.0). Please link back when you use it.",
  "dataset": "tests",
  "license": "CC BY 4.0",
  "documentation": "https://mygearcheck.com/api",
  "count": 11,
  "tests": [
    {
      "slug": "keyboard-test",
      "name": "Keyboard Test",
      "url": "https://mygearcheck.com/keyboard-test",
      "embedUrl": "https://mygearcheck.com/embed/keyboard-test",
      "category": "Input devices",
      "categoryUrl": "https://mygearcheck.com/category/input-devices",
      "summary": "Light up pressed keys on a virtual keyboard and find dead or stuck keys.",
      "description": "Press keys and watch them light up on a live on-screen keyboard. Spot dead keys, stuck keys and ghosting in seconds.",
      "method": "This test listens for the standard keydown and keyup events on the document and marks the matching key on the on-screen layout. The key is identified by event.code, which describes the physical key position and does not change with your keyboard layout, so the highlight is correct on QWERTY, QWERTZ, AZERTY and Dvorak alike. Nothing is intercepted or forwarded: the events are read, drawn and discarded, and nothing you type is sent anywhere. What it cannot see are keys the operating system claims first, which on most systems includes PrintScreen and nearly every Fn combination.",
      "lastUpdated": "2026-08-05",
      "guides": [
        {
          "title": "Keyboard key not working: how to tell hardware from software",
          "url": "https://mygearcheck.com/guides/keyboard-key-not-working"
        },
        {
          "title": "N-key rollover and ghosting explained, with a test you can run now",
          "url": "https://mygearcheck.com/guides/n-key-rollover-and-ghosting"
        },
        {
          "title": "How to check a second-hand laptop before you buy it",
          "url": "https://mygearcheck.com/guides/check-second-hand-laptop"
        }
      ]
    },
    {
      "slug": "key-code",
      "name": "Key Code Viewer",
      "url": "https://mygearcheck.com/key-code",
      "embedUrl": "https://mygearcheck.com/embed/key-code",
      "category": "Input devices",
      "categoryUrl": "https://mygearcheck.com/category/input-devices",
      "summary": "Read event.key, code, keyCode and which for any key you press.",
      "description": "See event.key, event.code, keyCode and which for the last key you pressed. Built for developers wiring up keyboard shortcuts.",
      "method": "This test attaches a keydown listener to the document and reads four properties straight off the event: event.key, event.code, the deprecated event.keyCode and the equally deprecated event.which, plus the four modifier booleans. Nothing is normalised, mapped or corrected on the way, so what you see is exactly what your browser reports on your operating system with your layout. That is the point: a specification tells you what should happen, and this tells you what does.",
      "lastUpdated": "2026-08-05",
      "guides": [
        {
          "title": "event.key vs event.code vs keyCode: which one should you use",
          "url": "https://mygearcheck.com/guides/event-key-vs-event-code"
        }
      ]
    },
    {
      "slug": "mouse-test",
      "name": "Mouse Test",
      "url": "https://mygearcheck.com/mouse-test",
      "embedUrl": "https://mygearcheck.com/embed/mouse-test",
      "category": "Input devices",
      "categoryUrl": "https://mygearcheck.com/category/input-devices",
      "summary": "Check left, right, middle clicks, scroll and double-click behaviour.",
      "description": "Test left, right and middle clicks, scroll direction and double-click timing with live button-state indicators.",
      "method": "This test listens for mousedown, mouseup, contextmenu and wheel events on a target area and counts them, timing the gap between consecutive clicks with the event timestamps the browser supplies. The double-click detection is our own, based on that gap, rather than the browser's own dblclick event, because a chattering switch produces two clicks a few milliseconds apart and we want to see them as two. What no browser can do is measure your polling rate: pointer events are coalesced and delivered per frame, which the table further down sets out.",
      "lastUpdated": "2026-08-05",
      "guides": [
        {
          "title": "Mouse double-click chatter: what causes it and how to fix it",
          "url": "https://mygearcheck.com/guides/mouse-double-click-chatter"
        }
      ]
    },
    {
      "slug": "touchpad-test",
      "name": "Touchpad Test",
      "url": "https://mygearcheck.com/touchpad-test",
      "embedUrl": "https://mygearcheck.com/embed/touchpad-test",
      "category": "Input devices",
      "categoryUrl": "https://mygearcheck.com/category/input-devices",
      "summary": "Track pointer movement, clicks, two-finger scroll and pinch gestures live.",
      "description": "Track cursor movement, clicks, two-finger scroll and pinch gestures live to confirm your trackpad is working.",
      "method": "This test reads Pointer Events, which is the modern unified model covering mouse, pen and touch, together with wheel events for two-finger scrolling and navigator.maxTouchPoints for the reported touch capability. Pinch is detected from the wheel event with the control key flag that browsers use to signal a pinch gesture on a trackpad, and on Safari from its gesture events. Everything shown is what the browser was handed by the driver, which is why a trackpad usually identifies itself as a mouse.",
      "lastUpdated": "2026-08-05",
      "guides": [
        {
          "title": "Laptop touchpad not working: eight checks before you call support",
          "url": "https://mygearcheck.com/guides/laptop-touchpad-not-working"
        }
      ]
    },
    {
      "slug": "mic-test",
      "name": "Microphone Test",
      "url": "https://mygearcheck.com/mic-test",
      "embedUrl": "https://mygearcheck.com/embed/mic-test",
      "category": "Audio & video",
      "categoryUrl": "https://mygearcheck.com/category/audio-video",
      "summary": "See a live input meter and waveform to confirm your mic is picking up sound.",
      "description": "Test your microphone in the browser with a live input-level meter and waveform. Pick a device and see instantly if it works.",
      "method": "This test asks for a microphone stream with navigator.mediaDevices.getUserMedia, runs it through a Web Audio AnalyserNode, and draws the level and waveform on every animation frame. The audio never leaves that chain: it is not recorded, buffered or uploaded, and there is no server to upload it to. Device names come from navigator.mediaDevices.enumerateDevices, which the browser only fills in after you grant permission. You can verify all of this yourself: open your browser's Network tab and run a full test, and there are no requests.",
      "lastUpdated": "2026-08-05",
      "guides": [
        {
          "title": "Microphone not working in Windows 11: a step-by-step check",
          "url": "https://mygearcheck.com/guides/microphone-not-working-windows-11"
        }
      ]
    },
    {
      "slug": "webcam-test",
      "name": "Webcam Test",
      "url": "https://mygearcheck.com/webcam-test",
      "embedUrl": "https://mygearcheck.com/embed/webcam-test",
      "category": "Audio & video",
      "categoryUrl": "https://mygearcheck.com/category/audio-video",
      "summary": "See a live camera preview with resolution and device details.",
      "description": "Preview your webcam live in the browser, see its resolution and pick between cameras. No recording, no uploads.",
      "method": "This test asks for a camera stream with navigator.mediaDevices.getUserMedia and attaches it to a video element, then reads the actual track settings to report the resolution and frame rate you are really receiving, which is often lower than a camera's advertised maximum. Stopping the test stops every track on the stream, which releases the device and turns the indicator light off. Nothing is captured or uploaded, and as with the microphone you can confirm that in the Network tab.",
      "lastUpdated": "2026-08-05",
      "guides": [
        {
          "title": "Webcam shows a black screen: browser, driver and privacy-shutter checks",
          "url": "https://mygearcheck.com/guides/webcam-black-screen"
        }
      ]
    },
    {
      "slug": "speaker-test",
      "name": "Speaker Test",
      "url": "https://mygearcheck.com/speaker-test",
      "embedUrl": "https://mygearcheck.com/embed/speaker-test",
      "category": "Audio & video",
      "categoryUrl": "https://mygearcheck.com/category/audio-video",
      "summary": "Play a test tone through left, right or both speakers and check the output device.",
      "description": "Play a tone through your left, right or both speakers and switch output devices to confirm your audio actually works.",
      "method": "This test creates a Web Audio OscillatorNode at the chosen frequency and routes it through a StereoPannerNode to the left channel, the right channel or both. The tone is generated in your browser rather than downloaded, so there is no audio file and no request. Browsers start an AudioContext suspended until a user gesture, which is why the first tone needs a click. Where the channel physically ends up is the operating system's decision, not ours.",
      "lastUpdated": "2026-08-05",
      "guides": [
        {
          "title": "Only one speaker works: how to diagnose left, right and balance problems",
          "url": "https://mygearcheck.com/guides/only-one-speaker-works"
        }
      ]
    },
    {
      "slug": "dead-pixel-test",
      "name": "Dead Pixel Test",
      "url": "https://mygearcheck.com/dead-pixel-test",
      "embedUrl": "https://mygearcheck.com/embed/dead-pixel-test",
      "category": "Display",
      "categoryUrl": "https://mygearcheck.com/category/display",
      "summary": "Cycle full-screen solid colours to spot dead or stuck pixels.",
      "description": "Cycle full-screen solid colours to reveal dead or stuck pixels on any monitor, laptop or phone screen.",
      "method": "This test fills the screen with a solid colour using the Fullscreen API and a plain background colour, with no canvas, no image and no filter in between, so the colour the page requests is the colour sent to the panel. That matters: anything that processes the image could mask exactly what you are looking for. It detects nothing by itself and cannot: the judgement is yours, made with your own eyes. Note that an operating-system night light, a colour profile or HDR tone mapping still sits between the page and the panel, so switch those off before judging a display.",
      "lastUpdated": "2026-08-05",
      "guides": [
        {
          "title": "Dead pixel warranty: what is actually covered",
          "url": "https://mygearcheck.com/guides/dead-pixel-warranty"
        }
      ]
    },
    {
      "slug": "monitor-test",
      "name": "Monitor Test",
      "url": "https://mygearcheck.com/monitor-test",
      "embedUrl": "https://mygearcheck.com/embed/monitor-test",
      "category": "Display",
      "categoryUrl": "https://mygearcheck.com/category/display",
      "summary": "Run gradient, grid and colour-bar patterns to check your display.",
      "description": "Full-screen test patterns for checking uniformity, banding, sharpness and colour on any display.",
      "method": "This test draws each pattern with CSS gradients and repeating gradients rather than images or canvas, which keeps them exact at any resolution and costs almost nothing to render. The Fullscreen API removes every piece of browser and page chrome, because a toolbar in view makes one corner of the screen untestable. As with the dead pixel test, nothing is measured here: each pattern is a visual aid designed to make one specific class of defect visible.",
      "lastUpdated": "2026-08-05",
      "guides": [
        {
          "title": "How to check a used monitor before you buy it",
          "url": "https://mygearcheck.com/guides/check-used-monitor"
        }
      ]
    },
    {
      "slug": "gamepad-test",
      "name": "Gamepad Test",
      "url": "https://mygearcheck.com/gamepad-test",
      "embedUrl": "https://mygearcheck.com/embed/gamepad-test",
      "category": "Input devices",
      "categoryUrl": "https://mygearcheck.com/category/input-devices",
      "summary": "See live button presses and analog stick values for any controller.",
      "description": "Test any connected controller in the browser. See live button presses, trigger values and analog stick positions.",
      "method": "This test reads the standard Gamepad API through navigator.getGamepads() and polls it on every animation frame, because the API has no events for button and axis changes. Button and axis values come straight from the browser, unmodified and with no deadzone applied, which is why a stick with drift shows a non-zero resting value here even when games hide it. Browsers deliberately withhold connected gamepads from a page until you press a button, so nothing appears until you do. The polling loop stops when the tab is hidden.",
      "lastUpdated": "2026-08-05",
      "guides": [
        {
          "title": "Controller stick drift: how to test for it and what to do next",
          "url": "https://mygearcheck.com/guides/controller-stick-drift"
        }
      ]
    },
    {
      "slug": "screen-info",
      "name": "Screen Info",
      "url": "https://mygearcheck.com/screen-info",
      "embedUrl": "https://mygearcheck.com/embed/screen-info",
      "category": "System",
      "categoryUrl": "https://mygearcheck.com/category/system",
      "summary": "Read your resolution, viewport, pixel ratio, colour depth and refresh rate.",
      "description": "See your screen resolution, viewport size, device pixel ratio, colour depth and estimated refresh rate instantly.",
      "method": "This test reads window.screen for resolution, available area, colour depth and orientation, window.devicePixelRatio for the scaling factor, and the viewport dimensions for the space a page actually gets. The refresh rate is estimated by counting animation frames over a short interval and is labelled as an estimate throughout, because browsers cap frame delivery on battery, in background tabs and under load. Everything here is read once on load and on resize; nothing is stored or sent.",
      "lastUpdated": "2026-08-05",
      "guides": []
    }
  ]
}