U+FFFD
REPLACEMENT CHARACTER

Marks a character lost during an earlier encoding conversion.

Codepoint
U+FFFD
Short
RC
Group
replacement-char
Class
context-dependent
Default
asked about
Replaced by
removed, no substitute

What it is

The visible tombstone of a character that was lost. A decoder that meets a byte sequence it cannot interpret puts this in its place, so the failure is recorded rather than silently swallowed.

Where it comes from

From a conversion between character encodings that went wrong — text stored as one encoding and read as another. Every occurrence marks a character that no longer exists.

When it belongs

Never, in the sense that it is never what the author wrote. But removing it does not bring the lost character back, and deleting it destroys the evidence of where the damage is.

TraceFree therefore asks rather than acting. The right fix is usually upstream: find the original file and decode it correctly.

What TraceFree does with it

PresetAction
conservativeasked about
defaultasked about
report-onlyasked about
strictasked about

Context guards can only ever make a cleanup gentler, never sharper. A rule saying “always remove” does not override them.

How to remove it

In TraceFree, turn on the clipboard watcher and copy the text — the finding appears with a before-and-after comparison of the affected lines. For files, a watched folder does the same, keeping a backup copy alongside.

How to write it

This page never prints the character itself, only ways of writing it. A page about invisible characters that contained invisible characters would be unreviewable — and that is the problem the program exists to solve.

NotationValue
UnicodeU+FFFD
Rust\u{FFFD}
JavaScript, Python\uFFFD
HTML� �
Regex (PCRE, Rust)\x{FFFD}