Devices7 min read·

How much of the screen iPhone users actually see in Safari

The status bar and Safari take 156px of an iPhone 17 Pro's 874px screen. Visible heights for every current iPhone, and what it means for 100vh and dvh.

On a current iPhone, Safari shows your page in about 82–84% of the screen's height when it first loads. An iPhone 17 Pro has a 402×874 CSS px screen, but the status bar (62px) and iOS 26 Safari's compact bottom bar (94px) leave 718px for the page. Once the visitor scrolls, the bars shrink and the page gains about 36px.

Below: the numbers for every current iPhone, and the CSS changes they call for.

Where the pixels go

Safari on iOS 26 defaults to the compact tab bar, which puts the address bar at the bottom of the screen. On first load, with the bars fully expanded, the page loses space at both ends:

What Height (CSS px) Which iPhones
Status bar 62 Dynamic Island models from the iPhone 16 Pro on: 16 Pro and Pro Max, 17, 17 Pro and Pro Max, Air, 18 Pro and Pro Max
Status bar 59 Dynamic Island models from the 14 Pro to the 16 Plus
Status bar 47–50 Notch models: 12 to 14, 16e, 17e (47), 12 and 13 mini (50), 11 and XR (48)
Status bar 20 iPhone SE (home button)
Safari bottom bar 94 Every Face ID iPhone
Safari bottom bar 64 iPhone SE (home button)

These come from the device data behind doesitfit's Browser bars mode. The iPhone 16 Pro was measured directly: a 402×874 screen gives 718px of visible page. After scrolling, the bars shrink and the page gains about 36px, so roughly 754px.

Visible height on every current iPhone

Visible height = screen height − status bar − Safari's bar. Only the iPhone 16 Pro row was measured; the rest apply the same bar heights to each screen, so treat them as first-load estimates.

iPhone Screen (CSS px) The math Visible on first load
iPhone 18 Pro Max, 17 Pro Max, 16 Pro Max 440×956 956 − 62 − 94 800
iPhone 14 Plus / 13 Pro Max / 12 Pro Max 428×926 926 − 47 − 94 785
iPhone 16 Plus, 15 Pro Max / 15 Plus, 14 Pro Max 430×932 932 − 59 − 94 779
iPhone Air 420×912 912 − 62 − 94 756
iPhone 11 / XR 414×896 896 − 48 − 94 754
iPhone 18 Pro, 17 Pro, 17, 16 Pro 402×874 874 − 62 − 94 718 (measured on 16 Pro)
iPhone 17e, 16e, 14 / 13 / 12 390×844 844 − 47 − 94 703
iPhone 16, 15 / 15 Pro, 14 Pro 393×852 852 − 59 − 94 699
iPhone 13 mini / 12 mini 375×812 812 − 50 − 94 668
iPhone SE (2nd & 3rd gen) 375×667 667 − 20 − 64 583

So the "fold" on an iPhone sits somewhere between 583 and 800px, and on the most common current sizes it's around 700–720px. The screen-size pages have the full detail for each: 402×874, 440×956, 393×852, 390×844 and 375×667. Every model is listed on the iPhone hub.

On their side

In landscape the status bar goes away, Safari shows a compact address bar at the top (about 44px) and leaves a strip for the home indicator at the bottom (about 21px). These are estimates:

iPhone on its side Width Visible height
iPhone 17 Pro Max 956 440 − 44 − 21 = 375
iPhone Air 912 420 − 44 − 21 = 355
iPhone 17 Pro, 17, 16 Pro 874 402 − 44 − 21 = 337
iPhone 16, 15 852 393 − 44 − 21 = 328
iPhone 17e, 14 844 390 − 44 − 21 = 325

That's tablet-layout width with only 325–375px of height. Your md or tablet layout, sticky header and all, is what shows up here. There's a media query for exactly this case in responsive breakpoints in 2026.

Compared with Android

Chrome on Android takes a device-specific status bar, a 56px toolbar and a 24px gesture bar. A Pixel 10 (924 tall) keeps about 924 − 58 − 56 − 24 = 786px; a Galaxy S25 (780 tall) about 780 − 40 − 56 − 24 = 660px. When the visitor scrolls, Chrome hides its toolbar and the gesture chin and the page gains about 80px.

What it means for your design

Above the fold is about 700px, not 874

If your headline, one line of explanation and the main button fit in the top 580px of the page, they're visible on every iPhone in the table, including the SE. Fit them in 700px and they're visible on every current model. Design mockups at 402×874 with no browser bars drawn in are about 156px too optimistic.

100vh is taller than what's visible

