How To Prevent Canvas From Shrinking

Canvas is a potent feature in HTML5 that enables developers to generate graphics through scripting. Nonetheless, if you have ever experienced your canvas element suddenly becoming smaller or larger than expected, you are aware of how aggravating it can be. Therefore, in this blog post, we will investigate methods to avoid a canvas from shrinking.

Why does Canvas shrink?

The canvas element has two sizes: its size in the layout of the page and its size in pixels. When a canvas is created without specifying a size, it defaults to a size of 300 pixels wide and 150 pixels tall. If you then use CSS to change its size on the page, the size in pixels does not change – it is simply stretched or shrunk to fit the new size. This distortion is what often causes the “shrinking” effect.

Preventing Canvas from Shrinking

To prevent your canvas from shrinking, you need to ensure that the size in pixels matches the size in the layout. This can be done in two steps:

  1. Set the size of the canvas using the width and height attributes in HTML.
  2. Set the size of the canvas in the CSS to match the size set in the HTML.

Here is an example:

    <canvas id="myCanvas" width="800" height="600"></canvas>

    #myCanvas {
    width: 800px;
    height: 600px;

By specifying the size of the canvas in both the HTML and CSS, we ensure that the size in pixels (set by the HTML attributes) matches the size on the page (set by the CSS).

Another way to achieve this is by setting the width and height attributes of the canvas in JavaScript. This can be done as follows:

    var canvas = document.getElementById('myCanvas');
    canvas.width = 800;
    canvas.height = 600;

By doing this, you’re making sure that your canvas’s size is defined not only in the layout of your page but also in its pixel dimensions, thus preventing it from shrinking.


In conclusion, the key to preventing a canvas from shrinking is to ensure that its size in pixels matches its size in the page layout. By setting both the HTML attributes and the CSS or JavaScript properties, we can control these sizes and prevent unwanted shrinking or stretching of the canvas.

If you want your canvas to be responsive, just remember to also adjust the pixel dimensions whenever the layout size changes. Happy coding!