Normalize Persian Text
Clean up Persian/Farsi text in one pass — fold Arabic letters to Persian, fix half-spaces (ZWNJ), convert digits, and correct punctuation spacing. Runs in your browser; nothing is uploaded.
About this tool
This Persian/Farsi normalizer cleans text copied from mixed Arabic/Persian sources. It can fold Arabic code points into Persian letters, convert digit scripts, tidy نیمفاصله (ZWNJ) half-spaces, correct punctuation spacing, strip harakat/diacritics, and collapse messy whitespace. Each pass is optional, so you can run a full cleanup or isolate one rule while preserving the rest of the text.
Common fixes include:
ك→ک,ي/ى→ی, andة→ه.- ASCII and Arabic-Indic digits → Persian digits, or the reverse to English.
مي روم/می رومstyle prefixes andکتاب هاstyle suffixes → ZWNJ forms.- No stray space before punctuation, and one readable space after punctuation.
Worked example
Input:
كتاب123 را مي خواهم ,خوب
With the default cleanup options, the output is:
کتاب۱۲۳ را میخواهم, خوب
Turn on Persian punctuation if you also want Latin punctuation converted, for
example , to ، and ? to ؟.
FAQ
What is ZWNJ / نیمفاصله?
ZWNJ is the zero-width non-joiner character used as a Persian half-space. It keeps
letters visually separated without a full word space, as in میروم or کتابها.
The half-space option cleans spaces around existing ZWNJs and adds them for common
prefixes and suffixes.
Can I keep English digits?
Yes. Set Digits to English digits to convert Persian and Arabic-Indic
digits to 0-9, or choose Keep to leave all digit scripts untouched. The
default is Persian digits because this tool is optimized for Persian publishing.
Does it change meaning or rewrite sentences?
No. It is a deterministic text normalizer, not a spell checker or rewriter. It fixes Unicode variants, spacing, punctuation, digits, and optional diacritics; it does not infer grammar, lemmatize words, or replace vocabulary.
Why is Persian punctuation off by default?
Changing ,, ;, and ? to Persian ،, ؛, and ؟ is useful for final copy,
but it is more content-changing than spacing or Unicode folding. Enable it when
you want Persian punctuation marks; leave it off when preserving Latin punctuation
from source data matters.
Developer & Automation Access
Run it from the terminal
Same engine as this page, headless — via the gizza CLI:
gizza tool persian-text-normalizer "متن فارسی را اینجا وارد کنید…"New to the CLI? Get gizza →
Open it by URL
Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:
https://gizza.ai/tools/persian-text-normalizer/?text=%D9%85%D8%AA%D9%86%20%D9%81%D8%A7%D8%B1%D8%B3%DB%8C%20%D8%B1%D8%A7%20%D8%A7%DB%8C%D9%86%D8%AC%D8%A7%20%D9%88%D8%A7%D8%B1%D8%AF%20%DA%A9%D9%86%DB%8C%D8%AF%E2%80%A6&characters=true&digits=persian&half_space=true&punctuation_spacing=true&persian_punctuation=true&remove_diacritics=true&whitespace=trueMachine-readable descriptor: tool.json — title + parameters JSON Schema for agents.
