Mizanميزان
RTL & Arabic quality assurance

Your interface works fine until someone reads it right to left.

Mizan renders your product in Arabic, flips the document, and reports every place the layout gives up. No translation needed — pseudo-localisation does the work.

See pricing
your-product.com/dashboard
1,284
Active subscribers this month
Monthly invoice summary 12/04/2026
Export report
1
2
3
4
1text-align: left strands the figure on the wrong edge
2arrow points away from the reading direction
312/04/2026 — locale-specific date format
4label clipped: Arabic runs about 30% longer
Illustration. This panel is built with ordinary physical CSS — the defects are real, not staged.
See it work

Four steps, thirty seconds

Point Mizan at a page, watch it flip, and read what came back.

1 / 4
You paste a URL
Run scan
Mizan renders it in Arabic and flips the document
Defects surface with the selector to change
RTL002.gc__meta { float: right }
RTL007a.live-cta > span — 38px clipped
RTL006svg.icon-arrow-right — must mirror
The build stops on a real regression
0/100
"passed": false,
"blockingIssues": 4,
"failOn": "major"
exit 1

An illustration of the scan sequence. The findings shown are from a real report.

Scan

Point it at a real page

Three scans a day at no cost. The engine loads your page, substitutes shaped Arabic of realistic length, flips the document, and measures what breaks.

Licence active
Rules

Fourteen checks, written by people who read Arabic

Visual regression tools tell you something changed. These tell you what is wrong and which line to edit.

CI/CD integration

Fails the build before the bug ships

Drop this into any repository. It scans your preview deployment and stops the pull request when a change breaks the right-to-left layout. Nothing to install.

GitHub Mizan Build stopped
- name: RTL check env: PREVIEW_URL: ${{ steps.deploy.outputs.url }} MIZAN_LICENCE: ${{ secrets.MIZAN_LICENCE }} run: | curl -sS -X POST https://mizan.dev/api/scan \ -H 'Content-Type: application/json' \ -d "{\"url\":\"$PREVIEW_URL\",\"licence\":\"$MIZAN_LICENCE\",\"failOn\":\"major\"}" \ -o rtl.json node -e "process.exit(require('./rtl.json').passed ? 0 : 1)"

Blocking issues

!RTL006 — Directional icon not mirrored
!RTL007 — Text clipped, Arabic runs longer
!RTL002 — Physical CSS property

The response carries a plain verdict — passed and blockingIssues — so the job stops on a real regression and not on a stylistic nit. Keep rtl.json as a build artifact to see what changed.

Pricing

Pricing

Every plan includes the command line tool, CI integration, and the full rule set. Seats and volume are the difference.

Loading payment options…

Lost your key? Have it sent again