πŸ“ Real-world contenteditable research

contenteditable.lab

Ever wondered why your contenteditable behaves differently in Safari vs Chrome? Or why IME composition (Chinese, Japanese, Korean, and more) breaks in some browsers? We're documenting these real-world quirks across all languages and input methods so you don't have to discover them the hard way.

βœ“ 308 documented cases
🌍 All languages & IMEs
πŸ”¬ Real-world tested
✨

What's New

Fresh cases and scenarios added recently

Latest Cases

308
Total Cases
182
Scenarios
7
OS Variants
14
Browsers
32
Confirmed
276
Draft

Cases by Category

83
IME & Composition
26
Formatting
53
Selection
24
Paste & Clipboard
πŸ”¬

Browse by phenomenon

Start from a specific behavior or issue to see how it manifests across different environments. Each scenario tells a story of browser quirks and edge cases.

View all scenarios β†’
⚑

Quick Links

Jump to popular sections and resources.

🏷️

Browse by category

Explore cases by topic tags or environment filters.

View all cases with filters β†’
πŸ“Œ

Pinned incidents

Curated baseline references and frequently observed issues.

Baseline typing and composition in a simple contenteditable region

Any Any Β· Chrome Latest

Open case β†’
πŸ’¬

Join the Community

Share your findings, ask questions, or contribute to the project. Your input helps make this catalog more comprehensive.

πŸ†•

Latest scenarios

Recently documented scenarios, sorted by the most recent case added. Keep checking back for new discoveries!

Baseline typing and composition in a simple contenteditable region

scenario-baseline

1 case Β· Any

Select All (Ctrl+A) collapses wrong way when non-editable block is first or last child

scenario-select-all-non-editable-block

1 case Β· macOS

Deleted inline elements recreated when typing in contenteditable

scenario-inline-element-recreation-after-delete

1 case Β· Windows

IME Interaction Patterns: Keys, Events, and Edge Cases

scenario-ime-interaction-patterns

21 cases Β· Android

IME UI & Experience: Viewports, Candidates, and Layout

scenario-ime-ui-experience

1 case Β· iOS

Performance Foundations: Complexity, Memory, and Thrashing

scenario-performance-foundations

1 case Β· macOS

Android: First word duplication after space + backspace

scenario-ime-composition-duplicate-events

2 cases Β· Android

ProseMirror: splitBlock crashes on specific node nesting

scenario-paragraph-behavior

1 case Β· Windows

IME composition text leaks outside table cells

scenario-table-composition-leaks

2 cases Β· macOS

Accessibility Foundations: Screen Readers, ARIA, and the AX-Tree

scenario-accessibility-foundations

5 cases Β· Windows

plaintext-only paste leaves trailing  

scenario-paste-plain-text

2 cases Β· Linux

Contenteditable isolation and selection in Shadow DOM

scenario-contenteditable-shadow-dom

1 case Β· macOS

RTL text direction and selection behavior inconsistent in contenteditable

scenario-rtl-text-direction-inconsistent

1 case Β· Windows

Firefox Drag and Drop failures in contenteditable

scenario-firefox-drag-drop-issues

3 cases Β· Linux

Placeholder interference with IME and DOM mutations

scenario-placeholder-behavior

2 cases Β· Android

Composition event lifecycle inconsistencies across browsers

scenario-composition-events

2 cases Β· macOS

Dark mode causes caret visibility and styling issues

scenario-browser-dark-mode

1 case Β· Any

Browser zoom causes caret and selection positioning issues

scenario-browser-zoom

1 case Β· Any

Browser translation breaks contenteditable editing

scenario-browser-translation

1 case Β· Any

Grammarly extension interferes with contenteditable editing

scenario-browser-extension-interference

1 case Β· Any