Yes, touching the width or height of a canvas does reset it. Do you have a JSperf page showing the speed difference ? In my experience they're virtually the same, with a slight advantage for the reset. A reset simply wipes the raw pixel buffer allocated to the Canvas and resets a few properties regardless of the previous state of the Canvase: transformation matrix, clipping path, globalCompositeOperation, ... OTOH clearRect() is subject to these potentially expensive properties. What about using multiple canvases ? One for the things you modify rarely, and another one for the things that need constant update.