diff --git a/Editing/multi-range-selection-explainer.md b/Editing/multi-range-selection-explainer.md
new file mode 100644
index 000000000..dbb7e81fd
--- /dev/null
+++ b/Editing/multi-range-selection-explainer.md
@@ -0,0 +1,483 @@
+# Multi-Range Selection in Chromium
+
+This document proposes implementing multi-range selection support in Chromium's Selection API, enabling discontinuous text selection and aligning with Firefox's existing implementation.
+
+## Authors
+
+- Samba Murthy Bandaru (sambamurthy.bandaru@microsoft.com)
+
+## Participate
+
+- Spec: [W3C Selection API](https://w3c.github.io/selection-api/#dom-selection-addrange)
+- Spec issue tracker: [w3c/selection-api](https://github.com/w3c/selection-api/issues)
+- [Chromium editing-dev group](https://groups.google.com/a/chromium.org/g/editing-dev)
+- MDN: [Selection.addRange()](https://developer.mozilla.org/en-US/docs/Web/API/Selection/addRange)
+
+---
+
+## Table of Contents
+
+1. [Introduction](#1-introduction)
+2. [Problem Statement](#2-problem-statement)
+3. [Goals and Non-Goals](#3-goals-and-non-goals)
+4. [Current State of the Platform](#4-current-state-of-the-platform)
+5. [Key Use Cases](#5-key-use-cases)
+6. [Proposed API Design](#6-proposed-api-design)
+7. [Implementation Overview](#7-implementation-overview)
+8. [Feature Activation and Rollout Plan](#8-feature-activation-and-rollout-plan)
+9. [Compatibility Risk and Mitigation](#9-compatibility-risk-and-mitigation)
+10. [Interoperability and Spec Alignment](#10-interoperability-and-spec-alignment)
+11. [Standards Position](#11-standards-position)
+12. [Performance Impact](#12-performance-impact)
+13. [Security and Privacy](#13-security-and-privacy)
+14. [Accessibility](#14-accessibility)
+15. [Open Questions](#15-open-questions)
+16. [References](#16-references)
+
+---
+
+## 1. Introduction
+
+Users cannot Ctrl+Click to select multiple non-contiguous words in Chrome. This interaction works in Firefox and in word processors like Microsoft Word and LibreOffice Writer. Chrome's limitation stems from Blink's `Selection` implementation being hardcoded to a single range.
+
+The [Selection API](https://w3c.github.io/selection-api/) exposes a `Selection` object with methods like `addRange()`, `removeRange()`, `getRangeAt(index)`, and the `rangeCount` attribute, all implying a collection of disjoint `Range` objects. However, Chrome (and Safari) implement single-range-only semantics: `addRange()` is silently ignored when a range already exists, and `rangeCount` is always `0` or `1`.
+
+This explainer proposes making Chromium's `Selection` honor multiple ranges, enabling discontinuous text selection for web content.
+
+---
+
+## 2. Problem Statement
+
+### 2.1 The User-Visible Problem
+
+Some desktop applications support Ctrl+Click (or Cmd+Click on macOS) to build a non-contiguous, multi-word selection. Microsoft Word and LibreOffice Writer both support this interaction natively. Among browsers, Firefox supports Ctrl+Click to add words to a selection. In Chrome, Ctrl+Click simply replaces the existing selection with a new one.
+
+Note: Code editors like VS Code and JetBrains IDEs support multi-cursor editing, but this is implemented via custom overlays rather than the native platform selection API. The existence of these workarounds is itself evidence of demand for the feature (see Section 2.3).
+
+This gap is particularly noticeable for:
+- Users switching between Word/Firefox and Chrome who expect the same Ctrl+Click behavior
+- Power users copying non-adjacent table cells
+- Web-based code editors that want native multi-cursor selection without custom overlays
+
+### 2.2 The API Gap
+
+```javascript
+const sel = window.getSelection();
+sel.removeAllRanges();
+
+const r1 = document.createRange();
+r1.setStart(node, 0); r1.setEnd(node, 5);
+sel.addRange(r1);
+console.log(sel.rangeCount); // 1
+
+const r2 = document.createRange();
+r2.setStart(node, 10); r2.setEnd(node, 15);
+sel.addRange(r2); // silently ignored
+console.log(sel.rangeCount); // still 1
+```
+
+The W3C Selection API spec (Step 2 of `addRange()`) currently mandates: "If `rangeCount` is not `0`, abort these steps." Chromium and Safari follow this spec text. Firefox deviates from the spec and accumulates multiple ranges. The spec was deliberately restricted to single-range in 2011 to simplify implementation, but this leaves developers without a standards-based way to express discontinuous selection.
+
+### 2.3 Developer Workarounds
+
+Because the platform does not support multi-range selection, developers are forced into complex workarounds:
+
+- Web-based spreadsheets (Google Sheets, Notion, Airtable) maintain custom canvas/overlay highlight layers to simulate column selection
+- Browser-based code editors (vscode.dev, CodeMirror) implement multi-cursor entirely outside the native `Selection`, losing native clipboard, copy, and accessibility integration
+- Chrome itself built a separate `TextFragmentHighlighter` / `kSearchText` highlight layer because `FrameSelection` cannot hold multiple ranges
+
+### 2.4 Blink Source Evidence
+
+The single-range restriction is intentionally hardcoded:
+
+```cpp
+// dom_selection.cc - addRange()
+void DOMSelection::addRange(Range* new_range) {
+ if (rangeCount() == 0) {
+ UpdateFrameSelection(...);
+ return;
+ }
+ // function simply ends here when rangeCount() > 0
+}
+
+// selection_editor.h - internal storage
+SelectionInDOMTree selection_; // single (anchor, focus) pair
+```
+
+---
+
+## 3. Goals and Non-Goals
+
+### Goals
+
+- **G1**: Enable discontinuous text selection in Chrome, so users can Ctrl+Click/Drag to select multiple non-adjacent text spans
+- **G2**: `addRange()` accumulates ranges rather than silently discarding subsequent calls
+- **G3**: `rangeCount`, `getRangeAt(i)`, `removeRange()` work correctly for N ranges
+- **G4**: Native clipboard integration: Ctrl+C copies the concatenated text of all ranges
+- **G5**: All selected ranges are visually highlighted
+- **G6**: Align programmatic behavior with Firefox for web compatibility
+
+### Non-Goals
+
+- **NG1**: Cross-origin or cross-frame multi-range selection
+- **NG2**: Multi-range inside `` / `