# steveruizok/perfect-freehand

Draw perfect pressure-sensitive freehand lines.

Repository: https://github.com/steveruizok/perfect-freehand
Canonical: https://ross.abutalabs.com/products/perfect-freehand
Homepage: https://perfectfreehand.com
Language: HTML
License: MIT
License Family: permissive
Topics: pressure, svg, html-canvas, drawing, lines, stroke, graphics, variable-width
Last push: 2026-04-13T04:44:47+00:00

## Health v2 (maintenance only)
Score: 67/100 (v2, computed 2026-09-03T02:20:16.233290+00:00)
- activity 77, release rhythm 36, longevity 100
- inputs: {"age_days": 2021, "days_push": 142, "days_rel": 214, "gap_med": null, "n_releases_24m": 1}
- flags: none
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 5693, forks 212 (observed 2026-08-28T04:09:27.991869+00:00)

## What it is
A TypeScript library that generates pressure-sensitive freehand stroke outlines from input points, exportable as polygons for rendering with SVG, HTML Canvas, or any other technology. It simulates or accepts real stylus pressure and offers customizable stroke appearance options.

## Use cases
- draw pressure-sensitive freehand lines in a web app
- build a digital whiteboard or note-taking sketch tool
- convert mouse or stylus input points into smooth variable-width strokes
- render hand-drawn strokes as SVG paths or canvas polygons
- add natural-looking pen strokes to a drawing application
- simulate pen pressure from mouse movement

## When to choose
- you need realistic, pressure-sensitive freehand strokes in SVG or Canvas
- you want a small, framework-agnostic library that just returns outline points
- you're building a whiteboard, sketching, or annotation tool in the browser
- you want to support both stylus pressure and simulated mouse pressure

## When to avoid
- you need a full drawing application with layers, undo, or color tools
- you're working outside JavaScript/TypeScript without using one of the community ports
- you need vector editing or bezier manipulation rather than stroke generation

## Facets
- artifact type: library
- maturity: active
- function: graphics, image-processing
- domain: graphics, web-development, frontend
- platform: browser, cross-platform
- tags: drawing, freehand-strokes, pressure-sensitivity, svg, html-canvas, typescript, stroke-generation, nodejs

## Member repositories
- steveruizok/perfect-freehand (main) score 67

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:09:27.991869+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-29T17:53:43.660638+00:00, confidence not recorded.
  - readme: https://github.com/steveruizok/perfect-freehand (fetched 2026-08-28T04:09:27.991869+00:00, sha c6216eb85825)
  - homepage: https://perfectfreehand.com (fetched 2026-08-29T08:49:09.625093+00:00, sha 04244aac6e4d)
- Data as of 2026-08-30T08:39:29.467469+00:00.
