How to paste a list of URLs and get QR codes back
Exporting a CSV is overkill when you already have the URLs sitting in a chat message, a text file, or two columns of a spreadsheet. The Paste a list tab takes them directly. No file, no column mapping, no export step.
The basic version
Open the generator, choose Paste a list, and put one URL on each line:
https://example.com/welcome
https://example.com/menu
https://example.com/contact
A counter under the box tells you how many URLs it has recognised as you type. If that number does not match what you pasted, something on one of the lines is wrong — usually a stray blank line, which is ignored, or a line that is not a URL at all.
Set your format, size and error correction, then generate. You get back a
ZIP called qr_codes.zip containing
qr_code_1.png, qr_code_2.png and so on, numbered
in the order you pasted them.
Adding filenames
Numbered files are fine for three codes and useless for forty. To name them, add a filename after a comma or a tab:
https://example.com/welcome, welcome-packet
https://example.com/menu, dinner-menu
https://example.com/contact, contact-card
That produces welcome_packet.png,
dinner_menu.png and contact_card.png. The
same sanitising applies as everywhere else in the tool: anything that is
not a letter or number becomes an underscore, runs of underscores
collapse, and duplicates get a numeric suffix so nothing is silently
overwritten. The
file naming
guide goes into that in more detail.
You can mix lines with and without filenames. Unnamed ones fall back to numbering.
The useful part: paste two columns straight from a spreadsheet
Tabs work as separators as well as commas, and this matters more than it sounds. When you select two columns in Excel, Google Sheets or Numbers and copy them, they land on the clipboard tab-separated. So you can select a URL column and a name column, copy, and paste the pair directly into the box:
https://example.com/a Room 101
https://example.com/b Room 102
https://example.com/c Room 103
That is the whole workflow. No CSV export, no column mapping, no file anywhere. For a one-off run of a few dozen codes it is considerably faster than the CSV route, which earns its keep on recurring jobs and larger batches.
Column order matters: URL first, name second. If your sheet has them the other way round, reorder the columns before copying.
The comma rule that catches people out
Each line is split at the first comma or tab it contains. Everything before is the URL; everything after is the filename. That is simple and predictable, and it breaks in one specific case: a URL that itself contains a comma.
https://maps.example.com/?q=51.5074,-0.1278, london-office
That splits at the comma inside the coordinates, so the URL is truncated
to https://maps.example.com/?q=51.5074 and the filename
becomes the rest. The code generates without complaint and points
somewhere wrong.
Two ways out:
- Use a tab instead. URLs essentially never contain tabs, so tab separation is immune. This is another reason pasting from a spreadsheet is the safer route.
-
Percent-encode the comma as
%2C. It is equivalent in a URL and removes the ambiguity.
If a URL contains a comma and you do not want a filename at all, encode it anyway — otherwise the line still splits at the comma.
Which input mode to use
| Mode | Best for | Gives you |
|---|---|---|
| Paste a list | A handful up to a few hundred, already in text form | URL and filename |
| Upload CSV | Recurring jobs, large batches, data with many columns | URL, filename, column choice, filename prefix |
| Enter manually | A few codes, or when you need multiple copies of one | URL, filename, and a copies count |
The one thing paste mode does not offer is the copies field. If you need forty identical codes for a sheet, use manual entry — see printing a sheet of identical codes.
Pasting things that are not URLs
Nothing here requires a URL. Whatever is on the line gets encoded as-is, so the paste box handles any text a QR code can carry. A few that are genuinely useful in bulk:
| What you want | What to paste |
|---|---|
| Dial a number | tel:+441234567890 |
| Start an email | mailto:hello@example.com |
| Send a prefilled SMS | sms:+441234567890?body=BOOK |
| Open a map location | geo:51.5074,-0.1278 |
| Plain reference text | ASSET-004821 |
That last one matters for asset tags. If your stock system scans a bare ID rather than a URL, encode the ID directly — there is no need to invent a web page for it.
Two cautions. Anything containing a comma — the geo: example
above, or a WiFi string — hits the splitting rule described earlier, so
use a tab separator or percent-encode it. And plain text without a
protocol will not be offered as a link by most scanners, which is correct
for an asset ID and wrong if you meant a web address.
Before you paste a long list
-
Every URL needs its protocol.
example.com/pageencodes as plain text and many scanners will not open it. Includehttps://. - Watch for smart quotes and trailing punctuation if the list came from a document or an email. A full stop at the end of a line becomes part of the URL.
- Check the count under the box before generating. It is the cheapest error check available.
Everything runs in your browser. Pasted URLs are never uploaded anywhere, which matters when the list contains customer links or anything else you would rather not hand to a server.