The image-rendering property sets the scaling algorithm used when an image is drawn larger or smaller than its natural size. It applies to the element, images in its other properties, and descendants.
It is inherited. The initial value is auto. If the image is not scaled, the property has no visible effect. Pair sizing with object-fit when you need crop or cover behavior.
Unsupported value.
The spec also defines high-quality, but browsers do not support it yet. Stick to auto, smooth, crisp-edges, and pixelated.
Limited availability.
smooth is mainly supported in Firefox. Prefer auto when you need portable photo-style scaling.
Set crisp-edges. The engine prefers an algorithm that keeps edges sharp.
Less blur. Color smoothing is avoided when possible.
Similar to pixelated. On many sprites the two look alike; support still varies.
Check Chromium. Full crisp-edges landed later than pixelated in Chrome/Edge.
Edge Cases & Pitfalls
If nothing changes, the image probably is not scaled.
scale
No effect at natural size
When displayed size matches intrinsic size, image-rendering does nothing visible.
smooth
smooth support is limited
Firefox supports smooth. Chrome and Safari typically fall back to default behavior. Prefer auto for portable photo scaling.
spec
high-quality is unsupported
It appears in the formal syntax but is not implemented. Do not rely on it.
svg
SVG has its own image-rendering
SVG also defines image-rendering. For pixel SVGs, shape-rendering="crispEdges" on the markup can help too.
fit
Object-fit still controls crop
object-fit decides how the image fills the box; image-rendering only changes how pixels are interpolated while scaling.
Compatibility
Browser Support
image-rendering is a browser graphics property. Node.js, Deno, and Bun do not apply it.
✓ Baseline · Values vary
image-rendering
auto / pixelated: widely available. crisp-edges: strong in Safari/Firefox; Chromium fuller since ~148. smooth: mainly Firefox.
95%Common values
Google Chrome41+ pixelated · crisp-edges later
Full / partial
Mozilla Firefox3.6+ · smooth 93+
Full
Apple Safari10+
Full
Microsoft Edge79+ pixelated · crisp-edges later
Full / partial
Opera28+
Full / partial
Samsung InternetSupported
Full / partial
Internet ExplorerPartial / limited
Partial
image-renderingWidely supported
Bottom line: Use pixelated for pixel art in modern browsers. Treat smooth as progressive enhancement. Skip high-quality for now.
Remember
Key Takeaways
Role: pick how browsers scale an image when size changes.
Common values:auto, pixelated, crisp-edges (and smooth where supported).
Initial value:auto. Inherited. Needs scaling to matter.
Tip: photos → auto; pixel art → pixelated.
One line:image-rendering chooses blurry-smooth or hard-pixel scaling when an image is resized.
Frequently Asked Questions
It chooses the scaling algorithm when an image is drawn larger or smaller than its natural size. It has no effect on images that are not scaled.
The initial value is auto. The browser picks its usual scaling method, often smooth interpolation.
Both keep hard edges for pixel-style art. pixelated aims for a blocky nearest-neighbor look; crisp-edges preserves contrast and edges. Support and exact look can differ by browser.
Use it when scaling up small sprites, pixel art, or icons where you want visible square pixels instead of blur.
Yes. You can set it on a parent so nested images and backgrounds inherit the scaling preference.
The property is Baseline. auto and pixelated are widely available. smooth is mainly Firefox. crisp-edges support improved recently in Chromium. It is a browser graphics property, not a Node.js feature.