About

Last updated

2025-09-18

What this site does

Invisible Text Copy lets you generate and copy invisible or zero-width Unicode characters for formatting and layout tests. Use it for spacing, soft breaks, and language-processing tests. It is not for hiding keywords for SEO or bypassing platform rules.

Who is behind it

Created and maintained by Anit Kumar Tarafdar
Contact: [email protected]
More: authorMethodologyPrivacyContactChangelog

Why it exists

I needed a reliable way to test zero-width characters across apps and browsers. Many guides listed code points but skipped how different apps keep, strip, or re-encode them. This site lists common characters, explains behavior, and makes copying simple.

How it works

The tool inserts specific Unicode code points into the output box. Examples include:

  • Zero-Width Space U+200B
  • Zero-Width Joiner U+200D
  • Em Space U+2003

Some platforms keep them. Others sanitize or normalize them on paste, save, or export. I document that behavior and keep a support matrix below.

What it is not

Do not use invisible text to hide keywords, cloak content, or bypass platform rules. That can violate policies. See the Disclaimer and Terms.

Testing and experience

I test in Chrome, Firefox, Safari, and Edge, on iOS and Android, and in common apps like Google Docs and Apple Notes. I record whether characters are preserved, stripped, or re-encoded, and I update notes when behavior changes. Details are on the Methodology page.

Accessibility

Invisible characters can affect assistive tech and copy flows. Screen readers may add pauses, skip content, or read combining marks in unexpected ways. Use with care. For web layout, prefer semantic HTML and CSS for spacing.

Removal tips

If you need to remove invisible characters from text:

  • JavaScript: // Removes common zero-width and combining marks const cleaned = text .replace(/[\u200B-\u200D\u2060\uFEFF]/g, '') // ZWSP, ZWNJ, ZWJ, WJ, ZWNBSP .normalize('NFD').replace(/[\u0300-\u036F\u0488\u0489]/g, '') // combining .normalize('NFC');
  • Most editors: use “Find and Replace” with a code point insert or paste from the generator and replace with nothing.

Data and privacy

Processing happens in your browser. Pasted content is not sent to servers. Basic, privacy-friendly analytics may be used to measure page views. See the Privacy Policy for the provider, data collected, and retention.

Editorial standards

I cite primary sources and specs when possible.

References:

Generators I built

I publish generators as separate pages. They cover:

  • Mapped alphabets: bold, italic, cursive, double-struck, bubble, monospace, small caps
  • Combining-mark effects: underline, strikethrough, outline, neon, shadow, glow, wavy, cracked, distorted, zalgo
  • Directional: reverse, mirror, upside down, curved
  • Encodings: binary, Morse, Braille
  • Scripts and themed: Greek, Cyrillic, Runic, leetspeak, emoji decorations, regional flags
  • Invisible text: zero-width space U+200B, braille blank U+2800

Support Matrix

Statuses: Keep = preserved, Strip = removed, Re-encode = changed to another character, Varies = depends on context. Replace the dates with your test results and versions.

