Responsive Design Tester
Preview any website at a real device viewport — iPhone, Android, iPad, laptop or desktop. The page genuinely lays out at that width, so its own media queries fire and you see what the phone would see. Rotate it, zoom it, or line several devices up side by side.
- Free
- No signup
- 30 device presets
- Real viewport sizes
- Nothing uploaded
Straight answers
Is this a real viewport?
Yes. The frame is set to the exact CSS width, so the page's own media queries fire. It is not a scaled screenshot.
Why do some sites not load?
They send X-Frame-Options or a CSP frame-ancestors rule. No browser tool can bypass that — use the popup or QR instead.
Does anything get uploaded?
No. Your browser fetches the site directly. ToolAdda has no server that could see the URL or the page.
Can I test localhost?
Yes, if your machine can reach it. Note that http:// in an HTTPS page is blocked as mixed content — the popup still works.
How to test a site
- Paste the address. Just the domain is fine —
example.combecomeshttps://example.comautomatically. Local servers work too: typelocalhost:3000and it is fetched from your own machine. - Pick a device. The list is grouped into phones, tablets, and laptops and desktops, and every entry shows its real CSS viewport size. If the device you need is missing, type any width and height into the custom fields.
- Rotate and zoom. Rotate swaps width and height, which is the fastest way to catch the landscape bugs nobody tests for. Zoom is purely visual — the page inside still believes it is the full device width, so scaling to 50% to fit a laptop screen does not change a single media query.
- Compare. Tick Compare devices to line up to six viewports next to each other. This is where a broken breakpoint becomes obvious: the layout that works at 390 and at 1440 is often the one that falls apart at 768.
- Share what you found. Copy share link produces a URL carrying the site, device and orientation, so a colleague opens the exact view you are looking at.
Testing markup you have not deployed yet
Switch to Paste HTML and drop in a full document or a fragment. It renders in the same device frames without needing a server, a tunnel or a deploy — useful for checking an email template, a component, or a layout you are still writing. This mode never hits the framing wall, because nothing is being fetched from another origin.
The pasted markup runs in a sandboxed frame with its own opaque origin. Its scripts execute so you can test interactive components, but it cannot read this page, its storage or its cookies.
Device viewport sizes reference
These are CSS viewport widths — the number a media query actually compares against — not panel resolutions. The device pixel ratio is the multiplier between the two, and it decides which image a srcset serves.
| Device | CSS viewport | DPR | Panel pixels |
|---|---|---|---|
| iPhone SE (3rd gen) | 375 × 667 | 2 | 750 × 1334 |
| iPhone 13 / 14 | 390 × 844 | 3 | 1170 × 2532 |
| iPhone 15 / 16 | 393 × 852 | 3 | 1179 × 2556 |
| iPhone 15 / 16 Pro Max | 430 × 932 | 3 | 1290 × 2796 |
| Galaxy S22 / S24 | 360 × 780 | 3 | 1080 × 2340 |
| Galaxy S23 Ultra | 384 × 824 | 3.75 | 1440 × 3088 |
| Pixel 7 / 7 Pro | 412 × 915 | 2.625 | 1080 × 2400 |
| Galaxy Z Fold (open) | 768 × 812 | 2.6 | 1812 × 2176 |
| iPad mini | 768 × 1024 | 2 | 1536 × 2048 |
| iPad Air | 820 × 1180 | 2 | 1640 × 2360 |
| iPad Pro 12.9" | 1024 × 1366 | 2 | 2048 × 2732 |
| Laptop | 1366 × 768 | 1 | 1366 × 768 |
| MacBook Pro 16" | 1728 × 1117 | 2 | 3456 × 2234 |
| Desktop FHD | 1920 × 1080 | 1 | 1920 × 1080 |
The readout above the preview also names the Tailwind and Bootstrap breakpoint the current width falls into, so you can tell at a glance whether you are testing the md layout or the lg one instead of doing the arithmetic in your head.
What a viewport preview can and cannot tell you
A device preview is a layout instrument. Set the width to 390 pixels and the page inside genuinely believes it is 390 pixels wide: @media (max-width: 480px) matches, container queries resolve, vw units compute against the real number, and a grid that was told to collapse below md collapses. That covers the large majority of responsive bugs, and it catches them in seconds rather than after a deploy.
What it genuinely catches
- Horizontal overflow. The single most common mobile bug: one element with a fixed width or a stubborn
min-widthwider than the screen, and the whole page scrolls sideways. At a real narrow viewport it is immediately visible. - Breakpoint gaps. Layouts are usually tested at phone width and desktop width. The failures hide in between — around 768 and 1024, where a three-column grid has not yet collapsed but no longer fits.
- Landscape. Rotate a phone and the viewport becomes short rather than narrow. Anything relying on
100vh, or a sticky header plus a sticky footer, tends to break here first. - Text and tap targets. Copy that reflows to nine words per line, or buttons that end up too small or too close together, show up at the real width.
- Foldables and small phones. 344 pixels on a closed Z Flip and 768 on an open Z Fold are both genuinely awkward, and almost nobody tests them.
What it cannot do — and why
Being clear about the limits is the difference between a useful tool and a misleading one:
- It is not Safari on iOS. The preview uses your own browser engine. A rendering bug specific to WebKit, or to a particular Android WebView, will not reproduce here. Nothing running inside Chrome can genuinely emulate another engine.
- Touch is not simulated. You are still using a mouse. Hover states,
:activebehaviour, momentum scrolling and gesture handling all behave like a desktop. - Performance is your machine's. The page loads over your connection with your CPU. It says nothing about how it will feel on a mid-range phone on a slow network.
- Screenshots are impossible. The same-origin policy prevents this page from reading the pixels inside a cross-origin frame. Any browser-only tool offering to screenshot an arbitrary site is doing it on a server. Your operating system's screenshot shortcut works fine.
Treat it as the fast first pass that catches most problems, then confirm on real hardware — which is exactly what the QR code button is for.
Why some sites refuse to load
If the preview stays blank, the site is almost certainly sending one of these:
X-Frame-Options: DENYorSAMEORIGINContent-Security-Policy: frame-ancestors 'none'
Both exist to prevent clickjacking — an attacker framing a real banking page invisibly over their own buttons. The browser enforces the refusal, and there is no client-side trick that gets around it; that is the entire point of the header. Google, Facebook, most banks, GitHub and X all set it.
Tools that do preview those sites are running a server-side proxy: their backend fetches the page, strips the header, and serves you a copy. That works, but it means the URL and every response pass through somebody else's machine. This tool has no server at all, so it takes the honest route instead and gives you two things that work on any site:
- Open at this size launches a genuine browser window at the exact device dimensions. A window is a top-level browsing context, so framing headers simply do not apply — every site opens.
- QR code puts the address on the phone in your hand, which is the only truly authoritative test anyway.
Frequently asked questions
Why does a website show a blank frame?
Because it sends an X-Frame-Options or CSP frame-ancestors header telling browsers not to display it inside a frame. It is a deliberate anti-clickjacking measure and no browser-based tool can override it. Use Open at this size for a real window, or the QR code to open it on a phone.
Is this the same as testing on a real phone?
It is the same viewport, not the same device. The layout is genuine — media queries fire at the real width — which catches most responsive bugs. It cannot reproduce the phone's browser engine, touch behaviour, network speed or font rendering. Use it as the fast first pass and confirm on hardware.
Do you upload the URL or the page anywhere?
No. The preview is an ordinary iframe rendered by your browser, so the request goes straight from your machine to the site, exactly as if you had typed the address. ToolAdda has no server that could receive the URL, the page or the pasted HTML.
Can I preview localhost or a staging site?
Yes, provided your own browser can reach it — type localhost:3000 and it loads from your machine. One caveat: this page is HTTPS, so an http:// address is blocked as mixed content and looks like a framing refusal. Open at this size is unaffected.
Why is an iPhone 15 Pro Max only 430 pixels wide?
Because CSS pixels are not hardware pixels. The panel is 1290 pixels across, but the phone reports a 430 pixel viewport and packs three hardware pixels into each CSS pixel. Media queries respond to the CSS width, so 430 is the number that matters for layout. The DPR shown beside each preset is that multiplier, and it decides which srcset image is served.
Can it take a screenshot of the preview?
No. The same-origin policy stops this page from reading the pixels of a cross-origin frame, so a browser-only tool cannot capture one. Anything that offers this is capturing it on a server. Your operating system's screenshot shortcut captures the preview perfectly well.
Does zooming out change the test?
No, and that is the point. Zoom is a visual transform on the outside of the frame. The page inside still reports the full device width, so scaling a 1920 pixel desktop view down to fit your laptop does not shift a single breakpoint.
Does it remember my last URL and device?
Yes, in your browser's local storage on this device only. It never leaves your machine, and clearing your browser data removes it. A shared link always takes priority over the stored values.
Related tools
This tester runs entirely in your browser. The preview is a standard <iframe>, so the request for the site you enter goes directly from your machine to that site — ToolAdda operates no server and never sees the address, the page, or any HTML you paste. Device dimensions are the CSS viewport sizes those devices report; a preview reproduces layout faithfully but not a device's browser engine, touch behaviour or performance, so treat real hardware as the final word.