Skip to main content

Unicode Invisible Characters Developer Guide

Unicode points, zero-width space behavior, alt codes, HTML entities, and regex sanitization for invisible characters.

Static Data API

We provide a static JSON file containing our core invisible character set. You can use it to build your own UI, validator, or copy-to-clipboard helpers.

Endpoint
/assets/data/invisible-characters.json
Example (JavaScript)
// Fetch and use the data
(async function() {
  const res = await fetch('/assets/data/invisible-characters.json');
  const data = await res.json();
  console.log(data.characters[0]);
})();

Tip: in JSON, invisible characters are represented using Unicode escape sequences (for example \\u200B) so you can copy them safely.

Integration Guide

If you only need to generate or validate invisible characters, you can integrate without any dependency:

Generate

// Zero Width Space
const ZWS = '\u200B';

// Hangul Filler (often works for blank names)
const HF = '\u3164';

Detect

// Basic invisible-character detector
const INVISIBLE = /[\u200B-\u200F\u2060\u2061\u2062\u2063\u2800\u3164\u202A]/;

function hasInvisibleChars(s) {
  return INVISIBLE.test(s);
}

Need More Detail?

Read the full Unicode deep dive in our Technical Guide.

Blank Unicode Character Reference

Blank-looking text is not one character. Pick the code point by behavior, then verify it with the detector before using it in production content, usernames, or imported data.

Spacing and filler blanks

  • U+200B Zero Width Space: compact invisible separator.
  • U+2800 Braille Pattern Blank: blank-looking character with width.
  • U+3164 Hangul Filler: fallback for blank-looking names and messages.

Join and word control

  • U+2060 Word Joiner: prevents line breaks without visible width.
  • U+200E Left-to-Right Mark: controls text direction and can look empty in app fields.
  • U+200C Zero Width Non-Joiner: stops script joining.
  • U+200D Zero Width Joiner: joins emoji or script sequences.

Zero Width Cleanup Notes

Hidden Unicode can break search matching, regular expressions, CMS imports, slug comparison, moderation review, and copy workflows. Treat cleanup as a reviewed normalization step, not as a blind replacement.

Detection regex
const HIDDEN_UNICODE = /[\u00A0\u200B-\u200F\u202A-\u202E\u2060-\u206F\u2800\u3164\uFEFF]/g;
Common break points
  • ZWSP means Zero Width Space, code point U+200B; it can split search terms without showing a visible gap.
  • ZWNJ means Zero Width Non-Joiner, code point U+200C; it can change script shaping and string equality.
  • ZWJ means Zero Width Joiner, code point U+200D; it can change emoji or connected-letter rendering.
  • NBSP means Non-Breaking Space, code point U+00A0; it can look like a normal space while blocking line breaks and exact matches.
  • BOM means Byte Order Mark, often U+FEFF; it can appear at the start of copied files or imported CMS text.
Review checklist
  • Log the matched code points before removal when debugging imported text.
  • Do not strip joiners inside language text if they are needed for correct rendering.
  • Normalize slugs, search keys, and moderation text separately from user-facing display text.
  • Use this section for cleanup and debugging only; it is not a hidden-message or steganography tutorial.

AI and ChatGPT Hidden Unicode Cleanup

AI and ChatGPT cleanup requests are safe only when the job is formatting repair: reveal hidden Unicode, remove accidental zero-width marks, and keep searchable text readable. They are unsafe when the goal is to bypass AI detectors, remove AI watermarks, or make text harder to moderate.

Safe cleanup boundaries

  • Reported: pasted AI-tool output can contain hidden formatting marks that break search, regex, CMS import, or copied-code matching.
  • Verified on this site: the detector can reveal known code points before you choose what to remove.
  • Unsafe: do not claim this removes AI watermarks, makes AI text undetectable, or bypasses detection systems.

Technical Support

If you hit a platform-specific issue (for example, a character that appears as blank on one app but not another), we can help you troubleshoot.

When reporting an issue, include:

  • Platform + app version (e.g., TikTok iOS 34.x)
  • The character code point(s) you used (e.g., U+200B)
  • Whether it works on desktop vs mobile