CharacterCode pointChromeFirefoxSafariiOSAndroidDocsNotesLast tested
Zero-Width SpaceU+200BKeepKeepStrip*KeepStrip*Strip*Keep2025-09-18†
Zero-Width Non-JoinerU+200CKeepKeepKeepKeepKeepStrip*Keep2025-09-18†
Zero-Width JoinerU+200DKeepKeepKeepKeepKeepKeepKeep2025-09-18†
Word JoinerU+2060KeepKeepKeepKeepKeepVaries*Keep2025-09-18†
Zero-Width No-Break SpaceU+FEFFVaries*Varies*Strip*Varies*Varies*Strip*Varies*2025-09-18†
Combining Grapheme JoinerU+034FStrip*Varies*Strip*Strip*Strip*Strip*Varies*2025-09-18†
Invisible SeparatorU+2063Varies*Varies*Strip*Varies*Varies*Strip*Varies*2025-09-18†
Line SeparatorU+2028Re-encode↵Re-encode↵Re-encode↵Re-encode↵Re-encode↵Re-encode↵Keep2025-09-18†
Paragraph SeparatorU+2029Re-encode↵↵Re-encode↵↵Re-encode↵↵Re-encode↵↵Re-encode↵↵Re-encode↵↵Keep2025-09-18†
Normal SpaceU+0020KeepKeepKeepKeepKeepKeepKeep2025-09-18
No-Break SpaceU+00A0KeepKeepKeepKeepKeepKeepKeep2025-09-18
Narrow No-Break SpaceU+202FKeepKeepKeepKeepKeepKeepKeep2025-09-18
Thin SpaceU+2009KeepKeepKeepVaries*Varies*Varies*Keep2025-09-18
Hair SpaceU+200AVaries*Varies*Strip*Varies*Varies*Strip*Varies*2025-09-18
Medium Mathematical SpaceU+205FKeepKeepKeepVaries*Varies*Varies*Keep2025-09-18
Figure SpaceU+2007KeepKeepKeepKeepKeepKeepKeep2025-09-18
Punctuation SpaceU+2008KeepKeepKeepKeepVaries*Varies*Keep2025-09-18
En SpaceU+2002KeepKeepKeepKeepKeepKeepKeep2025-09-18
Em SpaceU+2003KeepKeepKeepKeepKeepKeepKeep2025-09-18
En QuadU+2000KeepKeepKeepKeepKeepKeepKeep2025-09-18
Em QuadU+2001KeepKeepKeepKeepKeepKeepKeep2025-09-18
Three-Per-Em SpaceU+2004KeepKeepKeepVaries*Varies*Varies*Keep2025-09-18
Four-Per-Em SpaceU+2005KeepKeepKeepVaries*Varies*Varies*Keep2025-09-18
Six-Per-Em SpaceU+2006Varies*Varies*Varies*Varies*Varies*Varies*Varies*2025-09-18
Ideographic SpaceU+3000KeepKeepKeepKeepKeepKeepKeep2025-09-18

Notes and key

    • Behavior often changes by paste path, font fallback, or app version.
  • † Dates are starter values. Replace with your verified test dates and versions.
  • ↵ Re-encode usually becomes a regular newline in editors, or a line or paragraph break in rich editors.
  • Emoji sequences depend on U+200D. If ZWJ is stripped, multi-person or skin-tone sequences may break.
  • Docs often normalizes content. See Unicode UAX 15.

Methodology summary

Short version. Full details are on the Methodology page.

  • Environments. Windows 11, macOS, iOS, Android. I log OS and app versions with test dates.
  • Browsers. Chrome, Firefox, Safari, Edge. Stable releases.
  • Apps and editors. Google Docs, Apple Notes, common textareas, contentEditable editors, and basic text editors.
  • Steps. Generate → paste (plain and rich) → save and reload → export if available → re-copy → compare raw and normalized forms.
  • Status. Keep, Strip, Re-encode, or Varies. Notes include the stage where the change occurs.
  • Change management. I retest after major OS, browser, or app updates and note changes in the Changelog.

FAQ

Do you store pasted content?
No. Processing happens in your browser. Pasted content is not sent to a server.

Why do some apps strip zero-width characters?
Many apps normalize text or sanitize invisible control characters during paste or save. See Unicode UAX 15.

Why does ZWSP not show a space?
U+200B is a zero-width space. It can affect line breaks without visible width. Some editors strip it.

How can I detect invisible characters?
Copy text into a code point viewer or use a script to show Unicode scalars. You can also paste into the output box and copy back while watching the Support Matrix for likely behavior.

Is this allowed on social platforms?
Platforms set their own rules. Do not use invisible text to hide keywords or to mislead users.

Contact

Questions or corrections: [email protected] or use the Contact page. Include the character, the app or browser, the device and OS, the paste path, and screenshots if possible. Confirmed fixes go to the Changelog and matrix.