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:
- 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.
- 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.
- 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
100svhinstead of100vhfor 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.