In this article I’ll be showing you the simple method for generating QR codes using Inkscape – the free vector graphics editor.
QR codes are rapidly increasing in popularity, allowing people to quickly pull out their phone cameras and scan the code to be taken to any website URL. These QR codes have become more prevalent in places like restaurants, allowing patrons to quickly pull up the menu on their phones and thus reduce contact with a tangible menu.
So, how do you generate a QR code in Inkscape?

Start by opening Inkscape on your computer (you can download the software free from Inkscape.org). Under the “Time to Draw” tab (red arrow in the above image) for the welcome screen that pops up (assuming you’re using Inkscape 1.0 or newer), choose a document size based on any of the many available templates. I went with the “Desktop 1080p” size under the “Screen” tab (yellow arrow).

With your new document open, go to Extensions>Render>Barcode>QR Code (red arrow in the image above).

This will bring up a QR code dialogue. Here, you can set various settings – including the website where you’d like people to be directed when the code is scanned with a smartphone camera (this is under the section labeled “text” – red arrow in the image above).

In my case, I typed my website, “daviesmediadesign.com,” for the “text” field. I can click “Apply” to generate the QR code (yellow arrow), then click “Close” to exit out of the dialogue (don’t exit out of the dialogue right now if you want to learn more about advanced settings in the next section).
You can see the final product in the image above, which was generated using the default values for Inkcape’s QR code generator. I cover some ways to customize the appearance of the QR code later in this article.
I can also adjust some more advanced settings in this dialogue, which I’ll cover below.
Advanced QR Code Settings
Up to this point we’ve opened the QR code dialogue and added a URL to the “Text” field.

Next, if I check the “Live Preview” option (red arrow in the above image), a QR code will display on my document (blue arrow – you may have to move the QR code dialogue out of the way to see it).

Below the text field is the “Size, in unit squares” dropdown (yellow arrow in the above photo). This feature allows you to manually change how much data the QR code displays – which changes the size of the code itself. I don’t recommend manually setting this value as the Inkscape extension automatically creates the proper size QR code based on the URL you add to the “Text” field.
To put it simply: the longer the URL, the larger the QR code will be. For example, if I add a longer URL from one of my articles on my website (red arrow in the image above), you’ll see the QR code will become larger to accommodate the additional characters (blue arrow). It will contain more “modules” or little squares because the longer URL contains more characters.
To reiterate, I recommend keeping this dropdown set to “auto.”

The next dropdown is the “Error Correction Level” (red arrow). By default, this will be set to “L (Approx 7%),” which works best in “clean” environments – or in situations where you don’t expect the QR code to get dirty, warn out, or damaged/destroyed. If you expect the code to be placed somewhere where it can take a beating (i.e. on a construction job site, on a busy corner in a bustling city, etc.) you may want to bump the error correction up higher.
The highest setting is “H (Approx 30%),” and this setting will produce the largest QR code while also containing more data. The % basically means the amount of data that can be destroyed without affecting the QR code’s ability to be successfully scanned.

The “M (Approx 15%)” setting (red arrow) is a good compromise for protecting your QR code against damage without making the code too large or busy.

The next option is the “Character Encoding” dropdown (red arrow in the above image). There are four options here, with the best option for you depending on the language or symbols used in your URL or text.
If you’re using a standard URL that’s in English, you can stick with “Latin 1.”
When using certain European languages (non-English), you may want to go with CP 1250 or CP 1252.
Finally, if you’re using unicode characters or symbols in your text, including symbols from various languages around the world, you may want to go with UTF-8.

The next option, “Invert QR Code” (yellow arrow) is a checkbox that simply allows you to change the background color of the QR code from white to black (demonstrated by the red arrow in the image). You can also change the background color AND color of the main modules (the square shapes) of the code using some tools in Inkscape (more on that later).

The “Square Size” field (yellow arrow) lets you alter the overall size of the QR code. A smaller value shrinks the QR code, and a larger value scales the whole QR code up. In this case, I changed the size from 4.0 to 10.0, making the QR code larger (red arrow). You can also adjust the size of the QR code after you’ve applied your changes using other tools in Inkscape. However, if you want to scale the QR code up or down more precisely (based on the size of the square modules inside the code, in pixels), you can use this option.

The “Drawing Type” dropdown (yellow arrow) allows you to change how the modules inside the QR code are drawn. By default, the data is represented with squares when the “Smooth: neutral” option is selected. However, there are other custom settings to choose from. For example, the “Path: circle” option will change all the module elements to circles (red arrow in the example above). I’ll change this back to the default “Smooth: neutral” for the next step.

The next option, “Smooth square value (0-1)” (yellow arrow in the above photo), allows me to add or reduce the amount of smoothing applied to the square modules. By default, this is set to .2 – which means there’s a little bit of smoothing around the edges of each square. I can crank this value all the way up to 1.0, which adds drastic smoothing to the squares and thus sort of blends them all together more (red arrow). A value of zero will take away all smoothing applied to the squares. You can set this value to whatever you prefer – it is essentially just a way to alter the aesthetics of the code.

Below the smoothing dropdown is a text field titled “Path string” (yellow arrow) for adjusting the appearance and position of the QR code when you select the “Path: custom” option from the Drawing type dropdown (red arrow). It’s supposed to also work for the “Symbol” Drawing type option, although the Symbol option doesn’t work in Inkscape 1.1 – at least not for me.
The first item says “m 0,1” – this is a coordinate. If you change the first value, it will offset the location of the QR code to the left or right (depending on whether you make the number positive or negative). If you change the second value, it will offset the QR code up or down (again, depending on if the number is positive or negative). You can use any number here – I’m pretty sure it’s based on whatever unit your document is set in (i.e. pixels). This feature isn’t entirely necessary as you can always reposition your QR code after you apply it using the Select tool.
The next item, which is separated from the first item with the “|” symbol, says “0.5,-1 | 0.5, 1” by default. These values basically determine the size of the module symbols (i.e. the triangles). Changing any value will adjust one aspect of the triangle symbol. For example, if I type “0.8,-1 | 0.5, 1” the triangles will now appear skewed slightly to the right because I’ve adjust their dimensions.
You can play around with the values here on your own to see how you can customize the symbols. Just keep in mind that the values should probably stay under 1.0 as the symbols start to bleed into one another when you go beyond that (and thus it makes the QR code unreadable).

The last field is the “Group ID.” This allows you to manually assign an ID to the QR code for things like exporting to an SVG file – which is a “scalable vector graphics” file that also contains some code. If you leave it blank, Inkscape will automatically assign an ID to the code. Otherwise, you can add a name here manually. I typed “This is a test” as the Group ID. I’ll show you where it displays momentarily.
Click Apply (yellow arrow) to generate the QR code on your composition, then click “close” to exit the QR code dialogue (blue arrow).

You can view the Group ID by hitting ctrl+shift+x to bring up the XML Editor dialogue (red arrow). You’ll see the back-end code associated with this generated QR code. On the last line of code you can see the “This is a test” group ID I created (yellow arrow). In the table below, you can also see the metadata for this QR code, with the second line labeled “id” and the value labeled “This is a test” (blue arrow).

The generated QR code itself is actually two separate objects – the background and the foreground modules (i.e. the square elements). I can click on the background (green arrow) with the Select tool (red arrow), and click on a color in my color palette to change its color (blue arrow).

I can do the same thing with the foreground elements – click on them (green arrow) with the select tool (red arrow) and click on a color from my color palette (blue arrow) to change the color.
If I want, I can use gradients on either object to further customize the colors.
That’s it for this tutorial! If you liked it, you can check out my other Inkscape Tutorials or Inkscape Help Articles.