RTL Text Fixer

Stabilize mixed Hebrew, Arabic, Latin, Cyrillic, numbers and links with Unicode BiDi controls. Edit and copy the real plain text. Nothing is uploaded.

Direction
{{stateLabel}}
Original text {{source.length}} chars {{sourceControls.length}} controls
Fixed text {{output.length}} chars {{controlItems.length}} controls
{{controlSummary}} {{caretNote}} Source changed, manual result preserved {{warningCount}} control warnings
ZWJ or ZWNJ was found. These characters control letter joining rather than text direction, so the formatter preserves them unchanged.
{{securitySummary}}
Direction controls already present in the source are ignored, and every paragraph is rebuilt from its visible text.
{{skippedSummary}}
Control markers are hidden while the result is longer than {{overlayLimit}} characters. Changes and the control list stay available.
{{notice.text}}
No controls were needed for this text.
Nothing to analyse yet.

{{accessibleControlSummary}}

About this tool

Safe detects each paragraph direction and wraps opposite-direction runs with LRI/RLI … PDI isolates. Compatibility uses LRM/RLM marks for older editors, and ALM where the run is Arabic. Clean only removes BiDi controls without adding new ones.

URLs, email addresses, phone numbers, dates, versions, paths and code are kept intact. Sentence punctuation stays outside a token isolate when the text returns to the paragraph direction. Turn off Isolate numbers to leave standalone numbers to the Unicode algorithm, which already renders them left to right inside RTL text.

Both panes annotate invisible controls, and the result is rendered with the base direction you picked, so RTL and LTR show how the text will look in a real container. The result updates live until you edit it manually. Undo and redo preserve those changes, while Changes and Paragraphs explain what happened to every paragraph. Dangerous overrides and broken pairs produce a focused cleanup action.

Export gives you the real code points, escaped forms for source code, HTML entities, or <bdi dir> markup for the cases where the correct fix belongs in the template rather than in the text.

All formatting, text-file import and export happen locally. Only interface preferences are remembered; source and result text are never stored.