Skip to content
1440px

Retina Assets: @2x, @3x and What to Skip

Export @2x. Ship @1x and @2x. Reach for @3x only when the asset is small and the edges are hard.

Short answer
@1x + @2x

The jump from 1× to 2× is visible to everyone. The jump from 2× to 3× is visible to almost nobody at normal viewing distance, and costs 2.25× the bytes of the 2× file. Use 3× for icons and line art, not for photographs.

Device pixel ratios across all 242 catalogued devices
Device pixel ratioDevicesPixels per CSS pxTypical
171Steam Deck OLED, Steam Deck LCD
1.5×82.25Samsung Galaxy Tab S6 Lite, Samsung Galaxy Tab A9+
1.73×12.99Surface Laptop 7 15″
1.8×13.24Surface Laptop 7 13.8″
984iPhone 11, iPhone XR
2.25×25.06HP Spectre x360 14, ASUS Zenbook 14 OLED
2.625×126.89Samsung Galaxy Z Fold 6, Google Pixel 10
2.75×77.56Google Pixel 5, Google Pixel 4a
2.81×37.9Samsung Galaxy S23+, Samsung Galaxy S22+
2.83×28.01Xiaomi 15, Xiaomi 14
2.96×18.76Motorola Edge 50 Pro
679iPhone 17e, iPhone Air
3.1×49.61Xiaomi 14T Pro, Xiaomi Redmi Note 14 Pro
3.2×210.24OnePlus 13, OnePlus 12
3.27×310.69Xiaomi 15 Ultra, Xiaomi 14 Ultra
3.28×110.76Nothing Phone (3)
3.5×512.25Samsung Galaxy S20 Ultra, Samsung Galaxy Note 20 Ultra
3.75×314.06Samsung Galaxy S25 Edge, Samsung Galaxy S25+
516Samsung Galaxy S20, Samsung Galaxy S10+

The arithmetic that decides it

A device pixel ratio is a linear multiplier, but the file is two-dimensional. A 2× asset has four times the pixels of a 1× asset; a 3× asset has nine. That is the whole cost model:

  • 1× → 2×: the pixels, roughly 2.5–3× the compressed bytes.
  • 2× → 3×: 2.25× the pixels on top of that, for a difference most people cannot resolve.

Human visual acuity tops out around 300 PPI at typical phone viewing distance. A 3× phone panel is already past it. Rendering a photograph at 3× is spending bandwidth on detail the eye discards — while text and vector UI, which the OS renders at full device resolution regardless, keep their sharpness for free.

What to export at which density

Export density by asset type
Asset typeExport atWhy
Icons, logos, line artSVGResolution-independent. There is no density question. Ship SVG unless the artwork genuinely cannot be vectorised.
UI raster assets (small, hard edges)1× · 2× · 3×Small files, so the third variant is cheap, and hard edges are where 3× is actually visible.
Photographs, hero images1× · 2×Large files, soft detail. The 3× variant is bytes with no perceptual return.
Background textures, gradientsLow-frequency detail. Upscaling is invisible; some are better done in CSS with no image at all.
Screenshots of UI2× nativeScreenshots contain text. Capture on a 2× display and downscale, never upscale a 1× capture.

Let the browser choose

Hard-coding a density in your markup means every device downloads the same file. srcset with w descriptors hands the decision to the browser, which knows the device pixel ratio, the viewport, and — on some connections — the bandwidth.

srcset with width descriptors
<img
  src="/img/hero-800.jpg"
  srcset="/img/hero-400.jpg   400w,
          /img/hero-800.jpg   800w,
          /img/hero-1600.jpg 1600w"
  sizes="(width >= 64rem) 800px, 100vw"
  width="800" height="450"
  alt="…">

sizes is the part people get wrong: it describes how wide the image will be laid out, not how wide the file is. The browser combines it with the device pixel ratio to pick a candidate. Get sizes wrong and the browser will happily download a 1600px file to fill a 320px slot.

Always set width and height attributes as well. They give the browser the aspect ratio before the file arrives, which is what stops the page from jumping — the single cheapest layout-shift fix there is.

The one case where 3× still matters

App icons and launch assets. Those are rendered at fixed physical sizes on 90 of the devices here, and they are small enough that the file-size argument disappears. See app and icon sizes for the full set.

Questions

What does @2x actually mean?

An image with twice the pixel dimensions of its layout size, so it stays sharp on a display that packs two device pixels into each CSS pixel. A 200 × 100 CSS px slot needs a 400 × 200 px file to be crisp at 2×. The @2x suffix itself is an Apple naming convention, not a web standard.

Do I need @3x images for the iPhone?

For raster UI assets with hard edges, it helps. For photographs it does not — the file is roughly 2.25× larger than the @2x version for a difference that is not visible at arm's length. Ship @2x for photography and use SVG wherever the artwork allows it.

How do I know what device pixel ratio a visitor has?

window.devicePixelRatio in JavaScript, or @media (min-resolution: 2dppx) in CSS. But you rarely need to ask — srcset answers it for you at the point where it matters.

Should I use AVIF or WebP?

Both, with <picture> and a JPEG fallback. AVIF compresses best, WebP has wider support in older tooling, and the fallback costs you nothing because only one file is ever downloaded.

Related

More guides

Written by the 1440px editorial team, last reviewed 7 August 2026. Numbers in the tables are computed from the device and framework data this site maintains, so a correction there propagates here. See methodology.