QR codes that contain Arabic (and why some readers show garbage)
Make a QR code with Arabic text that decodes correctly, check it by scanning it back, and pick a size, colours and logo that stay readable.
Why you’d do this
Arabic text in a QR code is an everyday need: a menu note, a Wi-Fi name, a business card, a short message on a sign. It is also the case where a QR code most often goes wrong without any visible sign. The code looks perfect and scans without complaint, but the phone shows something like “E” where the Arabic letter should be.
The cause is how text becomes bytes. A QR code stores bytes, not letters, so the generator must first turn your text into bytes. Arabic letters need the UTF-8 encoding, where each letter takes two bytes. Some encoders still use Latin-1, which keeps one byte per character and simply cuts off anything that does not fit. An Arabic letter loses its top half and turns into an unrelated character, usually a plain Latin one. The code is valid, it just contains the wrong data. Scanner apps guess differently, so the fault can look random from one phone to the next.
This guide shows how to make a code that carries real UTF-8, how to confirm it by scanning it back, and how to size it so it keeps working.
How, with the named tool
QR Code Generator turns the text you type into UTF-8 bytes before encoding, so Arabic letters survive. QR & Barcode Reader reads a code back so you can check what it really contains.
- Choose what to encode. Pick Link, Text, WiFi or Contact. For Arabic wording, Text or Contact is the usual choice. Type your Arabic in the field; the preview redraws as you type, and the Encoded: line shows the content going into the code.
- Style it, carefully. The Foreground and Background colour pickers sit under the preview. Keep the code dark on a light background. If the pair is too close, the tool shows “Low contrast may not scan reliably.”
- Open Advanced if you need it. Here you can set Dot style, Corner style, Error correction (L, M, Q or H), a Center logo, and the export Size of 512, 1024 or 2048 px.
- Save it. Tap PNG or SVG. PNG suits screens and documents; SVG stays sharp at any print size.
- Scan it back. Open QR & Barcode Reader, tap Open camera and point it at the code on your screen, or use Upload an image or Paste an image with the file you just saved. The result card shows the decoded text.
- Then scan it with the phone you care about. The scanner reads in your browser, while your customers use their own camera apps. A test with a real phone is the only check of the real path.
What to watch for
Verify by decoding, not by looking. A code that renders cleanly proves nothing about its content, because a wrongly encoded code looks identical to a right one. Always scan it back and compare the text. This is the one step that catches the encoding fault.
Size and the quiet zone. The generator exports at 512, 1024 or 2048 px, with 1024 as the default. A bigger export prints sharper, but it does not make a printed code easier to scan. What matters is the printed size against the scanning distance. As a rough rule, scan distance is about ten times the code’s width, so a code scanned from arm’s length wants to be a few centimetres wide. The tool has no setting for the quiet zone, the empty border that readers need around the pattern. The QR standard asks for about four modules of it. Leave a clear margin in your layout and never crop the image tight against the squares.
Colour contrast. The tool flags a pair when the contrast ratio drops below 3:1. Treat that as a floor, not a target. A dark foreground on a light background gives the most dependable reading, and inverted codes, light on dark, are not supported by every reader.
Logos and error correction. The four Error correction levels recover roughly 7% (L), 15% (M), 25% (Q) and 30% (H) of damaged data. The default is M. A Center logo covers part of the pattern, so the tool switches error correction to H automatically and locks the level buttons while the logo is in place. Higher correction also needs more modules, which makes each module smaller at the same printed size. If you see “Too long to encode at this error correction level”, lower the level or shorten the text.
Static means final. The content is written into the picture itself. If a phone number or a word is wrong, make a new code and replace every printed copy.
Wi-Fi codes carry the password in clear. Anyone who scans the code can read it, so only display it where you would say the password aloud.
FAQ
Why does my Arabic QR code scan but show strange characters?
The generator probably used the Latin-1 encoding instead of UTF-8, which keeps only the low byte of each Arabic letter. The code is readable but holds the wrong bytes. Re-create it with a generator that encodes UTF-8, then scan it back to confirm the text.
Will a logo stop my code from scanning?
Not if the logo stays small and error correction is high. The tool raises it to H whenever you add a Center logo. Still scan the finished code with at least one real phone before printing, because a logo takes away some of the safety margin.
Does the generator or scanner upload my text?
No. The code is drawn in your browser, and the reader reads the camera feed or image on your device. Earlier scans are kept on your device under Recent scans, and Clear all removes them. On some browsers the scanner downloads a small reader component, about 1 MB, the first time you use it.
Open the tool
Share a link, WiFi login or contact in one camera scan
Point your camera at a code and see what it really says before you act on it