Safari sizes 100vh to the large viewport, the one you get after the bars have shrunk (web.dev explains the three viewports). On first load that's taller than the 718px the visitor can see, so the bottom of a height: 100vh hero, often exactly where the button is, sits under Safari's bar.

The newer units fix it:

.hero {
  min-height: 100vh;  /* fallback for older browsers */
  min-height: 100svh; /* fits with Safari's bars showing */
}

svh is the small viewport (bars showing), lvh the large one (bars hidden), and dvh follows the bars as they move. svh is the calm choice for a hero; dvh resizes while people scroll, which can make the page jump. All three have worked in Safari, Chrome and Firefox since 2022. The full story, including fallbacks, is in 100vh on mobile is broken, and the units are documented on MDN's CSS length page.

Fixed bars come out of the same 718px

Every fixed element eats into what's left. On an iPhone 17 Pro:

  • a 64px sticky header leaves 718 − 64 = 654px
  • add a 72px sticky "Buy now" bar and you're down to 582px
  • add a cookie banner and the page itself may barely be visible

Keep one fixed bar at most, and keep it slim.

Fixed bottom buttons and the home indicator

If you want a full-screen look, where your page's colours run under the status bar and home indicator, you opt in with viewport-fit=cover in the meta viewport tag. Then pad anything fixed to the bottom with the safe-area inset, so it clears the home indicator once Safari's bar shrinks away:

<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
.buy-bar {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  padding: 12px 16px calc(12px + env(safe-area-inset-bottom));
}

/* Leave room so the last bit of the page isn't hidden behind the bar */
body {
  padding-bottom: calc(72px + env(safe-area-inset-bottom));
}

env() and the safe-area variables are documented on MDN, and WebKit's own guide is Designing Websites for iPhone X. It's old, but the safe-area rules it introduced still apply.

Measuring it in JavaScript

If a script needs the visible height, don't use screen.height: on an iPhone 17 Pro that's 874, bars and all. window.innerHeight gives the height of the page's viewport and changes as Safari's bars shrink and grow, firing a resize event each time:

function showViewport() {
  console.log(`${window.innerWidth} × ${window.innerHeight}`);
}
window.addEventListener('resize', showViewport);
showViewport();

The on-screen keyboard is a separate story. When it opens, iOS Safari doesn't shrink the layout viewport; the Visual Viewport API (window.visualViewport.height) is what tells you how much is left above the keyboard. Keep that in mind for forms with a submit button pinned to the bottom.

The iPhone Duo is a different case: on its outer screen Safari's buttons live in a strip down the side, so pages get 382px of width. See iPhone Duo for web developers.

See it on your own site

Three quick ways to check:

  1. On a real iPhone: open /whats-my-viewport in Safari. It shows the width and height a page actually gets on that phone, live, in CSS pixels.
  2. Without an iPhone: turn on Browser bars in doesitfit. It draws the status bar and Safari's bar at the heights above on every iPhone at once, so the page area you see is the visible area, not the whole screen. Add Rotate for landscape. More options in testing on mobile without a phone.
  3. In DevTools: set a custom size of 402×718 rather than 402×874. It's crude, but it shows the first-load fold properly.

Does your site fit?

Paste your address (or localhost:3000). doesitfit shows it on real screen sizes at once and tells you, bluntly, where it spills.

Free, no sign-up. Or ask Claude, ChatGPT or Codex to check it.

What to take away

  • On first load, iPhone users see 583–800px of height, and about 700–720px on the most common current models.
  • The iPhone 17 Pro's 874px screen gives 718px of page (measured on the same-size 16 Pro), about 754px after scrolling.
  • On their side, current iPhones show only about 325–375px of height.
  • Use 100svh instead of 100vh for anything that must fit on first load.
  • Budget fixed headers and bottom bars out of the visible height, and pad bottom bars with env(safe-area-inset-bottom).

Questions people ask

How tall is Safari's bottom bar on iOS 26?

With the compact tab bar, which is the iOS 26 default, and the bars expanded as they are on first load, it takes about 94 CSS px on Face ID iPhones and 64px on iPhones with a home button.

Does the visible area change when the visitor scrolls?

Yes. As the visitor scrolls down, Safari shrinks its bars and the page gains roughly 36px of height; they come back when the visitor scrolls back up. Anything sized in dvh resizes as that happens.

Should I use 100vh, 100svh or 100dvh on iPhone?

Use 100svh for sections that must fit on first load, and 100dvh only when something has to follow the bars as they move. Plain 100vh is sized for the bars-collapsed state, so it is taller than what visitors see at first.

Why is my fixed bottom button hidden behind the home indicator?

If your meta viewport uses viewport-fit=cover, the page runs to the very bottom of the screen. Add env(safe-area-inset-bottom) to the button's bottom padding so it clears the home indicator.

Keep reading