Viewport sizes cheat sheet: phones, tablets and desktops
The size of the viewport in CSS pixels, the size in real pixels and the device pixel ratio of 43 phones, tablets, laptops and desktops, drawn to scale. Then the six sizes worth testing.
iPhone 15 Pro
393 x 852
iPad
820 x 1180
MacBook Air 13"
1440 x 900
How big are phone, tablet and desktop viewports, drawn to scale?
Phone viewports are 360 to 448 CSS pixels wide, tablet viewports in portrait are 744 to 1024, and laptop and desktop viewports run from 1280 to 3840. A Full HD desktop is more than five times as wide as a small phone (1920 / 360 = 5.3), which is the whole reason responsive layouts exist.
- Phones
- Tablets
- Laptops and desktops
Phones
- Galaxy S24360 x 780
- iPhone SE375 x 667
- iPhone 15 Pro393 x 852
- iPhone 16 Pro Max440 x 956
Tablets
- iPad mini744 x 1133
- iPad820 x 1180
- iPad Pro 13"1024 x 1366
Laptops and desktops
- Desktop HD1280 x 720
- Laptop1366 x 768
- MacBook Air 13"1440 x 900
- Full HD1920 x 1080
0bar length = width, full bar = 1920 CSS px
360 to 448 px wide
Portrait, tall and narrow: about 19.5:9 or 20:9 on most models. Every one is below the first breakpoint of Tailwind and Bootstrap.
744 to 1024 px wide
Portrait widths. Turned on its side, an 820 x 1180 iPad becomes 1180 x 820 and behaves like a small laptop.
1280 px and up
Landscape, 16:9 or 16:10. The window is often smaller than the screen, so widths between these numbers are normal.
CSS pixels, physical pixels and device pixel ratio
The device pixel ratio (DPR) is the number of physical pixels a screen uses to draw one CSS pixel along one side[2]. A CSS pixel is the unit a layout is written in; a physical pixel is one dot of the screen. Multiply one by the ratio and you have the other.
DPR 1
1 x 1 = 1 physical pixel
DPR 2
2 x 2 = 4 physical pixels
DPR 3
3 x 3 = 9 physical pixels
physical pixels = CSS pixels x DPR
A screenshot is saved in physical pixels, so the same formula gives its size. A 390 pixel wide viewport at DPR 3 gives a 1170 pixel wide image (390 x 3). At DPR 3 the file holds nine times as many pixels as at DPR 1 (3 x 3), with the same layout and sharper text.
Layout only ever looks at CSS pixels. A media query for 768 pixels compares against the viewport, not the panel, so a phone whose screen is 1179 pixels wide still gets the phone layout.
| Device | Viewport x DPR (CSS px) | Screenshot (px) |
|---|---|---|
| iPhone 14 | 390 x 844 x 3 | 1170 x 2532 |
| iPhone 15 Pro | 393 x 852 x 3 | 1179 x 2556 |
| Pixel 8 | 412 x 915 x 2.625 | 1082 x 2402 |
| iPad | 820 x 1180 x 2 | 1640 x 2360 |
| MacBook Air 13" | 1440 x 900 x 2 | 2880 x 1800 |
| Desktop Full HD | 1920 x 1080 x 1 | 1920 x 1080 |
The rendered size is not always the panel
Viewport size table for 43 devices
The table lists the viewport in CSS pixels, the size of a one-screen screenshot in pixels, the device pixel ratio and the aspect ratio of 43 devices. Phones and tablets are in portrait. The rows are generated from the device presets of CurlShot, so each one is a size you can capture by name.
Showing 43 devices: All
| Device | Viewport (CSS px) | DPR |
|---|---|---|
| iPhone SEiphone_se | 375 x 667750 x 1334 px | 2 |
| iPhone 12iphone_12 | 390 x 8441170 x 2532 px | 3 |
| iPhone 13iphone_13 | 390 x 8441170 x 2532 px | 3 |
| iPhone 13 miniiphone_13_mini | 375 x 8121125 x 2436 px | 3 |
| iPhone 14iphone_14 | 390 x 8441170 x 2532 px | 3 |
| iPhone 14 Plusiphone_14_plus | 428 x 9261284 x 2778 px | 3 |
| iPhone 14 Proiphone_14_pro | 393 x 8521179 x 2556 px | 3 |
| iPhone 14 Pro Maxiphone_14_pro_max | 430 x 9321290 x 2796 px | 3 |
| iPhone 15iphone_15 | 393 x 8521179 x 2556 px | 3 |
| iPhone 15 Plusiphone_15_plus | 430 x 9321290 x 2796 px | 3 |
| iPhone 15 Proiphone_15_pro | 393 x 8521179 x 2556 px | 3 |
| iPhone 15 Pro Maxiphone_15_pro_max | 430 x 9321290 x 2796 px | 3 |
| iPhone 16iphone_16 | 393 x 8521179 x 2556 px | 3 |
| iPhone 16 Plusiphone_16_plus | 430 x 9321290 x 2796 px | 3 |
| iPhone 16 Proiphone_16_pro | 402 x 8741206 x 2622 px | 3 |
| iPhone 16 Pro Maxiphone_16_pro_max | 440 x 9561320 x 2868 px | 3 |
| Pixel 5pixel_5 | 393 x 8511081 x 2340 px | 2.75 |
| Pixel 7pixel_7 | 412 x 9151082 x 2402 px | 2.625 |
| Pixel 8pixel_8 | 412 x 9151082 x 2402 px | 2.625 |
| Pixel 8 Propixel_8_pro | 448 x 9981344 x 2994 px | 3 |
| Pixel 9pixel_9 | 412 x 9231082 x 2423 px | 2.625 |
| Pixel 9 Propixel_9_pro | 410 x 9141230 x 2742 px | 3 |
| Galaxy S23galaxy_s23 | 360 x 7801080 x 2340 px | 3 |
| Galaxy S24galaxy_s24 | 360 x 7801080 x 2340 px | 3 |
| Galaxy S24 Ultragalaxy_s24_ultra | 384 x 8241152 x 2472 px | 3 |
| Galaxy A54galaxy_a54 | 360 x 8001080 x 2400 px | 3 |
| iPad (10th gen)ipad | 820 x 11801640 x 2360 px | 2 |
| iPad miniipad_mini | 744 x 11331488 x 2266 px | 2 |
| iPad Airipad_air | 820 x 11801640 x 2360 px | 2 |
| iPad Pro 11"ipad_pro_11 | 834 x 11941668 x 2388 px | 2 |
| iPad Pro 13"ipad_pro_13 | 1024 x 13662048 x 2732 px | 2 |
| Galaxy Tab S9galaxy_tab_s9 | 800 x 12801600 x 2560 px | 2 |
| Pixel Tabletpixel_tablet | 800 x 12801600 x 2560 px | 2 |
| MacBook Air 13"macbook_air_13 | 1440 x 9002880 x 1800 px | 2 |
| MacBook Pro 14"macbook_pro_14 | 1512 x 9823024 x 1964 px | 2 |
| MacBook Pro 16"macbook_pro_16 | 1728 x 11173456 x 2234 px | 2 |
| Laptop (1366 x 768)laptop_hd | 1366 x 7681366 x 768 px | 1 |
| Laptop HiDPI (1440 x 900 @2x)laptop_hidpi | 1440 x 9002880 x 1800 px | 2 |
| Desktop HD (1280 x 720)desktop_hd | 1280 x 7201280 x 720 px | 1 |
| Desktop Full HD (1920 x 1080)desktop_full_hd | 1920 x 10801920 x 1080 px | 1 |
| Desktop QHD (2560 x 1440)desktop_qhd | 2560 x 14402560 x 1440 px | 1 |
| Desktop 4K (3840 x 2160)desktop_4k | 3840 x 21603840 x 2160 px | 1 |
| iMac 24"imac_24 | 2240 x 12604480 x 2520 px | 2 |
Under each device is its preset name. Screenshot size is the viewport multiplied by the DPR, rounded to whole pixels. Aspect ratio is the long side to the short side: the usual name where it is within 0.012 of one, a decimal otherwise.
How these numbers were checked
The iPhone, Pixel 5, Pixel 7, Pixel 8, Galaxy S24 and iPad Pro 11" rows match the screen sizes and pixel ratios in Playwright's published device descriptors[1]. Four rows differ from that catalogue, shown here side by side. Catalogues of Android devices do not always agree, so when the exact number matters, read window.innerWidth, window.innerHeight and window.devicePixelRatio on the device itself.
| Device | This sheet | Playwright |
|---|---|---|
| Pixel 8 Pro | 448 x 998 at 3 | 448 x 997 at 3 |
| Pixel 9 | 412 x 923 at 2.625 | 360 x 808 at 3 |
| Pixel 9 Pro | 410 x 914 at 3 | 427 x 952 at 3 |
| Galaxy Tab S9 | 800 x 1280 at 2 | 640 x 1024 at 2.5 |
Where do devices fall against Tailwind and Bootstrap breakpoints?
The default breakpoints of Tailwind CSS are 640, 768, 1024, 1280, 1536 pixels[6] and those of Bootstrap 5.3 are 576, 768, 992, 1200, 1400 pixels[7]. Each is a minimum width: its styles apply at that viewport width and above. Every phone in this sheet sits below the first one.
- Phones
- Tablets
- Laptops and desktops
Tailwind CSS
sm 640md 768lg 1024xl 12802xl 1536360 to 448744 to 8341024128013661440151217281920Bootstrap
sm 576md 768lg 992xl 1200xxl 1400Tailwind CSS ranges
| Width (CSS px) | Prefix in effect | Presets |
|---|---|---|
| 0 to 639 | base | 26 |
| 640 to 767 | sm | 1 |
| 768 to 1023 | md | 5 |
| 1024 to 1279 | lg | 1 |
| 1280 to 1535 | xl | 5 |
| 1536 and up | 2xl | 5 |
Bootstrap ranges
| Width (CSS px) | Breakpoint in effect | Presets |
|---|---|---|
| 0 to 575 | xs | 26 |
| 576 to 767 | sm | 1 |
| 768 to 991 | md | 5 |
| 992 to 1199 | lg | 1 |
| 1200 to 1399 | xl | 2 |
| 1400 and up | xxl | 8 |
Pick breakpoints from the content, not from this list
Which viewport sizes should you test?
Six viewport sizes make a practical test set: 360 x 800, 393 x 852, 820 x 1180, 1280 x 720, 1440 x 900, 1920 x 1080. Each one is there for a reason you can check against the table and the breakpoints above, not because of a popularity figure.
360 x 800
Small Android phone (Galaxy S23, S24 and A54 are 360 wide)
360 is the narrowest width of all the presets in this sheet. Text that overflows, a table that is too wide or a button row that wraps shows up here first.
393 x 852
Current iPhone (iPhone 14 Pro, 15, 15 Pro and 16)
Four iPhone presets and the Pixel 5 share the 393 width, and 390 and 402 sit within 9 pixels of it. One capture here stands for the middle of the phone range.
820 x 1180
Tablet in portrait (iPad 10th generation, iPad Air)
820 falls between the md and lg breakpoints of both Tailwind (768 and 1024) and Bootstrap (768 and 992), so it is the size that shows the in-between layout a phone and a laptop never do.
1280 x 720
Small laptop or a browser window that is not maximized
1280 is exactly the xl breakpoint of Tailwind and the viewport of the desktop browser descriptors in Playwright. A layout that only just switches to its desktop form is tested at its edge.[1]
1440 x 900
Laptop (MacBook Air 13" and other HiDPI laptops)
1440 is above the largest Bootstrap breakpoint (1400) and below the largest Tailwind one (1536): the common "full desktop layout, not yet extra wide" case.
1920 x 1080
Full HD desktop monitor
1920 is wider than every default breakpoint of both frameworks, so it shows whether the content stops at a maximum width or stretches into lines too long to read.
Then add your own breakpoints, twice each
@media (width >= 48rem) is off at 767 and on at 768[6].How to screenshot a page at any viewport size
A screenshot at a given viewport needs three numbers: width, height and device pixel ratio. In the CurlShot API they are viewport_width, viewport_height and device_scale_factor, or one preset name in viewport_device.
A phone or tablet preset also turns on the mobile layout, touch and the device's user agent, which is what makes a site serve its phone version. Anything you send yourself wins over the preset. Without code, the mobile screenshot tool does the same from a pasted address, and the devices page of the docs covers landscape and overrides.
curl "https://curlshot.com/api/v1/screenshot?access_key=YOUR_ACCESS_KEY&url=https://example.com&viewport_device=iphone_15_pro" \
--output phone.pngcurl "https://curlshot.com/api/v1/screenshot?access_key=YOUR_ACCESS_KEY&url=https://example.com&viewport_width=360&viewport_height=800&viewport_mobile=true&device_scale_factor=2" \
--output small-phone.png| Option | What it does | Values |
|---|---|---|
| viewport_width | Width of the viewport in CSS pixels. | 100 to 3840, default 1280 |
| viewport_height | Height of the viewport in CSS pixels. | 100 to 4320, default 1024 |
| device_scale_factor | The device pixel ratio. It multiplies the size of the image. | 1 to 3, default 1 |
| viewport_device | A named preset: sets width, height, device pixel ratio, mobile layout, touch and user agent in one go. | any name in the table above |
| viewport_mobile | Treats the page as a phone does, so the viewport meta tag of the page is respected. | true or false, default false |
| viewport_landscape | Turns a portrait viewport on its side. | true or false, default false |
Viewport glossary
Nine terms that get mixed up, each in one or two sentences, with the page it was checked against.
- Viewport
- The area of the browser window that a web page is drawn in. Toolbars, tabs and the address bar (the browser chrome) are not part of it. Its size is measured in CSS pixels and it is what media queries respond to.[3]
- CSS pixel
- The unit px in CSS, defined as exactly 1/96 of a CSS inch. It is a unit of layout, not a dot on the screen: one CSS pixel is drawn with one, four, nine or some other number of physical pixels, depending on the screen.[4]
- Physical pixel (device pixel)
- One dot of the screen itself, the smallest thing the hardware can light. The physical pixels of a screen are counted by its resolution.
- Device pixel ratio (DPR)
- The ratio of the resolution in physical pixels to the resolution in CSS pixels: how many physical pixels are used to draw one CSS pixel along one side. 1 is a classic 96 DPI display, 2 is expected for HiDPI and Retina displays. A page reads it from window.devicePixelRatio.[2]
- Resolution
- The number of physical pixels of a screen, written width by height. Apple lists the iPhone 15 Pro at 2556 by 1179 pixels, which is its 393 x 852 viewport multiplied by 3.[8]
- Layout viewport
- The area the page is laid out in: the space inside window.innerWidth and window.innerHeight. It does not change when the reader pinches to zoom.[3]
- Visual viewport
- The part of the page that is visible right now. It leaves out the on-screen keyboard and whatever is outside a pinch-zoom, so it is the same size as the layout viewport or smaller.[3]
- Viewport meta tag
- The tag <meta name="viewport" content="width=device-width"> in the head of a page. Without it, mobile browsers lay the page out in a virtual viewport that is typically 980 pixels wide and shrink the result to fit the screen.[3]
- Breakpoint
- A viewport width at which a media query is introduced and the layout changes, for example from one column to two.[5]
Questions people ask
What is the viewport size of an iPhone?
It depends on the model. iPhone SE: 375 x 667. iPhone 13 mini: 375 x 812. iPhone 12, 13 and 14: 390 x 844. iPhone 14 Pro, 15, 15 Pro and 16: 393 x 852. iPhone 14 Plus: 428 x 926. iPhone 14 Pro Max, 15 Plus, 15 Pro Max and 16 Plus: 430 x 932. iPhone 16 Pro: 402 x 874. iPhone 16 Pro Max: 440 x 956. All are in CSS pixels, in portrait, with a device pixel ratio of 3 (2 for the iPhone SE).
What is the difference between viewport size and screen resolution?
The viewport size is measured in CSS pixels and decides the layout of a page. The screen resolution counts physical pixels and decides how sharp it looks. The two are linked by the device pixel ratio: resolution = viewport x DPR. An iPad with an 820 x 1180 viewport and a DPR of 2 has a 1640 x 2360 pixel screen.
What is device pixel ratio?
Device pixel ratio (DPR) is the number of physical pixels used to draw one CSS pixel along one side. At a DPR of 2, one CSS pixel is a 2 x 2 block of 4 physical pixels; at 3 it is a 3 x 3 block of 9. A page can read the value from window.devicePixelRatio.
Which screen sizes should I test a responsive website at?
Six widths make a practical set: 360 (small phone), 393 (current iPhone), 820 (tablet in portrait), 1280 (small laptop), 1440 (laptop) and 1920 (Full HD desktop). Add each of your own breakpoints, tested at the breakpoint and one pixel below it, because that is where a layout flips.
Why is my phone screenshot bigger than the viewport?
Because a screenshot is saved in physical pixels. A phone with a 393 x 852 viewport and a device pixel ratio of 3 produces a 1179 x 2556 pixel image, nine times as many pixels as the viewport numbers suggest. The layout is the same; only the sharpness changes.
Do media queries use CSS pixels or physical pixels?
CSS pixels. A rule such as @media (width >= 768px) compares against the width of the viewport in CSS pixels, so a phone with a 1179 pixel wide screen and a 393 pixel wide viewport still gets the phone layout.
How do I take a screenshot at a specific viewport size with CurlShot?
Send viewport_width and viewport_height in CSS pixels and, for a sharper image, device_scale_factor from 1 to 3. Or send viewport_device with a preset name such as iphone_15_pro, which sets the size, the pixel ratio, the mobile layout and the user agent together.
Sources
- [1]Microsoft Playwright on GitHub, deviceDescriptorsSource.json (device descriptors). Checked .
- [2]MDN Web Docs, Window: devicePixelRatio property. Checked .
- [3]MDN Web Docs, Viewport concepts. Checked .
- [4]MDN Web Docs, CSS pixel (glossary). Checked .
- [5]MDN Web Docs, Responsive web design. Checked .
- [6]Tailwind CSS, Responsive design (default breakpoints, v4.3). Checked .
- [7]Bootstrap, Breakpoints (v5.3). Checked .
- [8]Apple Support, iPhone 15 Pro, technical specifications. Checked .
- [9]Apple Support, iPhone 13 mini, technical specifications. Checked .
- [10]web.dev (Google), Responsive web design basics. Checked .
Read next
- How-toFull-page screenshot on every device and browserExact keys and menu names to screenshot a whole web page in Chrome, Firefox, Edge, Safari, iPhone, iPad and Android, checked against each vendor.
- Field guideWhy website screenshots look wrong, and the fixesA field guide to 11 ways a website screenshot goes wrong, from blank lazy images to cookie banners and cut-off pages, with the cause and the fix for each.
- Cheat sheetSocial preview image sizes: the OG cheat sheetOpen Graph image sizes for Facebook, LinkedIn, WhatsApp, iMessage, Discord, Slack and Google Discover, drawn to scale, with the tags and the fixes.