On GitHub, fabricjs/fabric.js has picked up 31.4k stars, TypeScript. Javascript Canvas Library, SVG-to-Canvas (& canvas-to-SVG) Parser
Snapshot summary built from the project's own GitHub metadata — there's no written TopGit review yet. The page will update automatically when a full review is published.
WHY NO REVIEW YET
TopGit writes full reviews for the most-starred, most-requested repositories. This page is a snapshot until then — see the READ ME tab for the original README in full.
A simple and powerful Javascript HTML5 canvas library.
Website
Old V5 documentation
GOTCHAS
Contributing, Developing and More
Special Thanks
Here is a section for recognition of companies or individuals that support fabricJS with a sponsorship
Atlas Cloud is a full-modal AI inference platform that gives developers a single AI API to access video generation, image generation, and LLM APIs. Instead of managing multiple vendor integrations, you connect once and get unified access to 300+ curated models across all modalities.
Check out Atlas Cloud's new coding plan promotion for more budget-friendly API access:https://www.atlascloud.ai/console/coding-plan
Features
Out of the box interactions such as scale, move, rotate, skew, group...
Built in shapes, controls, animations, image filters, gradients, patterns, brushes...
JPG, PNG, JSON and SVG i/o
Typed and modular
Unit tested
Security efforts
Supported Browsers/Environments
Context
Supported Version
Notes
Firefox
✔️
58
Safari
✔️
11
Opera
✔️
chromium based
Chrome
✔️
64
Edge
✔️
chromium based
Edge Legacy
❌
IE11
❌
Node.js
✔️
Node.js installation
Fabric.js does not use polyfills by default, or tries to keep it at minimum. the browser version we support is determined by the level of canvas api we want to use and some js syntax. While JS can be easily transpiled, canvas API can't.
Installation
For new applications, install the environment-specific package:
The legacy fabric package remains supported for existing applications:
$ npm install fabric --save
# or use yarn
$ yarn add fabric
# or use pnpm
$ pnpm add fabric
Packages and migration
Package
Role
fabric
Legacy compatibility facade. It re-exports @fabricjs/browser.
@fabricjs/browser
Preferred entrypoint for new browser applications.
@fabricjs/node
Preferred entrypoint for new Node.js applications. It owns the Node-specific dependencies.
@fabricjs/core
Shared, environment-neutral runtime used by the browser and Node packages. It is intended for advanced and shared dependencies.
Extension packages
Optional features imported individually, such as @fabricjs/aligning-guidelines.
Existing imports continue to work:
import { Canvas } from 'fabric';
import { StaticCanvas } from 'fabric/node';
New applications should prefer the explicit entrypoints:
import { Canvas } from '@fabricjs/browser';
import { StaticCanvas } from '@fabricjs/node';
import { AligningGuidelines } from '@fabricjs/aligning-guidelines';
The fabric and fabric/node facades share the same class identities as
their corresponding workspace packages. Keep fabric and every
@fabricjs/* package on matching versions; mixing mismatched versions can
load separate runtimes.
@fabricjs/core has no Node-specific runtime dependencies, but it is not a
DOM-free API. Advanced consumers using core APIs that touch DOM or canvas must
provide a suitable environment implementation.
Legacy distribution files
The ESM fabric and fabric/node entries are small compatibility facades over
the workspace packages. The legacy standalone files remain available for
existing usage:
dist/index.js and dist/index.min.js are full browser UMD builds from
@fabricjs/browser, for <script> tags and require('fabric').
dist/index.node.cjs is the legacy CommonJS compatibility build for
require('fabric/node').
New ESM applications should continue to import @fabricjs/browser or
@fabricjs/node directly.
Browser
See browser modules for using es6 imports in the browser or use a dedicated bundler.
Node.js
We strongly recommend to run your applications only LTS versions of node.
Said so the minimum supported version of node is 20.
We bump up the minimum version of node with a Major release only when the dependencies force us to do so.
Fabric.js depends on node-canvas for a canvas implementation (HTMLCanvasElement replacement) and jsdom for a window implementation on node.
This means that you may encounter node-canvas limitations and bugs.
Follow these instructions to get node-canvas up and running.
Quick Start
// Preferred entrypoints for new applications
import { Canvas } from '@fabricjs/browser';
import { StaticCanvas } from '@fabricjs/node';
// Supported compatibility entrypoints
import { Canvas } from 'fabric';
import { StaticCanvas } from 'fabric/node';
// v5 compatibility
import { fabric } from 'fabric';
TopGit's last sync did not record any GitHub topics for fabricjs/fabric.js. GitHub topics appear in the right sidebar of a repository page; that's the authoritative place to check.
How active is development on fabricjs/fabric.js?
The most recent commit recorded on fabricjs/fabric.js was 15 days ago, based on the GitHub push timestamp. The repository has 3.6k forks — one of the better signals of community interest.
How many stars does fabricjs/fabric.js have?
fabricjs/fabric.js has 31.4k GitHub stars — refresh the page for the live number, or check github.com/fabricjs/fabric.js. TopGit mirrors GitHub's count but does not claim minute-by-minute accuracy.
What language is fabricjs/fabric.js written in?
fabricjs/fabric.js is written primarily in TypeScript. GitHub's language field is based on the largest share of bytes in the default branch.
Where do I read more about fabricjs/fabric.js?
This TopGit page is a snapshot — the READ ME tab shows the project's own README content (links stripped, images preserved). The GitHub repository at github.com/fabricjs/fabric.js is the definitive source.
Read full README in the tab above.
Is fabric.js worth your time?
ChatGPT, Claude and Perplexity can all read this page. Ask one of them what it makes of fabric.js.