Generator Tools
CSS Cursor Generator
Build a custom CSS cursor from an image or built-in shape with a hotspot and fallback, or browse every native cursor keyword with a live hover preview.
CSS Cursor Generator
Mode
Build a custom image cursor
Image source
Browsers reliably honor cursor images up to 128 px. 32 px is the classic cursor size.
The pixel inside the image that points at the target, measured from the top-left corner. For an arrow this is the tip; for a crosshair or dot it is the center.
Required by the CSS spec. Shown when the image cannot load or is too large for the browser to use.
Live preview
Move your mouse over this area
The real cursor is applied here. The image above shows the source art at actual size.
CSS output
CSS rule
.custom-cursor {
cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 32 32'%3E%3Cpath d='M 1.92 1.92 L 1.92 25.6 L 8.96 19.2 L 13.44 28.8 L 17.92 26.88 L 13.44 17.28 L 23.04 17.28 Z' fill='%23ffffff' stroke='%230b1220' stroke-width='0.96' stroke-linejoin='round'/%3E%3C/svg%3E") 2 2, auto;
}cursor value
cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 32 32'%3E%3Cpath d='M 1.92 1.92 L 1.92 25.6 L 8.96 19.2 L 13.44 28.8 L 17.92 26.88 L 13.44 17.28 L 23.04 17.28 Z' fill='%23ffffff' stroke='%230b1220' stroke-width='0.96' stroke-linejoin='round'/%3E%3C/svg%3E") 2 2, auto;Tailwind class
cursor-[url("data:image/svg+xml,%3Csvg_xmlns='http://www.w3.org/2000/svg'_width='32'_height='32'_viewBox='0_0_32_32'%3E%3Cpath_d='M_1.92_1.92_L_1.92_25.6_L_8.96_19.2_L_13.44_28.8_L_17.92_26.88_L_13.44_17.28_L_23.04_17.28_Z'_fill='%23ffffff'_stroke='%230b1220'_stroke-width='0.96'_stroke-linejoin='round'/%3E%3C/svg%3E")_2_2,_auto]Spaces become underscores per Tailwind arbitrary-value syntax.
How to use
- Choose Custom cursor to build an image pointer, or Keyword reference to browse the native cursor values.
- In the custom builder, pick a built-in shape and set its colors and size, or switch to Upload image and choose a PNG, GIF, WebP, or SVG.
- Set the hotspot X and Y to the pixel that should point at the target. For an arrow use the tip; for a dot or crosshair use the center.
- Pick a fallback keyword. It is shown when the image cannot load or is too large for the browser to use.
- Move your mouse over the live preview to confirm the cursor, then copy the CSS rule, the cursor value, or the Tailwind class.
- In Keyword reference, hover any tile to see the real cursor and click Copy to grab its cursor declaration.
About this tool
CSS Cursor Generator does two jobs that web developers reach for constantly: it builds a custom image cursor you can drop straight into a stylesheet, and it lets you preview every native cursor keyword the way they actually look on your machine. The CSS cursor property controls the mouse pointer over an element. It accepts about 35 standard keyword values (auto, default, pointer, text, crosshair, move, grab, grabbing, not-allowed, the eight directional resize values, zoom-in, zoom-out, and more), and it also accepts one or more url() images followed by a mandatory keyword fallback. The catch with the keywords is that the glyph for each value is drawn by the operating system, not by the browser, so a screenshot of a pointer on Windows looks different from the same value on macOS or Linux. The only honest preview is to hover an element that really sets that value, which is exactly what the keyword reference here does: every keyword renders as a tile with cursor set to that value, grouped by purpose (general, links, selection, drag and drop, resize, zoom), and clicking a tile copies the cursor declaration for that value. The custom builder produces the url() form. You either pick a built-in shape (arrow, dot, ring, crosshair, or pointing hand) that is drawn as an SVG with colors and a size you choose, or you upload your own PNG, GIF, WebP, or SVG. Either way the image is encoded as a data URI, so the finished cursor needs no image hosting and works when pasted into any project, a CodePen, or an inline style. Two details make a custom cursor behave correctly, and the tool handles both. First, the hotspot: the two numbers after the url() set the pixel inside the image that actually points at the target, measured from the top-left corner, so an arrow uses its tip while a crosshair or dot uses its center. Second, the fallback: the CSS spec requires a generic keyword after any url() list, shown when the image cannot load or is larger than the browser will accept, so the tool always appends one you select. Browsers reliably honor cursor images up to 128 pixels and silently fall back to the keyword for anything larger, so the size control is capped accordingly and the tool warns when an uploaded image exceeds that limit. The output panel gives you the full CSS rule, the bare cursor value, and a Tailwind arbitrary-value class with spaces converted to underscores. The live preview area applies the real cursor so you can move your mouse over it and feel the result, and it shows the source art at actual size next to it. Everything runs in your browser. Uploaded images are read locally with the File API and embedded inline, so nothing you load here is ever sent to a server.
Free to use. Works in your browser. No signup, no login.
Related tools
You may also like
CSS Outline Generator
Outline shorthand, focus-visible variant, and Tailwind output with a live preview.
Open tool
GeneratorCSS Box Shadow Generator
Layered box-shadow with live preview, opacity, inset, and Tailwind output.
Open tool
GeneratorCSS Filter Generator
Visual CSS filter builder with live preview, presets, and copy-ready output.
Open tool
DeveloperCSS Scrollbar Generator
Build cross-browser scrollbar CSS with a live preview and ready-to-copy class.
Open tool
GeneratorCSS Mask Image Generator
Mask-image with SVG, gradient, or URL sources and Tailwind output.
Open tool
DeveloperSVG to Data URI
Encode SVG markup as a CSS background-image data URI with live preview.
Open tool