ArabicFix

THE TEXT STUDIO

Find invisible characters in Arabic text

Inspect direction controls, joiners and invisible spaces with their exact positions. Your original stays intact.

Processed in your browser

Copyable text report

Up to 20,000 units. Positions start at 1; code point and UTF-16 positions are reported separately. Joining and emoji sequences are preserved. Nothing is automatically removed.

Unicode 18.0.0 · 2026-10-04 · UAX #9 · Unicode License v3

Save & restore workspace

Explicit download/import of text and settings; no autosave or sync. The file contains your text; store it appropriately. History and voices are not saved. Up to one million text units and a 4 MB file.

From your screen to a finished page

Export the current result as a carefully paginated PDF, or keep selectable text with an embedded font.

Up to 20,000 units. The visual PDF uses approximately 150 dpi browser-shaped pages; its text is not searchable or selectable. HTML and TXT retain copyable text. Cleaner proof font and layout settings carry into export. When printing HTML, browser headers and footers are controlled by your browser.

How to find invisible characters in Arabic text

Some characters never show on screen but are still part of the text: special spaces, direction marks, and characters that block or force the joining of letters. They cause problems that are hard to explain: a copied word that search cannot find, a username a website rejects, two texts that look identical but fail a comparison, or punctuation that jumps to the other end of the line.

This tool shows each invisible character where it sits, with its official Unicode name and its position in the text. It deletes nothing; you decide what to do once you know what is there.

How to use it

  1. Paste your text into Original text, or click Try an invisible-text example to see one.
  2. Read the status line. It gives the number of code points in the text, which is its number of characters, and the number of characters to inspect. Ordinary spaces and line breaks are not included in that second number.
  3. In the preview below the box, each invisible character appears as a small badge with its short name, such as ZWSP or NBSP, exactly where it sits between the letters.
  4. Check the table and its three columns: Position / UTF-16, Character and Name / bidi / joining. To list every character in the text, tick Show all characters (first 300).
  5. To keep a record, open Copyable text report and copy or download the report.
  6. If you decide to remove something, go to the Cleaner and pick the matching option, such as Remove zero-width space & BOM, Convert non-breaking spaces or Remove direction controls from result.

Worked examples from the tool

Example from the tool · Invisible textA word copied from a web page with a zero-width space inside
Original
الرياZWSPض
Result
  • U+200B · ZERO WIDTH SPACE · Position 6

Settings: Invisible text · characters to inspect only

Example from the tool · Invisible textA price with two non-breaking spaces instead of ordinary spaces
Original
السعرNBSP25NBSPد.ك
Result
  • U+00A0 · NO-BREAK SPACE · Position 6
  • U+00A0 · NO-BREAK SPACE · Position 9

Settings: Invisible text · characters to inspect only

Example from the tool · Invisible textAn intentional ZWNJ in a Persian word: leave it in
Original
میZWNJخواهم
Result
  • U+200C · ZERO WIDTH NON-JOINER · Position 3

Settings: Invisible text · characters to inspect only

The usual suspects

Name in the toolWhat it isRemove it?
ZWSPA zero-width space that allows a line break without showing.Usually yes, especially inside words.
NBSPA space that keeps the next word on the same line; common in web pages.Convert it to an ordinary space if it breaks search or matching.
RLM, LRM, ALMDirection marks that control where numbers and punctuation sit next to Arabic.Carefully: the display order can change once they are gone.
ZWNJStops two neighbouring letters from joining; part of Persian spelling in words like می‌خواهم.Not in Persian text.
ZWJForces joining and glues the parts of some emoji into one symbol.Not inside emoji.
BYTE ORDER MARKA marker at the start of some text files that can stick to the first word or the first CSV column.Yes, unless the program reading the file needs it.
SHYA soft hyphen that only shows if the line breaks at that point.Yes, in ordinary text.

For more on each type and when it is useful, read the invisible characters guide.

Position versus UTF-16 position

Counting starts at 1. The first number is the character's position among code points: each character counted once, with a vowel mark counting as its own character. The second is its position in UTF-16 units, the storage units that programming languages such as JavaScript use. The two match in ordinary Arabic text and drift apart after most emoji, because an emoji takes two units. If you are a developer, use the second number and subtract 1, since string indexes in code start at zero.

Limits

  • Up to 20,000 text units. The table shows the first 300 rows and the preview the first 2,000 code points, while the totals cover the whole text.
  • The tool identifies characters but never removes them, and it cannot tell why they were put there.
  • Visible look-alike letters, such as Arabic ي and Persian ی, are not invisible characters, so they are not among the characters to inspect. Tick Show all characters to see every letter's name.
  • Characters outside the bundled data, such as emoji and most accented Latin letters, are shown as Outside this dataset subset.
  • Names and properties come from Unicode 18.0.

Frequently asked questions

I copied a word from a website and search cannot find it. Why?

It probably contains a hidden character such as a ZWSP or a soft hyphen, or a non-breaking space instead of an ordinary one. Paste the word here to see the character and its position, then remove it in the Cleaner.

Should I delete every invisible character?

No. ZWNJ is part of Persian spelling, ZWJ holds some emoji together, and direction marks may have been added on purpose to keep a phone number or currency sign in place. Remove only what you know is unwanted.

Why does the position differ from the UTF-16 position?

The first counts characters; the second counts the storage units that programming languages use. Most emoji are one character stored as two units, so the second number gains one after each of them.

Does it detect a Persian yeh or keheh?

Not as invisible characters, because they are visible letters. Tick Show all characters (first 300) to see each letter's name, such as ARABIC LETTER FARSI YEH, or look them up in the character explorer.

Does the tool change my text?

No. It only reads the text and reports what it finds; what you pasted stays as it is. Removal happens in another tool, and only when you choose it.

Reading comfort
About ArabicFix

ArabicFix is a workspace for Arabic text: clean, write, convert and compare. Choose a tool, paste your text, then review the result before copying or downloading. Transformations are explicit and optional. Your exported text contains no branding or watermark.

Processing happens in your browser. Text and files are not uploaded, and drafts are not automatically saved. Download a workspace file to restore your work later; earlier workspace files remain compatible. These tools do not claim contextual proofreading or automatic tashkeel. Speech requires a browser-provided local Arabic voice.