Arrow keys skip over emoji in contenteditable
OS: macOS 14.0 · Device: Laptop MacBook Pro · Browser: Chrome 120.0 · Keyboard: US
Open case →Scenario
When using the left and right arrow keys in a `contenteditable` element that contains emoji, the
When using the left and right arrow keys in a contenteditable element that contains emoji, the
caret sometimes jumps over entire emoji clusters instead of moving by a single visual position.
This scenario has been observed in multiple environments with similar behavior.
Visual view of how this scenario connects to its concrete cases and environments. Nodes can be dragged and clicked.
Each row is a concrete case for this scenario, with a dedicated document and playground.
| Case | OS | Device | Browser | Keyboard | Status |
|---|---|---|---|---|---|
| ce-0005-arrow-keys-skip-emoji | macOS 14.0 | Laptop MacBook Pro | Chrome 120.0 | US | draft |
| ce-0025-caret-position-emoji-edge | Windows 11 | Desktop or Laptop Any | Edge 120.0 | US | draft |
This matrix shows which browser and OS combinations have documented cases for this scenario. Click on a cell to view the specific case.
| Browser | Windows | macOS |
|---|---|---|
| Chrome | — | |
| Edge | — |
Open a case to see the detailed description and its dedicated playground.
OS: macOS 14.0 · Device: Laptop MacBook Pro · Browser: Chrome 120.0 · Keyboard: US
Open case →OS: Windows 11 · Device: Desktop or Laptop Any · Browser: Edge 120.0 · Keyboard: US
Open case →Other scenarios that share similar tags or category.
In Chrome on Windows, arrow keys may move the caret by word instead of by character, even when no modifier keys are pressed. This makes precise cursor positioning difficult.
Browsers try to keep the caret visible by scrolling the editable container or the page. During rapid typing—especially near the bottom or right edge—scroll updates can lag, batch, or feel jarring, so the caret temporarily leaves the viewport or the view jumps unexpectedly.
When browser dark mode is enabled, contenteditable elements may experience invisible or poorly visible caret, inline style injection conflicts, background color issues, and form control styling problems. These issues are caused by missing color-scheme declarations and conflicts between browser-injected styles and custom CSS.
When the browser is zoomed (or content is scaled via CSS transforms), caret position and text selection in contenteditable elements can become inaccurate. Clicking at a certain position places the caret elsewhere, and selection highlights may not match the visual selection.
When editing content inside an element with `position:relative`, the text caret (cursor) is completely invisible. Text can be typed and appears in the editor, but there's no visual feedback of where the insertion point is located.
Have questions, suggestions, or want to share your experience? Join the discussion below.