DriversRecommendedOutdated drivers can make a good PC feel brokenScan driver issues before chasing fixes manually.Scan NowOctober DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsClean PCRecommendedOne scan can reveal what keeps slowing WindowsLook for cleanup and repair opportunities.Run Scan×
Skip to content
World desk6 min

Freehand Drawing with the Canvas API: A Pointer Events Tutorial

A practical guide to freehand drawing on an HTML canvas using Pointer Events, with working code, multi-touch handling, scrolling fixes and accessibility notes.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

To draw freehand on a canvas, let the Canvas 2D API paint pixels and let Pointer Events supply the input. Create a <canvas> and get its context with getContext("2d"). On pointerdown, remember where the pointer started. On each pointermove, draw a short line from the last point to the new one. On pointerup or pointercancel, forget that pointer. Because Pointer Events treat mouse, pen and fingertip alike, one set of handlers covers desktop and mobile. The sections below build this up and cover the details that usually break it: blurry or distorted lines, touch scrolling, multi-touch, and accessibility.

A complete working sketch pad

This is the smallest version that behaves well on mouse, pen and touch. The sections after it explain each decision.

<canvas id="pad" width="800" height="500"
        style="touch-action: none; border: 1px solid #888">
  Your browser does not support canvas.
</canvas>

<script>
const canvas = document.getElementById("pad");
const ctx = canvas.getContext("2d");
if (!ctx) throw new Error("2D canvas context unavailable");

ctx.lineWidth = 4;
ctx.lineCap = "round";
ctx.lineJoin = "round";
ctx.strokeStyle = "#111";

// One entry per active pointer: pointerId -> last point
const active = new Map();

function toCanvas(e) {
  const r = canvas.getBoundingClientRect();
  return {
    x: (e.clientX - r.left) * (canvas.width / r.width),
    y: (e.clientY - r.top) * (canvas.height / r.height)
  };
}

canvas.addEventListener("pointerdown", function (e) {
  canvas.setPointerCapture(e.pointerId);
  const p = toCanvas(e);
  active.set(e.pointerId, p);
  // Make a single tap leave a dot
  ctx.beginPath();
  ctx.arc(p.x, p.y, ctx.lineWidth / 2, 0, Math.PI * 2);
  ctx.fillStyle = ctx.strokeStyle;
  ctx.fill();
});

canvas.addEventListener("pointermove", function (e) {
  const last = active.get(e.pointerId);
  if (!last) return;               // this pointer is not drawing
  const p = toCanvas(e);
  ctx.beginPath();
  ctx.moveTo(last.x, last.y);
  ctx.lineTo(p.x, p.y);
  ctx.stroke();
  active.set(e.pointerId, p);
});

function end(e) { active.delete(e.pointerId); }
canvas.addEventListener("pointerup", end);
canvas.addEventListener("pointercancel", end);
</script>

How it works, step by step

1. Set the canvas’s intrinsic size

The width and height attributes (or properties) define the canvas’s coordinate space, which is the size of its bitmap. Resizing only with CSS stretches that bitmap, so lines can look distorted or soft. Maximum usable dimensions vary by browser and environment, so don’t assume very large canvases will work everywhere. The toCanvas helper in the sketch converts screen coordinates into bitmap coordinates, so drawing stays correct even when CSS displays the canvas at a different size from its attributes.

2. Get the 2D context and check it

