QR codes that never expire.
Free, no account, nothing leaves your browser — and every style stays inside limits proven against a deliberately bad scanner.
Styling stays inside limits proven against a deliberately weak scanner
This code doesn't need us. It keeps working even if this site disappears.
Other map providers:
Order stickers & labels onlineThat's an affiliate link — if you order, we get a small cut at no cost to you. It's how the site stays free.
Read a code
This code is a link to
No QR code found in that image.
Bulk codes from a spreadsheet
Upload a CSV. Get a ZIP of codes — generated in your browser, free.
Your QR code points exactly where you tell it. Nothing sits between the scan and your link, because there is no server involved at all. That is also why it is free: a static code costs us almost nothing to make, so we do not charge for it, do not watermark it, and do not put anything inside it. Your code stays yours.
We invite you to double-check our work.
Open your browser’s developer tools, switch to the Network tab, and make a code. Nothing leaves your device.
The whole source is on GitHub. Read it, fork it, run it offline.
Found a bug, or a claim that doesn’t hold up? Tell us — an example helps enormously, though we understand if yours is too sensitive to share: qr@geodeforge.com
That’s the difference between a privacy policy and a fact.
This slot pays for the page
One static, labeled sponsor link — an image we host and a plain link. No ad network, no tracking script, no third-party request. That is the entire business model, and it is why nothing above has a price.
Sponsor this slot →Make a QR code in any language that actually scans.
Type Chinese, Japanese, Korean, Arabic — any script — into GeodeQR, and the characters come through. The text is stored as UTF-8, the encoding today's phones read, and you can read the code back to check it before you print.
Why non-Latin characters come out scrambled
A QR code doesn't store letters. It stores bytes, plus a small note about how to turn those bytes back into text. When the bytes are written in one encoding and the scanner reads them as another, every character outside the basic Latin set turns to mojibake — 你好 comes out as ä½ å¥½, مرحبا as Ù…Ø±ØØ¨Ø§. The code scanned perfectly. The text inside was just labelled wrong.
So the fix isn't a fancier code. It's writing the bytes in the encoding a phone actually expects — and, where it helps, saying so inside the code.
How GeodeQR writes it
Your text goes in as UTF-8 — the encoding modern phones and cameras expect — and GeodeQR can add the standard marker (an ECI header) that declares it explicitly, so a reader doesn't have to guess. Chinese, Japanese, Korean, Arabic, Cyrillic, Greek, Hebrew, Thai, Vietnamese, accented Latin, and emoji all go in as the same well-formed bytes.
The code is built right here in this tab, by our own encoder — nothing leaves your device.
Right-to-left scripts
Arabic, Hebrew, Farsi and Urdu store and scan exactly like anything else — the bytes carry the characters, and your phone lays them out right-to-left when it shows them. There's nothing to switch on.
Check it before you print
Don't take our word for it — read the code back. Read a code decodes any QR on your device and shows you the exact text inside it. Make your code, read it back, confirm every character is intact, then send it to the printer.
If it's going somewhere you can't reprint — a sign, a menu, a package run — that ten-second check is worth it. A code that scans is not the same as a code that says what you meant.
If a reader still shows the wrong characters
A few older scanners guess an encoding instead of reading the one that's declared, and some assume a regional default. If that happens, read the code with the tool on this page: if the text is right there, the code is correct and the reader is the weak link. Most current phone cameras read UTF-8 without being asked.
More from GeodeForge
GeodeForge is a one-person studio that crafts open-source tools that do what they say, and let you check — in your browser.
Check at geodeforge.com →