How Real-Time Detection Works in the Browser

The Invisible Character Scanner detects hidden Unicode characters instantly as you type or paste — no delay, no server round-trip. This is made possible by modern JavaScript and Unicode-aware regular expressions.

The Core Technology: Unicode Property Escapes

We use the \p{Property} syntax supported in modern browsers:

const regex = new RegExp('(\p{Cc}|\p{Cf}|\p{Zs}|[\u200B-\u200F\u2060-\u2069\uFEFF])', 'gu');

This single regex matches:

  • \p{Cc} — All control characters
  • \p{Cf} — Format controls (including ZWJ/ZWNJ)
  • \p{Zs} — All separators except regular space
  • Specific zero-width ranges (U+200B–U+FEFF)

Performance That Meets NFR-01

The SRS demands detection under 100ms for 500 KB text. We achieve this by:

  • Running detection only on change (Svelte reactive)
  • Using a single optimized regex
  • Skipping regular space U+0020 explicitly
  • Capping input at 1 MB with graceful warning (NFR-05)

Visual Feedback You Can Trust

Every match is highlighted with its exact code point (e.g. U+200D) so you know exactly what was found and where.

FAQ

Why not use charCodeAt() loops?

Too slow and error-prone. Regex with \p{Property} is 10–20× faster and more accurate.

Does it work in Safari?

Yes — Safari 14.1+ fully supports Unicode property escapes.

Fast. Accurate. Private. That’s real-time detection done right.