canvas.getContext("2d") returns the object that owns every path and stroke method. It can return null if the context type isn’t supported, or if the canvas has already been put into a different context mode (for example, after a "webgl" request). Check the result before using it, as the sketch does.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
#1 Best Overall
Callsky-Tab 12 Inch Drawing Tablet with Stylus Pen & Flip Case
  • Multifunctional Drawing Tablet – Ctab 12 is a 12-inch Android 15 tablet, powered by a T616 octa-core processor with 16GB RAM and 256GB ROM (expandable up to 2TB) for smooth multitasking. Ideal for online teaching, Zoom meetings, and digital art creation, it’s perfect for beginners and professionals in drawing, sketching, design, 3D work, and animation.
  • Ultra-Sensitive Stylus for Seamless Creativity – This tablet with Stylus comes equipped with a rechargeable pen offering 4096 pressure levels and tilt support, ensuring precise, natural strokes for professional-grade results. The pen attaches magnetically to prevent loss and includes a drawing glove for a comfortable, smudge-free experience—perfect for artists and designers.
  • Experience Every Detail in Stunning Clarity – The 12-inch IPS display delivers crisp, vibrant 2K visuals, bringing every brushstroke, movie, or game to life. Wide viewing angles and anti-glare technology ensure accurate colors and comfortable, precise artwork from any position.
  • Large Screen with Protective Case – Enjoy a spacious canvas for drawing, sketching, or working on this Android tablet. The included protective case features three folding modes, offering multiple viewing angles while protecting your tablet from scratches and bumps—ideal for creating, typing, or watching videos anywhere.
  • 8000mAh Long-Lasting Battery – Android tablet features a powerful 8,000mAh battery, providing up to 6 hours of video playback or creative work. The reinforced Type-C port allows easy charging from any orientation, giving you more uninterrupted time for drawing, streaming, or productivity.

3. Draw segments, not whole paths

Pointer movement arrives as a sequence of discrete samples. Drawing a short segment from the previous sample to the current one on each pointermove gives you an incremental stroke without redrawing anything. Setting lineCap and lineJoin to "round" hides the seams between segments.

4. Track each pointer by pointerId

Every active pointer has its own pointerId. Keeping a map from ID to last point means two fingers draw two independent strokes instead of one line jumping between them. This is the reason to avoid a single global lastX/lastY pair. The same Pointer Events model also lets a mouse, a pen and touches coexist without separate code paths.

Rank #2
12-Inch Standalone Drawing Tablet No Computer Needed with 4096-Level Stylus
  • 【All-in-One Standalone Drawing Tablet】No computer needed. Ready right out of the box. 12" screen, 4096 stylus, 16GB RAM, 256GB storage, Android 15. Runs all your favorite drawing apps smoothly. Perfect for beginners, students, and hobbyists. Create anywhere – from home to coffee shop.
  • 【Natural Drawing Feel】4096 pressure levels capture every stroke from delicate lines to bold marks. 60° tilt support lets you shade naturally, just like a real pencil. USI 2.0 ensures compatibility across devices. Magnetic attachment keeps the stylus secure on your portable drawing tablet – no fumbling, no losing.
  • 【True Color Canvas】12-inch IPS display with 2000x1200 resolution brings every detail to life. 100% sRGB color gamut ensures vibrant, accurate hues from first sketch to final render. Full-lamination eliminates parallax – your pen tip meets the cursor exactly where you expect. More room to create on this drawing tablet with screen – zero distraction.
  • 【Anti-Glare & Eye Comfort】Pre-applied anti-glare screen protector cuts harsh reflections and fingerprints, so you can draw under any light – studio, cafe, or sunlight. Reduced glare means less eye strain, even during marathon sessions. This drawing tablet no computer needed keeps your focus on art, not on squinting.
  • 【Open. Smooth. Limitless.】Powered by Android 15 and 16GB RAM (8+8 virtual) – layers pile up, apps multiply, yet zero lag. 256GB storage onboard, expandable to 2TB – room for thousands of artworks, tutorials, and everything you love. Download any creative app from Google Play: ibis Paint, CSP, Krita, you name it. A true art tablet for drawing that adapts to you.

5. End strokes on both pointerup and pointercancel

Browsers fire pointercancel when they take over a gesture (a scroll or pinch, for instance) or the input is otherwise interrupted. If you only handle pointerup, the cancelled pointer stays in your map and can produce a stray line later. Delete the state for that ID in both handlers.

