Codectionary / Developer documentation / HTML

Declarative Popover Controls

The popover attribute and popovertarget buttons create a nonmodal top-layer panel without JavaScript. An auto popover supports light dismissal and Escape dismissal. It does not automatically become a menu or dialog, and older browsers may need a fallback; check support before depending on this interaction.

Syntax

<button popovertarget="help">Help</button>
<div id="help" popover>Help text</div>

Examples

Declarative Popover Controls: working example

Save as an HTML file and open it in a browser. Expected result: In supporting browsers, Delivery help opens a panel; Close, Escape, or a click outside dismisses it.

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Working example</title>
</head>
<body>
<button type="button" popovertarget="help">Delivery help</button>
<div id="help" popover>
  <h2>Delivery times</h2>
  <p>Orders usually arrive within three working days.</p>
  <button type="button" popovertarget="help" popovertargetaction="hide">Close</button>
</div>
</body>
</html>
  1. Expected result: In supporting browsers, Delivery help opens a panel; Close, Escape, or a click outside dismisses it.
  2. The button targets the panel by its ID.
  3. A popover is nonmodal: it does not make the rest of the page inert.

Best practices

  • Use a modal dialog when the interaction requires modal focus behavior.
  • Do not put essential information exclusively behind an unsupported control.

Browser compatibility

Support applies to the named feature, not every attribute or behaviour in this article. Versions refer to browsers, not operating systems.

popover

Desktop

Chrome
Supported
From 114
Firefox
Supported
From 125
Safari
Supported
From 17
Edge
Supported
From 114
Opera
Supported
From 100

Mobile

Safari on iOS
Supported
From 17
Chrome for Android
Supported
From 114
Firefox for Android
Supported
From 125
Samsung Internet
Supported
From 23.0

MDN BCD record for this feature · MDN reference

Support history and limitations

Chrome

  • From 114

Firefox

  • From 125

Safari

  • From 17

Edge

  • From 114

Opera

  • From 100

Safari on iOS

  • From 17

Chrome for Android

  • From 114

Firefox for Android

  • From 125

Samsung Internet

  • From 23.0
<button> popovertarget

Desktop

Chrome
Supported
From 114
Firefox
Supported
From 125
Safari
Supported
From 17
Edge
Supported
From 114
Opera
Supported
From 100

Mobile

Safari on iOS
Supported
From 17
Chrome for Android
Supported
From 114
Firefox for Android
Supported
From 125
Samsung Internet
Supported
From 23.0

MDN BCD record for this feature · MDN reference

Support history and limitations

Chrome

  • From 114

Firefox

  • From 125

Safari

  • From 17

Edge

  • From 114

Opera

  • From 100

Safari on iOS

  • From 17

Chrome for Android

  • From 114

Firefox for Android

  • From 125

Samsung Internet

  • From 23.0
<button> popovertargetaction

Desktop

Chrome
Supported
From 114
Firefox
Supported
From 125
Safari
Supported
From 17
Edge
Supported
From 114
Opera
Supported
From 100

Mobile

Safari on iOS
Supported
From 17
Chrome for Android
Supported
From 114
Firefox for Android
Supported
From 125
Samsung Internet
Supported
From 23.0

MDN BCD record for this feature · MDN reference

Support history and limitations

Chrome

  • From 114

Firefox

  • From 125

Safari

  • From 17

Edge

  • From 114

Opera

  • From 100

Safari on iOS

  • From 17

Chrome for Android

  • From 114

Firefox for Android

  • From 125

Samsung Internet

  • From 23.0

MDN BCD 8.1.5 · Dataset built 2026-10-08 · Mapping reviewed 2026-10-21. These dates are not individual browser-test or claim-verification dates. Unknown means the data does not establish support.

HTML Living Standard

Specifications & further reading