Skip to content
Open beta — everything’s free right now, and your rate is locked when it ends.

A database that reads right to left

Most data tools treat Arabic as an edge case: one direction for the whole app, punctuation on the wrong end, a fallback font. What RTL actually requires — per-value direction, a real Arabic face — and how a mixed Arabic-English table should behave.

Updated August 2026

Type a plant list in Arabic into most data tools and you can watch the tool lose interest. The names sit hard against the left edge of each cell, reading the wrong way across the column. A value ending in a question mark grows its punctuation on the wrong end. The font changes mid-table. None of it crashes. All of it says: this software assumed you'd never come.

Here's what right-to-left support actually consists of — most of it applies to any tool you might evaluate — and then how Tabla does it.

Why data tools usually get this wrong

Direction gets decided once, for the whole app. The interface is left-to-right, so every cell inherits left-to-right, and an Arabic value is laid out backwards-feeling and left-aligned — anchored to the edge the eye doesn't start from. The correct unit for direction in a database is not the app or even the column. It's the value. One column can hold an Arabic name in row 3 and an English one in row 4; each cell has to decide for itself.

Mixed content breaks at the seams. Real Arabic data is full of Latin fragments — a SKU, a URL, a brand name — and Arabic text laid out in a left-to-right cell puts the seams in the wrong places: the trailing period renders at the far end, a parenthesis flips, PLT-104 splits an Arabic sentence like a wedge. Ordinary bidirectional-text rules, applied in the wrong base direction — the value needed to start right-to-left for its internal seams to land correctly.

The font is a fallback. Interface fonts ship Latin glyphs. When Arabic arrives, the browser substitutes whatever the operating system has, so Arabic renders in a different face than everything around it — a different size and weight on each platform. Nobody chose that font. That's the tell.

Fast grids opt out of the browser. The quickest grids draw their own pixels on a canvas instead of using browser text layout — so the browser's bidirectional machinery never runs, and direction is right only if someone wrote that code. Mostly, nobody has.

What "native" actually means

Four commitments, checkable in any tool in ten minutes with one Arabic row:

  1. Per-value direction detection. The first strongly-directional letter of a value decides — the same first-strong rule browsers use. Arabic value, right-to-left and right-aligned; the English value below it, the opposite; same column, both correct.
  2. Editing follows. The box you type into runs right-to-left the moment your text does — cursor movement, selection, punctuation.
  3. A chosen Arabic face. An actual font, shipped by the tool, weighted to sit evenly beside the Latin one — not the OS default arriving by accident.
  4. Mixed tables as the normal case. Arabic product names, Latin scientific names, an email address, prices — one record. If the tool's Arabic support degrades when English appears in the next cell, it was a demo, not support.

What a mixed table looks like when it works

Here's an Arabic inventory table — plant names in Arabic, scientific names in Latin, prices in Egyptian pounds:

A نباتات (plants) table in the grid: Arabic names and select chips right-aligned and reading right-to-left, Latin scientific names left-aligned in the next column, EGP prices beside them.

Each value reads its own way: زنبق السلام from the right, Spathiphyllum wallisii from the left, in adjacent columns of the same row. The choice chips — ظل جزئي, شمس كاملة — anchor to the right edge of their cells. Nothing about this table was configured. The data decided.

How this works in Tabla

Every value carries its own direction. Wherever a value renders as browser text — the record panel, cards on the board and gallery, filter inputs, the link picker, public view links — the element is marked direction-auto, so the browser's first-strong detection runs per value. So is every box you type into, which is commitment 2 for free: the editor flips when your text does.

The canvas grid does its own detection. The grid draws its own pixels for speed, so it can't lean on the browser — it applies the same first-strong rule itself. Text cells detect a right-to-left value and right-align it. Select and link chips go further: the row lays out from the right edge, in right-to-left order, the canvas put explicitly into RTL mode. Detection skips leading digits and symbols — Arabic-Indic digits included, which are direction-weak — so ٣ أصص still reads right-to-left.

The Arabic face is chosen, not fallen back to. Tabla ships IBM Plex Sans Arabic, self-hosted, as the one Arabic face beside Inter for Latin — its normal weight mapped one step heavier, because at grid sizes Arabic otherwise reads thinner than the Latin around it. Canvases don't trigger font loading on their own, so the grid loads the face explicitly and repaints — Arabic never gets stuck in a fallback font.

Arabic is data everywhere, not only in cells. Tables and fields can be named in Arabic — the table in the screenshot is named نباتات and was created over the API, Arabic field names and all; the names are the JSON keys. Search matches Arabic text like any other. Attachment filenames are stored verbatim, Arabic included, and download under their own names.

This was a founding rule, not a retrofit: the design document Tabla was built from says any value that begins with Arabic text is displayed right-to-left and right-aligned in its cell, and scheduled verifying it inside the grid for the first week of building. The check ran: plain text cells passed as-is; chip cells turned out to have no direction logic at all, so Tabla draws its chips itself, with explicit direction — which is why commitment 1 holds on a canvas.

The honest limits

  • The interface is in English today. Menus, buttons and settings are English and the layout is left-to-right — columns run left to right too. What's native is the data: your values, names, chips, searches. A mirrored Arabic interface is a different, later undertaking.
  • Direction is detected, not assigned. First-strong is the whole rule. A value that opens with a Latin code — PLT-104 صبار — reads left-to-right, exactly as it would in a browser, and there's no per-cell override to force it. Digits-only values count as left-to-right.

Most tools in this category publish nothing about any of this, and ten minutes with one Arabic row will show you why. Bring زنبق السلام and a scientific name to whatever you're evaluating — including ours.

Tabla is the database we build these on.

A no-code database with real Postgres underneath: every feature on every plan, a million records per database, and your whole database back out in one file, any day.

More guides