6. Stop touch from scrolling the page

By default, a finger dragged across a canvas scrolls or zooms the page, and the browser may cancel your pointer stream to do so. MDN’s drawing example sets touch-action: none on the canvas to prevent that. Apply it deliberately: it disables default touch panning and zooming on that element, so a full-screen canvas can trap users who need to scroll past it. Leave some non-canvas page area, or provide a mode toggle, when the canvas fills the viewport.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #3
Sale
XPPen Deco 01 V3 10x6 Drawing Tablet, 16K Battery-Free Stylus, 8 Keys
  • Word-first 16K Pressure Levels: The upgraded stylus features 16,384 levels of pressure sensitivity and supports up to 60 degrees of tilt, delivering smoother lines and shading for a natural drawing experience. With no battery or charging needed, it operates like a real pen, making it easy for beginners to create effortlessly. This functionality helps novice artists develop their skills and explore their creativity without the intimidation of complex tools
  • Designed for Beginners: This drawing pad desinged with 8 customizable shortcuts for both right and left-hand users, express keys create a highly ergonomic and convenient work platform
  • Perfectly Adapted for Android: The XPPen Deco 01 V3 art tablet supports connections with Android devices running version 10.0 and above. It is recommended to download the XPPen Tools Android application, which adapts to your smartphone's screen aspect ratio, ensuring accurate mapping. It also supports mapping on Android screens with different aspect ratios in portrait mode
  • Large Drawing Space, Bigger Bold Inspiration: This expansive drawing pad has10 x 6.25-inch helps you break through the limit between shortcut keys and drawing area
  • Easy Connectivity for Beginners: The Deco 01 V3 offers USB-C to USB-C connectivity, plus adapters for USB C. This ensures easy connection to various devices, allowing beginner artists to set up quickly and focus on their creativity without compatibility concerns. Whether using a laptop, tablet, or desktop, the Deco 01 V3 provides a seamless experience, making it an ideal choice for those just starting their digital art journey

The setPointerCapture call in the sketch is a complementary measure: it keeps delivering events to the canvas even if the pointer slides outside it mid-stroke, so a stroke doesn’t silently stop at the edge.

Pointer Events vs. separate mouse and touch handlers

Approach Device coverage Concurrent inputs Trade-off
Pointer Events Mouse, pen and fingertip through one event model Multiple pointers, distinguished by pointerId One code path; you still need touch-action for gesture control
Separate mouse* and touch* handlers Needs a handler set per device class Touch lists for touch; mouse handled separately More code and more room for inconsistent behavior

For a new drawing surface, Pointer Events is the simpler choice.

Rank #4
Viewedge Standalone Drawing Tablet No Computer Needed, 11 Inch 90Hz
  • ‌Stunning Display‌: Enjoy vibrant colors and crisp details on the 11 inch Nano anti-glare display with a 1920 x 1200 resolution and 90Hz refresh rate
  • Rechargeable Pen: The computer graphic tablet is equipped with a rechargeable pen with 4096-level pressure sensitivity and tilt function, making strokes smooth and sensitive
  • Soft Light Glass: Nano-etching screen reduces glare/graininess, offers a paper-like texture. Full-laminated design enhances touch precision/image clarity. Soft viewing experience reduces eye strain for natural drawing and extended use. Anti-fingerprint coating ensures cleanliness
  • ‌‌Powerful Performance‌: Experience seamless multitasking and smooth gaming, 6GB of RAM, and 128GB of storage (expandable up to 1TB)
  • ‌All-Day Battery Life‌: Stay connected and entertained with the long-lasting 8000mAh battery that supports uninterrupted usage throughout the day

Common failures and fixes

