A command-line utility for generating QR codes which store text!
To view the help text for qrutil use:
qrutil --help
or
qrutil -h
Here is one simple way of generating a qr code from user input. Run the following:
qrutil qrcode.bmp
which will generate a qr code stored to the file qrcode.bmp
. Then enter the data you want to generate. To generate the code, press ENTER then ctrl+D (or ctrl+Z on Windows).
Alternatively, you can pipe your text into qrutil. For instance, if you wanted to generate a qr code which stored the text hello world
in the qr code file named qrcode.bmp
, you could run the following:
echo "hello world" | qrutil qrcode.bmp
Or, if you wanted to generate a qr code which stored 20 random bytes, you could run this:
head -c 20 /dev/urandom | qrutil qrcode.bmp
If you view the output files generated by such commands with an image viewer, you may see that the images are blurred. This is because each square of the qr code by default occupies one pixel. This can be changed, however, using the upscaling argument:
echo "hello world" | qrutil -u 10 qrcode.bmp
This will generate a qr code in which instead each qr code sqare occupies a 10 pixel by 10 pixel area.
By default, qrutil tries to generate the smallest qr code it can. However, qr codes support 4 modes of error correction which can make qr codes more robust to damage. In qrutil, an error correction level of 4
corrects for the most errors. On the other hand, a qr code with error correction level of 1
would not withstand as much damage. To specify the error correction level, use the -c
option:
echo "hello world" | qrutil -c 4 qrcode.bmp
This would ensure that the qr code which is generated has the highest level of error correction.
There are 40 versions of qr codes (1-40), with increasing versions being bigger and able to store more data. You can force qrutil to use a specific version using the -v
option:
echo "hello world" | qrutil -v 40 qrcode.bmp
This would make a very big qr code which just stores the text hello world
. Note that bigger qr codes are significantly harder to scan using qr code scanners.
Qr codes also support an "inverted" mode in which the background is black and the color of each module is reversed. To create an inverted qr code, use '-i':
echo "hello world" | qrutil -u 10 -i qrcode.bmp
By default, qrutil tries to choose the best of the 8 possible masks that can be used to generate qr codes. You can instead specify which mask to use using -m [num]
where [num]
is an integer between 1 and 8:
echo "hello world" | qrutil -u 10 -m 7 qrcode.bmp
qrutil can print out information about the qr code it generates. Use the --verbose
option:
echo "hello world" | qrutil --verbose qrcode.bmp
which would output:
Version: 1
Error Correction: 3
Mask: 5
Upscaling: 1
If you generate a qr code which can't be read, or you find any other bugs regarding qrutil then feel free to raise an issue!