The mind of the six billionth one…
QR Code and 2D Code Generator
This page is an online two dimensional code generator which is written in PHP. It can generate QR Code, Data Matrix, Aztec Code and Micro QR Code for the time being. Because QR Code is much more popular than the other code formats, it is separately named in the page title. If you need more information on two dimensional bar code systems, I suggest that you take a look at Roger Smolski’s comprehensive blog on QR Code and two dimensional bar codes.
Using the form on this page, you can create two dimensional code images that trigger various actions on the reader device. You can use this form on both your desktop browser or your new generation mobile device (like iPhone). You can find the explanations under the form. If you like this page and you have ideas to implement, please give feedback, so that I can improve the page. So far, this page created 72551 codes since I started counting in January, 2010. Seems like especially QR Codes are getting more and more popular outside the far east.
Please be sure to read the Notes section below, if you encounter any problems with code generation (Especially for Micro QR Codes!).
If this generator has somehow been useful to your commercial business, perhaps you would consider contributing by clicking the PayPal button below.
Notes:
The generator tweets (does not tweet your input!) as @qrcodegen on Twitter with every new generated 50th 2D code. Be aware that it is a bot, so it can’t follow you back or reply to you in any way (your inquiries to it will most probably go unnoticed). Also, you can follow me on Twitter through @kerem_erkan. If you use and like this generator, I would really appreciate it if you could recommend it on Facebook by clicking the “Recommend” button above, or tweet about it by clicking this link.
Data Matrix and Aztec Code have significantly lower capacity (4096 alphanumeric characters for QR Code, 3067 for Aztec Code and 2335 for Data Matrix), so if you would like to encode a lot of text, select QR Code. Be aware that, although you give an input consisting of only alphanumeric characters (i.e. lowercase and uppercase ASCII characters and numeric digits only), the maximum capacity strongly changes with the density of letters vs digits. So it is impossible to guarantee that your input will successfully be encoded before trying to encode it. If it cannot be encoded, the generator will give a warning. In that case, lower the character count in your input and try again.
To create the best readable code for long URLs, use one of the URL shortening services so that the resulting code is as small as possible. I personally prefer bit.ly over the others.
Micro QR Code cannot hold more than 35 numeric and 21 alphanumeric characters, and it can hold even less characters when you add non-alphanumeric characters like “/” to your input. So it can only be used for very small URLs or text input (It cannot even hold a bit.ly URL when you prefix it with “http://”). But it is more efficient than QR Code when you use it with very small inputs.
If your device cannot interpret the encoded 2D Code properly, it probably means your reader program is written poorly or does not have the capability of decoding that particular code format; or your device does not accept that action, because all codes created by this script and the content within them are compliant to all necessary published standards (vCard standards, URL encoding schemes, NTT DoCoMo standards, etc.).
While we are talking on standards, let me open the topic up a little bit more. Sadly most readers out there do not follow special character escaping standards. Characters like “:” or “;” are special characters in vCard, meCard or vEvent specifications, and they should be properly escaped for the input to be interpreted correctly. This generator follows these standards correctly, and so a URL field like “http://example.com” becomes “http\://example.com” after escaping. The problem is, readers like QuickMark do not know how to handle this escaped character and break altogether. If you encounter such problem, select No for Escape Special Characters in vCard, meCard or vEvent creation. But while you will be able to read those QR Codes in broken readers, be aware that, your 2D Code will not be standards compliant and you may not be able to add a URL that includes a second colon (for example as a port number separator) or semicolon when you do that.
Aztec Code may not support UTF-8 characters for the time being, so if you encounter such a problem try QR Code or Data Matrix. Another caveat of Aztec Code is that, it is not supported by most of the reader programs out there. As for Kanji and Cyrillic characters, only QR Code should support them, but I don’t have feedback for those yet (Can anyone who can read Kanji or Cyrillic characters confirm that?).
Always use dark colors for foreground color and light colors for background color. If there is not enough contrast between foreground and background colors, your device will most probably fail to decode the code.
A note on vCard coordinates: Neither vCard 2.1 nor vCard 3.0 specification does accept parameters for coordinates like “Home Address Coordinates” or “Work Address Coordinates”, etc. So the coordinates represent the vCard itself, not any of the addresses you provide in the vCard. In vCard 4.0 spec, you will probably be able to bind geographical coordinates to your addresses.
Currently you can do the following with this form:
- You can browse to a website.
- You can bookmark a website.
- You can make a phone call.
- You can send a short message.
- You can send an e-mail.
- You can create a vCard (v2.1 or v3.0) with coordinates to add a contact to your device.
- You can create a meCard to add a contact to your device.
- You can create a vCalendar event to add to your calendar.
- You can open location coordinates in Google Maps on your device (works on iPhone and Android).
- You can create
market://URLs for searching for publishers or packages on Market app for Android. - You can create special
youtube://URLs for YouTube app on iPhone. - You can fetch and encode the latest tweet of a Twitter user.
- You can create a mobile URL to tweet on Twitter.
- You can create a mobile URL to update your Facebook status (UPDATE: Does not work for the time being. I am searching for a workaround.).
- You can read plain or free formatted text on your device.
You can change the block size of the generated image to make it bigger or smaller. Also, you can change the margin size of the image to add more quiet zone if your decoder cannot decode it (Especially Data Matrix seems to need bigger margin sizes). Error correction level for QR Code (ignored for other code types) can be set to 4 different values and higher values may cause the image to be decoded slightly slower. The 4 values can be explained like this:
- Low (L): Up to 7% of errors can be corrected.
- Medium-Low (M): Up to 15% of errors can be corrected.
- Medium-High (Q): Up to 25% of errors can be corrected.
- High (H): Up to 30% of errors can be corrected.
You can choose PNG, PDF, SVG or EPS outputs. SVG will output a vector image XML file, and you can edit it in applications like Adobe Illustrator or Inkscape.
Please be aware that while I make checks for illegal characters to protect my server, I do not check your input for a meaningful value. For example, if you enter letters for phone number in “Make a Phone Call” action, and your device initiates a nuclear launch sequence in a forgotten former U.S.S.R. rocket silo, it will be your problem, not mine.
The image generation is done using third party encoders. I have only written a handy PHP front end that formats your input and passes it to these encoders.
You will need some 2D code decoder software on your mobile device to be able to read these codes. If a decoder is not preinstalled, you may find one, suitable for your device from Kaywa or QuickMark. I haven’t been able to find a good decoder supporting all formats and all actions on iPhone yet.
- QR Codes: a link between the physical and digital worlds « EUCOMversations
- QRcode applications | Harmpie's Blog
- Verschilende 2D (bar)code | Harmpie’s Blog
- QR Code Magic - Christian Magician Brad Brown
- CBS Bibliotek Blog – Innovation & Ny Viden » Blog Archive » TICER 2010 – in retrospective
- Exploring QR codes | The Savvy Technologist
- A Wider Net | 2D Barcode Guide





about 3 weeks ago
Hi Kerem – big thanks for your generator, it’s by far the most powerful and easy to use I’ve found.
Have you made, or could you recommend something to track codes with? I’d love to track how many people have scanned my codes, etc. I’ve tried a few QR campaign management options, but none seem to cover the range of reader actions you do.
Thanks,
g
about 3 weeks ago
Hi,
I am working on a tracking service, which, when finished will be able to track most QR Code actions on my site in the future. But for now, probably there are no tracking services that can suit your needs.
Cheers.
about 3 weeks ago
Thanks Kerem,
Do you know when your service will be available? We’re planning our first campaign for October…
Cheers.
about 3 weeks ago
It may not be available for your campaign, but let’s keep in touch.
about 3 weeks ago
Cool, will do. Cheers.
about 3 weeks ago
Kerem,
Again, thank you for your knowledge and this site. It remains the most useful/helpful site on QR codes.
A question came up recently about the ability to include a photo on a vcard, and generating a QR Code for that format.
Is that possible, or would the inclusion of a graphic make a QR code so dense that it would render it unreadable?
thank you for your help.
about 2 weeks ago
Hi Paul,
Thank you for your kind words
. As you know, QR Codes can hold a maximum of 4096 alphanumeric characters. The photos in vCards are converted to Base64 encoding and so, take up more space than their original size. So, with additional contact information, you will have something like 3 KB for the photo in Base64, which will be nearly 2 KB in original form. I think a 2 KB photo will be too small and will not be a feasible solution.
But another approach can be this: You can create a vCard including the photo and put it to a server, then, point the QR Code to the vCard URL. This will need the other party to be connected to the internet, but, at this time, most mobile devices already are.
about 2 weeks ago
Hey Kerem,
Big thanks for your generator, i’s very nice and useful.
Cheers, Harald
about 2 weeks ago
Hello Harald,
Thanks, it’s the appreciation of people like you that makes me continue the work on the generator.
Best regards.
about 2 weeks ago
Thanks! Works perfectly!
about 2 weeks ago
You’re welcome.
about 2 weeks ago
Thanks for your help!
Not sure if you are working on this, but It would be good if you allowed users to also embed an image in the QR Codes?
Keep up the good work!
Alex
about 2 weeks ago
Hi Alex,
Please see my earlier comment to Paul, it’s not feasible to add an image to a QR Code.
about 2 weeks ago
Great generator and helpful tips. Can I use these generators for commercial purposes without having to pay liscensing fees, etc.?
about 2 weeks ago
Sure you can, John.
about 1 week ago
Kerem, you really are the man. Awesome work!
Question to all, does anyone have a work around for QR SMS messages when read in the iPhone? Always looses the body of the message for me (3G model). Is anyone else finding this? Have tried a few generators too.
about 1 week ago
Thanks Mark,
The answer to your question: Most probably Apple does not let you fill in the body of the message. Or the reader programs cannot interpret the code correctly. I think the problem is the first one, but I am looking into writing my own reader for iPhone, so I hope to find a solution for this.
Cheers.
about 2 days ago
Had the same issue, but it applies to some readers.
Just installed QuickMark for iPhone4 and it did do the trick… However it is not free…
about 1 week ago
Good job! Currently working on analysis for QR codes. We found out that the scanlife scanner does not support uppercase, It translates all url’s using uppercase into lowercase, so some redirects don’t work and an error is presented. Strangely it does not support case sensitivity.
(It is also that uppercase url’s makes the QR code smaller by 47%. ) Other scanner apps do the job just fine, but we noticed that the i-nigma reader goes crazy when holding your phone vertical (not landscape) and it does a poor job in scanning QR codes high value anyway.
What is your experience in using Uppercase url’s and the quality for most scan apps?
about 1 week ago
From my attempts to convert a URL into a miro-QR code, no matter what the settings, the URL is too long.
about 1 week ago
Please read the Notes section carefully, this is already covered there. And please do not use bogus mail addresses or names if you don’t want your comments to be marked as spam.
about 1 week ago
I’m having trouble creating a code to send an e-mail. When I try to scan it nothing’s happening.
about 1 week ago
Did you try different reader programs?
about 1 week ago
Not yet. I’ve been using the scanner built into BBMessenger. I’ll try some others.
about 1 week ago
Yeah, probably that’s the cause.
about 1 week ago
Tried a couple others with no better results. ScanLife says it’s an invalid address. Do I need to enter more than my e-mail address into your generator?
about 1 week ago
No. Did you try other generators?
about 4 days ago
Hi Karem, I’ve seen some 2D codes embedded into a picture.
How may I edit a code to include such images? Is there an editor that allows this feature?
about 4 days ago
Hi Tavo,
I could not understand what you mean by embedded. Do you want something like steganography? If that’s the case, I don’t know any such editors.