QR Code Generation on Terminal
How to encode a string into QR Code directly using the command line

There was a time when I need to transfer data from my MacBook Pro to my iPhone. There are many ways to transfer the data.
But one time, my Mac and my iPhone are on a different network in the same place.
I need to use an ssh client from my iPhone. But the iOS app unable to generate ssh keys. So I need to create the key from my MacBook Pro.
So how do I transfer the keys to my iPhone from my MacBook?
Do I need to use a cloud service like Dropbox? Sure I could, but my iPhone has no Dropbox client. I had to install it first. Thatβs just too many steps to follow.
Should I set up an SFTP server? Also too much work for one-time transfer.
So how can I transfer this particular text content without using any network interfaces?
Thatβs when I thought: βOh, my iPhone has a camera. Why donβt I generate a QR Code and scan it.β
Thatβs where I began my search and found qrencode.
This command-line utility is so awesome it can generate any data into QR Code.
It can generate image files. It can also generate a QR Code directly on your terminal with UTF8 or ASCII encoding.
You can install using your favorite package manager.
$ brew install qrencode
For example, letβs say I want to transfer my public ssh key from MacBook.
$ cat ~/.ssh/id_rsa.pub | qrencode -t UTF8
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββ βββββ ββββ β ββββ β β βββ ββ ββββββββ ββ β ββββββ ββββββββββ βββββ ββββ
ββββ β β ββ ββ ββββββββ βββββββββ ββ ββββ βββ β β β βββ ββββ β β ββββ
ββββ βββββ ββββββ ββββββββββββ βββ βββ βββββ ββ ββ βββββ ββ βββ βββββ ββββ
ββββββββββββ β βββββββ βββββ βββ β β βββ β βββββ βββ β βββ βββ β ββββββββββββ
βββββββ ββββ β ββββ β βββ ββ β ββ ββ βββ ββββββββ ββββββββ ββββ
ββββ ββββββ ββ β βββββ βββββ βββ ββ ββββββββββ β β βββββββββββββββ β ββββ
βββββββββ ββββ ββ ββββ β ββββββββββββββ ββ βββ βββ βββββββββ βββββ βββββ
βββββββ ββββββββ βββββ β ββ β ββββββ ββββ β β ββββ ββββββββββ βββ βββββββ
ββββ ββ βββββββββ ββ βββ β β βββββ βββββ βββ β ββ β ββββ β βββββ ββββ
βββββββ ββββ ββ ββββ ββ β βββββββββ β βββββββ βββββ βββ ββ β ββ β βββββββ
ββββ ββββββββββ β β β βββ βββββββ βββββββ β βββ ββ βββββββββ βββ ββ βββββ
βββββββββββββ βββββββββ βββββββββββ ββ β β ββββββββ ββ ββ β βββββββββ ββββββ
βββββ βββββββ βββββ β βββ ββββββββββ ββ ββββ βββ ββββ βββ βββββ ββββββ
ββββ ββββββ βββββββ β β ββββ ββββββββββ β β ββ β βββ β ββ βββββββ β ββββ
βββββ β βββββββββββββββββββββββ β βββββββββ ββββ βββββ ββββββββ ββ βββββββββ
ββββ β ββ ββ β βββββ β ββββββ ββββ β β β ββββββ β β ββ ββ ββ β β βββββ
ββββ ββ βββ βββββββββ βββ βββ βββ βββ ββββ βββββββββ ββββ β β βββ ββββββββ
ββββ β βββ βββββββ β ββ ββ β ββ β βββ β ββββββββββ βββββ β ββ βββ βββ ββββ
βββββββ ββββββββββββ β ββ βββββ ββ β ββ ββββββββ ββββββ β ββββ ββ βββββββ
ββββ ββββββββ ββββ ββ β β β ββββββββ ββββ ββ βββ β β ββββ ββββ ββββββββ
βββββββ β ββ ββββ ββββββ βββββββ βββ ββββββββββ β βββββ β ββ ββ ββββββ
ββββββ ββββ β β βββ βββ ββββββββββββ βββββ ββ β β βββββ β ββββββββ ββββ
ββββ β ββ βββ ββββ β ββββββββ βββββββ β βββββββ βββ β βββββ ββ ββββ βββββββ
βββββββββ βββββββββββββββ βββββ βββ ββββ β ββββ ββββ ββββββββ ββββ β ββββββ
ββββββ β ββ β βββββ βββββββββ ββ ββ ββββ βββ β ββ β ββββββββββ βββββ ββββ
ββββ ββββββ βββ ββ β β ββββ βββ ββββ βββββββββ ββββββββ ββββββββ ββββββββββ
ββββ ββββββ βββ βββ ββββ β ββββ βββ ββ βββββ β ββββ ββ βββββ ββ ββββββββ
ββββββ ββββ ββ ββββββ βββ ββ β βββ βββ βββββββ β ββββ β ββ β ββ βββββββ
ββββββ ββ ββ βββ ββ ββ βββββ ββββ ββ β βββββββ β ββ ββββ ββββ βββββ βββββββ
ββββ ββββββ β ββ ββ β ββββββ ββββ β β ββββββββββββ ββ ββ ββββ βββββ βββββββ
ββββββββββββ βββββ ββββββ β βββββββ βββ β ββββββββββ βββ βββ β βββ β βββββ
ββββ βββββ ββ ββββββββ ββββ βββββββ βββ ββ ββ ββ ββββββββ β β βββ ββ βββββ
ββββ β β β ββ ββββ βββ ββββ ββ ββββ ββ ββ βββββ β ββββ βββ ββββββββ
ββββ βββββ βββββββββ ββ ββ β β βββ βββββββ β βββ ββββββββββ β ββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
As you can see it prints QR Code in UTF8 encoding. Next open your iOS camera and scan it. Youβll get your content directly on your phone, without transferring to any network interfaces.
Letβs say you want to generate QR Code for a very large string. QR Code is limited so you can split the images. For example, you need to transfer your gpg public key and generate multiple QR Codes with it.
$ gpg --export -a johndoe@example.com | qrencode -Sv40 -o gpg.png
The command above will create multiple gpg-*.png files.
You can scan all of them to get your data.
So thatβs it for today. Hope this tutorial useful for you. Thanks for reading.
Cover Photo by Mitya Ivanov on Unsplash.
