Skip to content

Erase character (ECH)

Category: erase · Baseline: core · Tags: ECMA-48 Standard · Specification ↗

ESC [ N X
ECH replaces N characters at the cursor position with blank spaces. The sequence is ESC [ N X (default N=1). Unlike delete (DCH), erase does not shift subsequent characters — it overwrites in place. The cursor position is not changed. ECH is an in-place eraser: it blanks cells without shifting the rest of the row. That makes it different from DCH, which deletes and pulls later cells left. The distinction matters for editors and form UIs that clear a fixed-width field while leaving surrounding content exactly where it is.
How this is testedautomated
Write "ABCDE", move to col 1, send \x1b[3X (ECH 3), verify first 3 cells are blank and "D" remains at col 3.

The same probe runs against headless backends (via Termless) and real terminal apps (via a daemon launched in each terminal). This lets us distinguish parser correctness from rendering correctness.

Analysis2026-05-17

Supported by 11 of 12 terminals (92%). Not supported by: vt100.js. Part of the Core TUI baseline. Notes: vt100.js: ECH (erase character) not implemented in vt100.js baseline emulator.

Supported by 12 of 14 backends (86%)

Terminal Applications

TerminalVersionSupportNotes
iTerm23.6.9✓ yes
Ghostty1.3.1✓ yes
VS Code✓ yes
Warp✓ yes
Kitty0.46.2✓ yes
Cursor✓ yes
Terminal.app✓ yes

Headless Backends

Parser correctness only — a means the parser accepts the sequence.

BackendVersionSupportNotes
Alacritty0.26.0✓ yes
vterm.js0.2.0✓ yes
WezTerm0.1.0-fork.5✓ yes
xterm.js5.5.0✓ yes
vt100.js0.2.1✗ noECH (erase character) not implemented in vt100.js baseline emulator