SmartUpscale is an extension for Firefox and Chrome web-browsers, that prevents blurring images which have their size in physical pixels larger than their natural size by an integer number of times. In other words, the extension applies integer-ratio scaling (integer scaling) to images on webpages.

Useful with HiDPI (high-DPI) displays, including 4K monitors at OS-level zoom of 200%.

The scale is calculated individually for each image.

Images are processed once loaded, as well as on changing browser-level zoom and after some of dynamic page changes.

The extension starts to work immediately after installation and does not need browser restart.

See also
  • IntegerScaler — utility for integer-ratio scaling of games in Windows 7+.
  • bsnes-mt — SNES (Super Nintendo) emulator with support for pixel-perfect integer-ratio scaling.


The following extension options are available in the browser’s window “Add-on Manager → Extensions”:

Maximum image zoom that blur should be prevented at
Allows to limit zoom level that blur should be disabled at. Default value — 0 — means no limits.
Observe dynamic page changes (enabled by default)
Allows to auto­matically process new images added to current page dynamically after the page has been initially loaded.
Disable blur for all elements (disabled by default)
Disable blur globally for all elements on the page regardless of current zoom level (equivalent to a corresponding user stylesheet). May cause distortion of images displayed at non-integer zoom levels.


  • The extension only processes images embedded in the page as HTML element IMG. The extension does not process images embedded via CSS as background or using :before or :after pseudo­elements, since there is no way to reliably determine their in-page size, as well as in terms of performance. Also, it’s technically possible to disable blur not for specific background image itself, but for the element (or pseudo­element) that has that background image, while a single element may have multiple background images, each with its own scale factor.
  • Images opened directly in a separate tab may be processed not always (Firefox-specific; Chrome behavior is unknown).
  • Dynamic pages changes are tracked partially. In particular, resizing individual images via CSS isn’t tracked while resizing via HTML attributes is tracked.