Arabic form UX for developers
Build Arabic forms with a clear field sequence, readable labels, appropriate keyboards, useful errors and a recovery path that preserves entered data.
By Omran Khleifat, Founder of Ritla
Guide14 min read
A museum's group-visit form can have Arabic labels and a right-to-left layout while still asking the wrong questions in the wrong order. The organizer enters contact details, discovers the chosen session cannot accommodate the group, then loses the visit notes when selecting another session. Mirroring the controls does not fix that journey.
Arabic form UX includes the decisions behind the controls: which information users need first, what a field accepts, when an error appears and how much work survives a correction. Developers implement those decisions through markup, validation, state management and mobile behavior.
This guide follows a museum group-visit request. It uses organization details, visitor count, session selection and access requirements to show where an Arabic form needs more than translated strings. The goal is a request users can understand, complete and revise without guessing what the interface expects.
Order questions around the user's decision#
For this request, group size affects available sessions. Ask for the visitor count before offering sessions, or explain that the session list depends on a count entered elsewhere. Contact details can follow once the organizer knows that a suitable visit is possible.
That sequence comes from the service's dependencies. Arabic reading direction determines how a horizontal arrangement starts, but it does not determine the business order of every question. Do not reverse an existing array of fields merely because the page is RTL.
Keep the document order consistent with the intended task. If visitor count precedes session selection, keyboard users should encounter that relationship too. W3C's focus-order guidance requires an order that preserves meaning and operation; it does not demand one universal visual sequence for every layout.
Prefer a single column when questions have long labels, dependencies or explanations. A compact desktop row is reasonable for genuinely related short fields, provided its reading and focus sequence remains understandable. Test it again after the fields stack on mobile.
Walk through the form using only Tab and the native controls' keyboard interactions. Include links to help, edit actions and dynamically revealed fields. A screenshot cannot show whether focus jumps from session selection back to an unrelated contact field.
Write labels that explain the service's meaning#
An organization field might accept a school, company or informal community group. A literal translation of an internal database label can leave the organizer unsure which name belongs there. Choose Arabic wording that describes the service, then decide whether the field is required for every group type.
Review labels together with help text and errors. If the label calls something a visit request but the error calls it a reservation, users may reasonably think a different record is involved. Keep a small vocabulary for the form's objects and actions, and use it across all states.
Required and optional status should be understandable before submission. If only a few fields are optional, marking those may be clearer than repeating a required marker everywhere. Whichever policy you choose, explain it consistently and use actual control constraints for required fields.
Do not put the service's entire explanation inside a label. Keep the question short enough to recognize, and put eligibility, format or purpose beside it as associated help. W3C's form-instructions guidance covers required information, formats and programmatically associated instructions.
Ask an Arabic reviewer to read each label without the English source beside it. Have them explain what they would enter. This tests meaning rather than whether every source string received a translation.
Keep the label visible after typing#
A placeholder-only organization field loses its identifying text during entry:
Problem
<input id="visiting-organization" name="organization" placeholder="اسم الجهة المنظمة" dir="auto">The placeholder does not provide a persistent visible label. On returning to the field after an error, the user sees their value without the original question.
Persistent label and help
<div lang="ar" dir="rtl"> <label for="visiting-organization">اسم الجهة المنظمة (اختياري)</label> <input id="visiting-organization" name="organization" dir="auto" autocomplete="organization" aria-describedby="organization-help"> <p id="organization-help">اترك الحقل فارغاً إذا كانت الزيارة لمجموعة مستقلة.</p></div>These fragments are alternative versions of the same field. The second makes the question, optional status and independent-group exception available after typing. Its automatic direction allows an Arabic or Latin organization name without changing the surrounding Arabic instructions.
Place labels above controls when that avoids squeezing a translated label into a narrow side column. This is a layout recommendation, not a rule that every Arabic form must have identical label placement. Test wrapped labels, enlarged text and the longest reviewed wording before committing to a fixed column width.
Floating labels need the same checks. Verify that the label remains readable when the control is autofilled, restored or invalid, and that a long Arabic label does not collide with a value. Solve that layout rather than abbreviating the field into an unfamiliar term.
Explain input requirements without demanding English#
Set the Arabic form's language and direction in markup, then choose each field's direction from its content. An Arabic access note, an organization name and an email address do not have the same requirements.
| Field in the visit request | Content policy | Entry direction |
|---|---|---|
| Organization | Arabic or Latin name as supplied | Automatic |
| Access arrangements | Arabic prose requested by this service | RTL |
| Organizer email | Address in the supported email format | LTR |
| Existing visit reference | Defined machine identifier | LTR |
dir establishes direction; right alignment alone does not. Keep an LTR value's direction on its control so its Arabic label and error can retain their own context. For an unknown-language note, automatic direction may be appropriate instead of the fixed Arabic policy shown here.
Do not translate a technical restriction into “enter this in English” unless English text is actually required. An email address is not an English sentence. If the service accepts only a particular address format, explain that format and ensure the validator implements the same policy. Do not invent an ASCII-only restriction just to simplify the layout.
Likewise, preserve the organization's supplied name. An Arabic interface does not justify transliterating a Latin name or rejecting mixed-script names. If an official registered spelling is needed, explain why and request it explicitly.
The browser observations used here were measured in Chromium 151 on September 24, 2026, not Firefox or Safari. In those measurements, email inputs inherited RTL unless directed otherwise, while empty automatic-direction inputs resolved LTR. An empty field's start edge therefore does not establish how it will behave with an Arabic name. Test filled and edited states too.
Treat mobile keyboards as hints, not validation#
Choose a control type for the data, then request an appropriate keyboard where useful. An email control should support email entry; a visitor count should not open an alphabetic keyboard merely because all fields share one generic component.
The inputmode attribute suggests a keyboard. It does not establish direction, validate a number or guarantee a particular key arrangement. Device, browser and installed keyboard settings remain part of the test environment.
For the count, define whether the service accepts Western digits, Arabic-Indic digits or both. Test a count such as 28 and its Arabic-Indic representation ٢٨ through entry, validation and submission. If both represent an accepted count, the server must interpret them consistently. A translated help sentence cannot compensate for a parser that rejects the promised format.
Avoid replacing every text field with a numeric keypad to make the form look locally adapted. Organization names, references with letters and free-text notes still need their respective characters. A numeric hint is appropriate only where the input contract supports it.
enterkeyhint can suggest an action label for a virtual keyboard's Enter key. Treat it as presentation guidance, not a complete implementation of moving to the next field or submitting. Test the actual action on supported devices, particularly the boundary between a multiline access note and the final submit control.
Let autofill and editing reduce work#
Use semantic autocomplete tokens where the field matches their meaning. The organization example uses organization; an organizer email can use email. MDN's autocomplete reference defines those tokens. Do not assign a personal-identity token to visitor count or session selection to influence keyboard appearance.
Test with saved values in either script. The organization might be stored in Latin letters even when the organizer chooses the Arabic interface. Accepting that value should not trigger automatic translation or reset a direction policy selected for the field.
Avoid rewriting a user's free text after every keystroke to make it conform to an internal representation. Test pasting, selecting a word, editing in the middle and accepting a keyboard suggestion. If normalization is necessary for a machine value, define the transformation and when it runs; preserve a usable editing experience.
Some input methods use a composition session. compositionend indicates that the session has completed or been cancelled. Do not assume every Arabic keyboard uses the same event sequence. Verify that custom masks and validators do not interrupt composition on the actual input methods you support.
This matters for organization lookup too. A suggestion should help users select a known organization, not force them to choose an unrelated result because the service cannot find their spelling. Provide a deliberate path for a valid organization missing from the list.
Define limits the interface and server agree on#
Access arrangements may need a length limit, but the limit must describe what the service can accept. Do not copy an English field's arbitrary limit without checking whether the Arabic instructions and expected answers fit it.
HTML's maxlength measures UTF-16 code units. That is not a guarantee of one unit per visible character. Arabic text containing combining marks is a useful fixture when checking whether a custom counter, browser constraint and server limit describe the same boundary.
Choose a counting policy before showing a remaining-character counter. A counter using one unit and a server using another can say that the note fits while submission fails. Resolve the mismatch rather than stripping marks from the user's text to make a count smaller.
Test a note just below the limit, at it and beyond it using typing and paste. If the server rejects the note, keep the original available for correction and identify the affected field. Silently truncating access instructions can change what museum staff receive.
For a whole-number visitor count, specify whether accompanying adults belong in the total. That definition matters before the numeric limit: a technically valid count can still represent the wrong group size if users interpreted the question differently.
Make Arabic errors describe the next action#
“Invalid value” says little about how to continue. Distinguish an omitted count, an unsupported count format and a session with insufficient capacity. They require different corrections even when all three involve the visitor-count field.
For this example service, suppose a request can include at most forty visitors. The following are sample copy decisions for that policy, not claims about a real museum:
| State | Arabic message |
|---|---|
| Count omitted | أدخل عدد الزوار، مع احتساب المرافقين. |
| Count exceeds the service limit | الحد الأقصى للطلب أربعون زائراً. قلّل العدد أو تواصل مع فريق الزيارات. |
| Chosen session has become unavailable | لم يعد الموعد المحدد متاحاً. اختر موعداً آخر مع الاحتفاظ ببقية بيانات الطلب. |
The last message promises preserved data. Implement that promise. A translation can be linguistically correct and still misdescribe the software's behavior.
Keep errors beside their fields and use an Arabic summary when several corrections are needed. Its entries should identify the relevant labels and provide a route back to those controls. W3C's notification guidance covers correction instructions, field feedback and summaries.
Built-in validation messages also need review. The measured English Chromium configuration displayed English required-field feedback despite an Arabic page language. If the product requires application-controlled Arabic messages, localize that layer and test it; setting lang="ar" alone did not supply the translation in that configuration.
Do not show raw backend exceptions. Translate stable error conditions into the form's vocabulary, while keeping genuinely unknown failures distinguishable from errors the organizer can correct in a field.
Validate at a moment when correction is possible#
Do not mark an untouched required field invalid simply because the form has loaded. The organizer has not yet had a chance to answer. A submission attempt is a clear point to explain missing information; earlier feedback should earn its interruption by helping the current task.
After showing an error, update it as the user corrects the field. A count that now satisfies the rule should not retain an old red message until another submit attempt. Conversely, briefly entering one digit of a longer count should not trigger a distracting sequence of capacity warnings.
Choose a specific policy for remote checks. Session capacity can require a server response, so indicate that the check is pending without calling the field invalid. A failed connection is not evidence that the count itself is wrong.
Guard against stale responses. If the organizer changes the count and then selects another session, a delayed result for the previous combination must not overwrite the new session's feedback. Associate results with the values they checked, and test responses arriving in the opposite order from the requests.
Keep error identity separate from its translated text. Store an error code and relevant parameters, then render Arabic copy for the current interface. This also avoids preserving an old English message when the user changes language while a remote check is pending.
Make actions understandable visually and by name#
Use an action label that states the consequence. In this workflow, requesting a visit is different from confirming an approved booking. The final Arabic button should reflect whichever operation the service actually performs.
A translated visible label can still have an English accessible name:
Problem
<button type="submit" aria-label="Submit visit request">إرسال طلب الزيارة</button>Use the visible action as its name
<button type="submit">إرسال طلب الزيارة</button>The unnecessary attribute is removed. W3C's label-in-name guidance explains why the accessible name should contain the visible label, including for speech operation. Review the computed name rather than assuming visible translation covers it.
Use words describing the task for navigation, such as returning to visit details. Instructions that refer only to a physical arrow direction become fragile when layout changes. Keep an icon subordinate to the action's meaning.
If the final action is unavailable, explain the blocking condition nearby. A disabled button without a reason gives the organizer no correction path. Consider allowing a submission attempt that identifies missing information when that is clearer than making users discover every condition themselves.
Test the form while the mobile keyboard is open#
An Arabic error that wraps correctly on an empty desktop page can still be hidden below an open keyboard. Test the focused control, its label, associated help and error together on a real mobile viewport. Device emulation without the keyboard does not exercise that state.
Scroll to the visitor-count error and confirm that the organizer can see both the explanation and the value being corrected. Repeat for a long access note. Sticky headers, bottom actions and custom scrolling can each interfere with that relationship, so inspect the actual correction path.
Let labels and messages wrap in normal layout. A fixed-height error slot may work for a short English message but clip the reviewed Arabic explanation. Give the page room to expand instead of hiding the part that tells the user what to do. For layout diagnosis, use RTL elements overlapping on mobile.
Check text enlargement and the longest translated action labels. Verify that selection controls have usable labels and that opening help does not hide the instructions explaining which session the group can attend. Native session selectors also need device testing in both their collapsed and expanded states.
Do not conclude that an icon is correctly positioned from an empty control. Populate the organization with a long name, display an error and keep focus active. That combination exposes collisions hidden by the placeholder state.
Preserve the request through language changes and failures#
Switching the interface language should not silently clear visitor count, session choice or access notes. Preserve the draft's values and translate the interface around them. Do not translate user-entered content merely because the route changed.
Define what happens when the new language route reloads the page. Draft preservation needs an intentional implementation, not an assumption that the browser will restore every field. Test a language switch after a remote validation error and after returning from the review step.
Separate submission outcomes. A server rejection can identify a correctable field; a connection failure may leave the outcome unknown; an accepted request needs a confirmation. Do not present all three as the same Arabic error or clear the draft in each case.
For asynchronous progress and results, provide accessible status feedback as appropriate. W3C's status-message guidance covers updates that assistive technology can announce without receiving focus. This is distinct from deliberately moving focus to a correction summary after submission.
The confirmation should say whether the visit is requested or approved and what the organizer can do next. If it includes a reference such as VISIT-K6-238, give that value its own direction boundary inside Arabic text. Bidi isolation covers that rendering detail. Test the confirmation as part of the same journey, including any link back to edit details.
Make review and edit preserve the question's context#
A review step should show what the organizer is asking for, using the same Arabic labels as the entry fields. Do not replace a recognizable session label with an internal identifier, or compress an access note until the organizer cannot check its meaning.
Distinguish an unanswered optional question from an explicit negative answer. An empty access-arrangements note does not establish that nobody needs an arrangement. If the service needs that distinction, ask a separate question and provide answer choices that represent it. The review screen should reflect the answer actually supplied.
Each edit action should identify what it changes and return to the relevant field or section. After the correction, let the organizer resume review without re-entering unrelated details. Test returning with the browser's Back action as well as the interface's edit control.
Changing visitor count can invalidate a previously available session. Keep the corrected count and explain why a session needs to be chosen again; retaining every old selection would preserve an impossible request. Draft preservation means keeping useful work while rechecking dependencies, not treating stale choices as valid.
Test that change deliberately: choose a session for a smaller group, increase the count during review and inspect the revised request. The final summary and submitted data must describe the same group and session.
Review the journey with Arabic content and corrections#
Use one fixture that reaches beyond the empty form: an Arabic organization name, an accepted count in Arabic-Indic digits, a Latin email address and an access note long enough to wrap. Then change the count, select another session and force a server rejection.
| Task | Evidence to collect |
|---|---|
| Explain each question before answering | The organizer interprets labels and required status as intended |
| Complete using keyboard navigation | Focus follows a meaningful sequence and reaches help and actions |
| Enter and revise mixed-script values | Editing preserves text and the field's direction policy |
| Correct a capacity error | The message names a possible action and unrelated values survive |
| Switch language during a pending check | Current values and current-language feedback remain consistent |
| Submit on mobile with the keyboard open | The field, correction and action remain reachable |
| Review the result | Requested and approved states cannot be mistaken for one another |
Ask an Arabic-speaking reviewer to perform these tasks without coaching. Observe where they need to reinterpret a label or backtrack because a requirement appeared late. Engineers can verify associations and state transitions; wording and comprehension need review in the language users see.
Use separate evidence for separate failures. A submitted value proves what the server received, not whether bidi text looked right. A screenshot proves a visible state, not whether the error was announced or a mobile keyboard covered the next action.
A free Ritla scan can report : Untranslated form labels / validation / help text. The meaning of those messages, their timing and preservation of the visit request need the task review above; continue with Arabic localization testing to organize that review or Arabic text overflow when translated labels and errors outgrow their space.