Canvasplayer 2.0
Canvasplayer 2.0 plays back graffiti tags in a web browser, in 2D and 3D. It reads Graffiti Markup Language (GML) files and redraws each tag stroke by stroke, at the speed it was written.
Try it · Source code · Embed a tag
It’s a rebuild of the original canvasplayer from 2009, which sat mostly untouched for 16 years.
What’s new
- Plain canvas and ES modules, with no dependencies
- Six ink modes: marker, chisel, outline, dyna, hairline and skeleton
- Effects: drips, bleed, jitter, ghost and fade
- Data layers: points, vectors, bounds and a speed graph
- A player with a scrubber, speed control, fullscreen, dark mode and keyboard controls
- Embeds for an animation, a full player or a static drawing
- Fixes for 2009 bugs, including sideways tags rotated by 80 radians instead of 80 degrees
Some of the ink modes and effects.
Katsu’s skull (#161), the default tag since 2010, through a handful of the new modes.
The 2D player, with every option on screen.
3D, by Evan Roth
The biggest addition is a 3D mode by Evan Roth. It stretches each tag through time as a ribbon, with dust trailing the pen. The look comes from DustTag, the iPhone app Evan made with Chris Sugrue in 2010, and before that from his Graffiti Analysis work, which started in 2004. Evan ported it to three.js in 2026, and his fork is now part of canvasplayer.
Katsu's skull in 3D. Click to play it.
Credits
Built by me, with the 3D renderer by Evan Roth. Thanks to the rest of the GML team, Theo Watson, Chris Sugrue and Golan Levin, and to every writer who uploaded a tag.
The code is public domain.
Links
See also: the original canvasplayer (2009), 000000book 2.0, Graffiti Markup Language (GML)