Match your training data to the register your users actually write in, which for consumer products is dialect and for formal documents is MSA. The mistake is treating this as a binary when it is a ratio you should choose deliberately and then state.
The failure mode in each direction
MSA-only data, dialect users. This is the common one. Modern Standard Arabic dominates available corpora because it dominates published text — news, books, official documents. A model trained on it handles a support message like "أرغب في الاستفسار عن حالة طلبي" perfectly and falls over on "وش صار على طلبي؟", which is what someone actually types.
Dialect-only data, formal input. Rarer, but real for products that process documents or official correspondence. A model tuned hard on conversational Gulf Arabic can misread formal register as out-of-domain.
Why "just use MSA, it's the standard" fails
Two reasons people underestimate.
Nobody's first instinct is MSA. In chat, support, reviews and social text, Arabic speakers write in dialect. MSA in those channels is a marked choice, usually signalling formality or distance. Training only on MSA means training on the register your users switch into when they are annoyed with you.
The dialects are not small variants. Gulf, Levantine, Egyptian and Maghrebi differ in vocabulary, negation, question formation, future marking and pronoun system. A model that has seen only MSA has not seen a slightly informal version of its training data — it has seen a different variety.
The practical answer: a stated mix
Rather than choosing, decide the proportion your product needs and publish it:
| Product | Reasonable mix |
|---|---|
| Consumer chat / support bot | 80–90% dialect, 10–20% MSA-leaning |
| Document processing, legal, gov | 80%+ MSA, some formal dialect |
| General assistant | Balanced, with dialect coverage across regions |
| Dialect ID or robustness benchmark | Deliberately even across varieties |
The number matters less than stating it. A dataset that says "85% Gulf dialect, 15% MSA-leaning" lets a buyer decide whether it fits. One that says "Arabic" does not.
Include the in-between register
The most useful thing missing from most Arabic corpora is not more MSA or more dialect. It is the middle: lightly formal dialect, the register people use with an institution they are not angry at yet.
It appears constantly in real support text and almost never in training corpora, because it is neither the published register nor the stereotypically colloquial one. Budget for it explicitly — a "white" or generally-Saudi register that is dialect-grounded without regional markers is often the single most represented register in real traffic.
How to check what you actually need
Before deciding, take a few hundred real messages from your product — or from a competitor's public reviews if you have none — and classify them by register. Almost everyone doing this for the first time finds more dialect than they expected, and more code-switching into English than they expected.
That distribution is your target. Build to it and state it, rather than inheriting whatever a scraped corpus happened to contain.
One thing that is not a solution
Translating MSA data into dialect with a model produces text that is dialectal in vocabulary and MSA in structure. It reads wrong to native speakers in a way that is hard to articulate and easy to detect, and it teaches your model a register nobody speaks. If you need dialect data, generate or collect it as dialect.