Screen & Display · Browser Tests

Touch Support Test

Check your maximum touch points, supported pointer types and whether hover is available.

Checking touch and pointer support…
—
Max touch points
—
Primary pointer
—
Hover
Reading input hardware…
Comparing touch points, pointer type and hover.

Touch signals

Pointer and hover media queries

Pointer Events supported

Live pad — press and hold

Touch or click here to count simultaneous pointers

Touch points, pointer types and event support are read live from your browser, with no permission prompt and nothing uploaded. The pad only counts how many pointers are down on it; it records no position and keeps no history.

On this page
  1. Touch points and what they count
  2. Coarse, fine and hover
  3. Why hybrid laptops contradict themselves
  4. Pointer Events versus touch events
  5. What touch signals reveal

Touch points and what they actually count

The number at the top of the panel is navigator.maxTouchPoints, and it answers a narrower question than it appears to. It is not a count of fingers you have used, nor a count of devices. It is the maximum number of simultaneous contact points the browser believes the hardware can report, and it is a static figure set when the browser starts.

Typical values are telling. A modern phone or tablet reports 5 or 10, because that is how many fingers the digitiser tracks. A touchscreen laptop usually reports 10. A device with a stylus may report a higher number to cover the pen and fingers together. Zero means the browser sees no touch digitiser at all.

Your second data point

Older code often checks 'ontouchstart' in window instead. It is a cruder test — the property is defined as a stub in some desktop browsers — which is why it sits next to the point count above rather than replacing it.

Coarse, fine and the hover media queries

CSS gives pages four related queries. pointer describes the primary pointing device and answers fine, coarse or none; a trackpad or mouse is fine, a finger is coarse. any-pointer asks the same question of every attached device, so it can report coarse and fine at the same time. hover and any-hover do the same for hovering: a mouse can hover, a finger cannot.

The distinction between the plain and the any- form is the whole point of the feature. A site that wants to know whether to rely on hover should ask hover, because that describes the input the user is actually holding. A site that wants to know whether a touch target should be enlarged should ask any-pointer: coarse, because the user may reach for the screen at any moment.

Why hybrid laptops contradict themselves

A Windows laptop with a touchscreen and a trackpad is the case that confuses naive detection. The operating system calls the trackpad primary, so pointer: fine and hover: hover both report true. It also has a digitiser attached, so any-pointer: coarse reports true, and maxTouchPoints reads 10.

Nothing in that set is wrong, but the shape of it — fine primary, coarse available, ten touch points — describes a convertible or a touchscreen laptop rather than a desktop or a phone. A detector that computes a fingerprint from input capabilities sees a configuration shared by a much smaller group than either extreme. The panel above flags this as a hybrid rather than a contradiction, because that is what it is; the contradiction case is a device reporting a coarse pointer while claiming zero touch points, which the panel treats as a genuine conflict.

Consistency is the signal

The same logic runs through the operating system test and the browser information test: a set of values that agree is unremarkable, and a set that does not is worth a second look.

Pointer Events versus the old touch events

Before Pointer Events, touch was handled by a separate event family: touchstart, touchmove, touchend, each carrying a list of every contact point currently on the screen. Handling mouse and touch then meant writing two code paths that behaved differently for reasons no one wanted to remember.

Pointer Events collapsed that into one stream. Each event carries a pointerId that stays stable for the life of the contact and a pointerType of mouse, pen or touch, so multi-touch becomes a matter of tracking ids in a set — which is exactly what the live pad above does. Every current browser implements the full set, and the one addition is pointerrawupdate, which reports motion at input-device frequency and is Chromium-only. Seeing it listed as unsupported tells you the browser is not Chromium.

What touch signals reveal about you

A phone reporting ten touch points is a phone, and no one is surprised by that. The informative cases are the edges: a machine with no touch that still claims touch events, a desktop reporting a coarse pointer, or a browser whose touch values disagree with its user agent. Those combinations are rare and therefore memorable.

Taken together with the screen signals, input capabilities round out a description of the device rather than the person. The device pixel ratio test and the device and hardware test cover the rest of the machine, and the browser fingerprint test shows what all of it adds up to.

Frequently Asked Questions

How do I know if my screen is touch-enabled?
Look at maxTouchPoints in the panel. Any value above zero means the browser believes the display accepts touch, and the number itself is how many fingers it can track at once. Values of 1, 5 and 10 are common. Zero means no touch input, and the live pad above will only respond to a mouse.
Why does my laptop show both a coarse and a fine pointer?
Because it genuinely has both. A touchscreen laptop reports pointer: fine for its trackpad as the primary input, and any-pointer: coarse for the touchscreen that is also attached. The any- queries exist exactly for this case: they ask whether any input device of that type is available, not which one is in charge.
What does the hover query mean?
hover: hover means the primary input can hover without committing to a click, which is true of a mouse and false of a finger. Sites use it to decide whether to show information on hover or require a tap. A touchscreen laptop wired to a mouse usually reports hover: hover, because the mouse is what the operating system calls primary.
What is the difference between touch events and Pointer Events?
Touch events were built for fingertips and send a list of every contact point on each event. Pointer Events unify mouse, pen and touch into one stream, each with a pointerId and a pointerType, and are now the recommended API. Every current browser supports Pointer Events; touch events remain for older code and for the ontouchstart check sites still use to guess at touch support.
Can a site tell that I am on a phone from these signals?
Touch points and a coarse pointer are strong hints, and they agree with the mobile flag in your user agent. Where it gets useful for fingerprinting is the unusual cases: a laptop reporting ten touch points, or a phone claiming a mouse. The browser fingerprint test shows how these combine with the rest of your signals.