The best is to use fabricJS since it supports canvas to SVG rendering while working with fabric objects. I accepted Phrogz's answer since it also does conversion canvas to svg without using some other library for drawing on canvas. EDIT 2: OK, i messed up, Phrogz's library is wrapper around canvas element so you use it's methods to draw on canvas (I thought that it just 'listens' on canvas and creates SVG paths). So the best solution is fabricJS definitely. I've created an alpha version of a library that allows you to extend an HTML5 Canvas Context such that it tracks all vector drawing commands and stores them as an array SVG elements in a ctx.svgObjects property of the context. You can see the library in action here: http://phrogz.net/svg/HTML5CanvasRecordsSVG.html The demo turns on recording, draws a few shapes to the HTML5 Canvas, and then appends the 'recorded' SVG objects to an SVG container next door. More work could be done on this library to flesh out all the commands (not just path commands, but also things like fillText()). But it's not something that I personally need, so I'm not inclined to spend hours carrying it over the finish line. Source.