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.
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.
On Chrome Mobile for Android, typing certain punctuation characters (commas, colons, semicolons, quotes, etc.) in the middle of a word causes the cursor to jump to the end of the word instead of staying at the insertion point.
Have questions, suggestions, or want to share your experience? Join the discussion below.