Skip to content

Window Management API browser support

Published Updated

The Window Management API lets a page find out whether the device has more than one screen (window.screen.isExtended) and, after the user grants a permission prompt, read detailed per-screen information to place windows precisely (Window.getScreenDetails()).

  • Legend
  • Yes
  • Partial
  • Flag
  • No
  • Unknown
Browser / PlatformSupportVersionsConfidenceSourceNotes
Chrome (Desktop)Yes100highsource—
Chrome (Android)Yes100highsource1
Edge (Desktop)Yes100highsource2
Firefox (Desktop)No—highsource3
Firefox (Android)No—highsource45
Safari (macOS)No—highsource6
Safari (iOS)No—highsource78
Samsung InternetYes19.0highsource9
WebView (Android)Yes100highsource10
  1. Derived by browser-compat-data mirroring from Chrome.
  2. Derived by browser-compat-data mirroring from Chrome.
  3. No Firefox support is recorded in browser-compat-data.
  4. No Firefox for Android support is recorded in browser-compat-data.
  5. Derived by browser-compat-data mirroring from Firefox.
  6. No Safari support is recorded in browser-compat-data.
  7. No Safari on iOS support is recorded in browser-compat-data.
  8. Derived by browser-compat-data mirroring from Safari.
  9. Derived by browser-compat-data mirroring from Chrome Android.
  10. Derived by browser-compat-data mirroring from Chrome Android.

Source data: /compatibility/window-management.json · Global usage: 72 % (StatCounter 2026-05)

Source: spec · MDN · Last verified 2026-10-03 · Confidence: high (computed from sources)

Request the screen details, then open a window positioned on a specific screen:

async function openOnSecondScreen(url) {
const screenDetails = await window.getScreenDetails();
const target = screenDetails.screens.find(
(screen) => screen !== screenDetails.currentScreen,
);
if (!target) return;
window.open(
url,
'_blank',
`left=${target.availLeft},top=${target.availTop},width=800,height=600`,
);
}

Feature-detect getScreenDetails before calling it, and fall back to opening a plain window when the API — or the permission it requires — is unavailable:

async function openWithScreenDetails(url) {
if (!('getScreenDetails' in window)) {
window.open(url, '_blank');
return;
}
try {
const screenDetails = await window.getScreenDetails();
const target = screenDetails.screens.find(
(screen) => screen !== screenDetails.currentScreen,
);
window.open(
url,
'_blank',
target ? `left=${target.availLeft},top=${target.availTop}` : undefined,
);
} catch {
window.open(url, '_blank');
}
}
  • Window.getScreenDetails() requires the window-management permission — calling it asks the user for permission to manage windows on all their displays.
  • window.screen.isExtended reports whether the device has multiple screens, but it always returns false when the window-management Permissions Policy blocks the API, even on a multi-screen device.
  • Each window.open() call needs its own user gesture in modern browsers, and browsers recommend opening at most one window at a time or reusing an existing window rather than opening several in a row.
  • Keep the fallback path above for browsers where the API is unavailable, so the feature degrades to a normal window.open() call.

← Back to the Compatibility explorer.