Contact emails
sambamurt...@microsoft.com
Explainer
https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/Editing/multi-range-selection-explainer.md
Specification
https://github.com/w3c/selection-api/pull/359
Summary
Enables Selection API to hold and manipulate multiple disjoint ranges within a single document. Users can create discontinuous text selections via input devices or JavaScript APIs, and clipboard copy includes all selected ranges joined with newline delimiters.
Blink component
Blink>Editing>Selection
Web Feature ID
Missing feature
Motivation
Desktop applications like Microsoft Word and LibreOffice Writer support Ctrl+Click (Cmd+Click on macOS) to build non-contiguous selections. On the web, this interaction is blocked by spec-mandated single-range behavior in current Chromium, where Ctrl+Click replaces the existing selection.
The gap is particularly noticeable for:
Users switching between desktop editors and browsers who expect consistent Ctrl+Click behavior
Power users copying non-adjacent table cells
Web-based code editors that want native multi-cursor selection without custom overlays
The Selection API exposes a Selection object with methods like addRange(), removeRange(), getRangeAt(index), and the rangeCount attribute, all originally designed for collections of disjoint Range objects. In 2011, the spec was narrowed to single-range semantics: addRange() is ignored when a range already exists, and rangeCount is constrained to 0 or 1. Chromium follows this restriction today, while Firefox has long supported multi-range behavior.
Issue
https://github.com/w3c/selection-api/issues/358 had been discussed in the W3C Web Editing Working Group to restore multi-range semantics and align implementations across browsers with the API’s original design intent.
Initial public proposal
https://github.com/WICG/proposals/issues/291
Search tags
range,
multi-range,
selection
Goals for experimentation
None
Requires code in //chrome?
False
Tracking bug
https://issues.chromium.org/issues/504686717
Estimated milestones
No milestones specified
Link to entry on the Chrome Platform Status
https://chromestatus.com/feature/5095241565732864?gate=5095962528841728