CSS cursor gallery
Every CSS cursor, live under your pointer
Hover over a tile to see the cursor your own browser and system draw for that keyword. Copy the CSS with one click, and read the notes where support differs.
Showing all 36 cursors.
This looks like a touch screen, which has no cursor to show. Connect a mouse or trackpad, or open the page on a computer, to see them.
General 3
autoLets the browser decide: an I-beam over text, an arrow elsewhere.
Also works on iPad with a mouse or trackpad.
defaultThe platform's normal cursor, usually an arrow.
noneHides the cursor completely while it is over the element.
Use with care: people lose track of where they are pointing.
Links & status 5
A context menu is available here.
Chrome and Firefox show it only on macOS and Linux; on Windows you see the normal arrow.
helpHelp is available, often an arrow with a question mark.
pointerA link or something clickable, usually a pointing hand.
progressBusy in the background, but you can keep working.
waitBusy: wait before doing anything else here.
Selection 4
cellA table cell or a range of cells can be selected.
Also works on iPad with a mouse or trackpad.
crosshairPrecise selection, as in image editors and pickers.
textText that can be selected, usually an I-beam.
Also works on iPad with a mouse or trackpad.
vertical-textVertical text that can be selected: a sideways I-beam.
Drag & drop 7
aliasDropping here creates a shortcut or alias.
copyDropping here makes a copy.
moveThe thing being dragged will be moved.
no-dropThe dragged item cannot be dropped here.
not-allowedThe action will not be carried out, as on a disabled button.
grabSomething that can be grabbed and dragged, an open hand.
Unprefixed since Chrome 68, Firefox 27 and Safari 11; older versions needed -webkit- or -moz-.
grabbingSomething is being dragged right now, a closed hand.
Unprefixed since Chrome 68, Firefox 27 and Safari 11.
Resize & scroll 15
all-scrollCan be scrolled or panned in any direction.
col-resizeA column can be resized sideways.
row-resizeA row can be resized up and down.
n-resizeThe top edge can be moved.
e-resizeThe right edge can be moved.
s-resizeThe bottom edge can be moved.
w-resizeThe left edge can be moved.
ne-resizeThe top-right corner can be moved.
nw-resizeThe top-left corner can be moved.
se-resizeThe bottom-right corner can be moved.
sw-resizeThe bottom-left corner can be moved.
ew-resizeResizes left and right: a two-headed horizontal arrow.
ns-resizeResizes up and down: a two-headed vertical arrow.
nesw-resizeResizes diagonally, top-right to bottom-left.
nwse-resizeResizes diagonally, top-left to bottom-right.
Zoom 2
zoom-inSomething can be enlarged, a magnifier with a plus.
Unprefixed since Chrome 37, Firefox 24 and Safari 9.
zoom-outSomething can be made smaller, a magnifier with a minus.
Unprefixed since Chrome 37, Firefox 24 and Safari 9.
No cursor matches that search. Try “resize”, “hand” or “busy”.
Test any cursor value
Why the same keyword looks different
CSS only names the cursor; the operating system and browser draw it. The pointing hand, the busy indicator and the resize arrows all look different on Windows, macOS and Linux, and each person's cursor size, colour and accessibility settings change them again, so check your design on the systems your visitors use.
A few values have real gaps. Chrome and Firefox show context-menu only on macOS and Linux. On an iPad with a mouse or trackpad, Safari draws only auto, text, cell and image cursors, and shows the plain pointer for the rest. Old prefixes such as -webkit-grab are no longer needed.
Choosing the right one
Use pointer for things that act when clicked, not-allowed on disabled controls, grab and grabbing for draggable items, and the two-headed -resize values for splitters and handles. Keep none for full-screen games and video, where you draw your own pointer.
Support facts come from MDN's cursor reference and its browser compatibility data.
Questions
Is there a cursor called hand?
Not any more. hand was an old Internet Explorer value; the standard keyword for a pointing hand is pointer.
What is the difference between auto and default?
auto lets the browser choose by context, so text gets an I-beam. default always shows the normal arrow, even over text.
Why do I need a keyword after url()?
The CSS rule is invalid without one, and it is what the browser shows if your image fails to load.