Adjusi
Open any page on phone, tablet and desktop screens at once, drag the frames to any size, test your media queries and share the view as a link. It runs in your browser and needs no account.
Quick start
- Open the workbench and paste an address, for example
example.comorhttp://localhost:3000. - Press Check page. Three screens open by default (phone, tablet, laptop).
- Switch screens on and off in the Devices list, drag a frame’s edge, or type a number on its dimension line.
Load methods
| Method | What it does | Use it when |
|---|---|---|
| Auto | Asks the Adjusi server whether the site allows embedding. Loads it directly if it does, through the proxy if it does not. | You are not sure. The default when the server is available. |
| Direct | Loads the page itself in each frame, exactly as in a normal tab. Cookies, logins and localhost work. | Your own site, staging, localhost, or a page behind a login. |
| Proxy | The Adjusi server fetches the page and shows it in a sandbox, with images and styles routed through it. | A site that blocks embedding. Some scripts and images may not load. |
On a server without the Adjusi API (a static host, or local development) only Direct is offered. Auto and Proxy are switched off, not hidden.
Screens and sizes
Fifteen presets cover phones from the folded Galaxy Z Fold (280 px wide) to the iPhone 16 Pro Max, tablets, laptops and desktops up to 2560 px. Sets such as Essentials or All phones switch a group on in one tap.
- Custom size: any width and height from 200 to 4000 px. Add a frame at a Tailwind breakpoint (
sm640 to2xl1536) with one tap. - Resize: drag the right edge, bottom edge or corner of a frame. A resized preset becomes a Custom frame.
- Rotate swaps width and height, per frame or for all.
- View: Fit scales every frame to the canvas. 100%, 75%, 50% and 25% are fixed zooms. Frames show real CSS pixels, scaled for display.
- Up to 12 screens at once.
Media queries
Type a query such as (min-width: 768px). Each frame shows Matches or No match. The query is evaluated in a hidden blank document with exactly the frame’s width and height, so the answer does not depend on the page and works on any site.
Find where it flips sweeps widths from 200 to 2560 px and lists the exact pixel where the query starts or stops matching. Tap a result to add a frame at that width. The sweep changes width only; queries on height or orientation are answered per frame.
Adjusi cannot force another site’s prefers-color-scheme or hover state, so those queries describe your browser, not a phone.
Follow and scroll together
A browser hides a framed page’s address and scroll position from the page that frames it. In Proxy mode Adjusi adds the reporting itself. On your own site, add one line before the closing </body>:
<script src="https://sifency.com/adjusi/adjusi-sync.js" async></script>
Every frame then follows the page you navigate to and scrolls with the others (position travels as a ratio, so frames of different heights stay level). The script does nothing outside a frame and talks only to the window that framed it. Untick Scroll together to turn scrolling off.
Share and report
Share link copies the address bar, which always holds the page, screens, sizes, query and zoom. Open it and you see the same view. Links are decoded defensively: unknown devices and out-of-range sizes are dropped.
Report builds one page of Markdown: the page, the screens with sizes, query results, the flip widths if you ran the sweep, and the note you wrote on each frame (the note button in a frame’s header). Copy it into a ticket, or print it (only the report prints). Notes are not saved between visits.
Keyboard
| / | Focus the address box |
| R | Rotate every frame |
| F | Fit to the canvas |
| Esc | Close the panel or the report |
Shortcuts are ignored while you type in a field. On a phone the tools open from the Devices & tools button.
Privacy
- In this browser: your screens and custom sizes, the media query, the zoom and your last five addresses, in local storage under
adjusi:v1. Clear site data to remove them. - Direct mode sends nothing to Adjusi. The page loads from its own server.
- Auto and Proxy send the address you check to the Adjusi server. It does not store pages or addresses. It uses your IP address only to limit how often it is called.
- Proxied pages run in a sandbox without access to Adjusi’s cookies or storage.
Limits
- Frames check layout: widths, breakpoints, wrapping. They do not reproduce touch input, a mobile browser engine or hardware. Keep a real-device pass.
- Only
httpandhttpsaddresses. The proxy refuses private and local addresses; use Direct for localhost. - Proxy: 15 second timeout, pages up to 8 MB, assets up to 20 MB, and a per-visitor rate limit.
- An
httppage cannot load inside anhttpsAdjusi, except localhost in most browsers.
Troubleshooting
The frame is blank or shows an error
The site sends X-Frame-Options or a CSP frame-ancestors rule that forbids embedding. Use Auto or Proxy where available. On your own site, relax those headers for staging.
A proxied page looks unstyled or is missing images
Some scripts build addresses at run time in ways Adjusi cannot rewrite, and some sites refuse requests that do not come from them. Open the page in a new tab to confirm what it should look like.
Clicking a link moves only one frame
Add adjusi-sync.js to your own site (see above). Other sites hide their address from Adjusi.
Scrolling does not sync
It needs Proxy mode or adjusi-sync.js, and the box Scroll together ticked.
“That media query isn’t valid”
Write the full query in brackets, for example (min-width: 768px) and (max-width: 1023px).
Changelog
1.0.0
- Fifteen device presets, custom sizes, Tailwind breakpoint frames, drag to resize with live dimensions, rotate, fit and zoom.
- Media query tester and Find where it flips.
- Auto, Direct and Proxy load methods, with an SSRF-guarded, rate-limited proxy server.
- Shareable links, saved layout, recent addresses, notes and a Markdown or printed report.
- Follow navigation and scroll together with
adjusi-sync.jsand in Proxy mode.