Symptom Likely cause Fix
Lines are offset from the cursor CSS size differs from the canvas attributes and coordinates aren’t scaled Convert with getBoundingClientRect() and the width/height ratio, as in toCanvas
Drawing looks stretched or fuzzy Canvas sized only with CSS Set intrinsic width and height; if you resize the canvas, remember that doing so clears it
Page scrolls while drawing on a phone Default touch behavior is active Add touch-action: none to the canvas
Strokes stop abruptly on touch The browser cancelled the pointer for a gesture Handle pointercancel and set touch-action
Stray line connects two strokes State from an ended pointer was kept Delete the pointer’s entry on pointerup and pointercancel
getContext returns null Unsupported context, or the canvas is already in another context mode Use one context type per canvas and check for null
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Sharper lines on high-density screens

If lines look soft on a high-density display, a common technique is to make the bitmap larger than its CSS size and scale the context. This is general canvas practice rather than something Pointer Events require. Set canvas.width = cssWidth * devicePixelRatio (same for height), set the CSS width and height to the original values, and keep using the ratio-aware toCanvas conversion. Because the conversion already maps CSS pixels to bitmap pixels, you only need to scale line widths to taste.

Accessibility

A canvas is a bitmap. Assistive technology cannot see the shapes you draw, so strokes are invisible to it. Put fallback content inside the <canvas> element, and give a drawing tool real HTML controls (buttons for undo, clear, colour and save, with proper labels) rather than painting them onto the canvas. If the drawing carries significant information, provide that information as text or other accessible markup alongside it. Pointer-only input also excludes keyboard users, so decide whether your use case needs an alternative way to perform the same action.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Best Value
Sale
HUION KAMVAS Slate 11 Standalone Drawing Tablet No Computer Needed, 10.95"
  • All-in-One Drawing Tablet: This standalone tablet requires no computer connection—start drawing right out of the box. Perfect for artists on the go, its sleek aluminum back provides a comfortable feel and makes the writing tablet an ideal choice for note-taking and capturing ideas.
  • 10.95-inch Full HD Graphic Tablet: The combination of a 10.95-inch screen and FHD+ (1920*1200) resolution ensures a high pixel density of 207 PPI, delivering a sharp visual experience. With a 99% sRGB color gamut, every stroke of your artwork is precisely represented.
  • Smooth 90Hz Refresh Rate: The digital drawing tablet features a 90Hz refresh rate, ensuring smooth visuals with no lag. This makes images more vivid, allowing you to immerse yourself in a seamless creation experience. The digital drawing pad also enhances your viewing experience, whether you're watching films or playing games.
  • Full-Laminated Anti-Glare Screen: The digital art pad features a nano-etched, anti-fingerprint matte surface that significantly reduces glare and provides a natural paper-like texture for a comfortable drawing feel. The full-lamination technology minimizes parallax, enhancing stroke precision and clarity, while also helping to reduce eye strain during prolonged use.
  • High-Precision H-Pencil: The drawing pen features Huion's years of experience in line-drawing algorithms, offering better accuracy and preventing line offset while drawing. With 4096 levels of pressure sensitivity and 60° tilt recognition, it brings you a writing experience that feels just like using a real pencil.

When to consider OffscreenCanvas

A simple sketch pad doesn’t need it. If you render something heavy, such as large filters, many layers or replaying thousands of strokes, and the main thread stutters, OffscreenCanvas lets a worker do the rendering while the interface stays responsive. It adds architectural complexity (messaging, transferring the canvas), so adopt it only once you’ve seen a real responsiveness problem. Check current browser support for your target environments before depending on it.

Where to read more

The behaviors above are documented by MDN Web Docs in its pages on the Canvas API, the <canvas> element, CanvasRenderingContext2D, Pointer Events (including its drawing app example and multi-touch interaction guide) and HTMLCanvasElement. Browser-specific compatibility should be verified for your deployment. No stylus is required: mouse and fingertip work with the same code, and a pen simply adds another pointer type.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
Crashes, No Sound, or Screen Glitches?Free driver scan
PC Slower Than It Used to Be?Free scan - under a minute

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.