Guide · 6 min
How to import a CSV for name badges
What the importer needs, what the mapping screen is asking you, and the four things that make a good file import badly.
Opens the editor. Import CSV is on the People tab, and the file stays in this browser.
A CSV is the least glamorous file format in the world and the most reliable way to get 300 names onto 300 badges. It is a text file: one line per person, values separated by commas. That is close to the entire specification, which is why every spreadsheet, CRM, ticketing platform and registration form can produce one.
The import itself takes about fifteen seconds. What takes longer is the mapping screen, and it is worth the minute it costs — it is the last place you see your data as the tool reads it, before it becomes a stack of printed card.
What a CSV actually is
Open a CSV in a text editor rather than in Excel once and it stops being mysterious. The first line is your column names. Every line after it is one person. Commas separate the values, and any value that itself contains a comma is wrapped in double quotes.
Because it is plain text, a CSV carries no formulas, no formatting, no hidden sheets and no merged cells. That is a feature rather than a limitation. All the things that make an .xlsx import unpredictable are exactly the things a CSV export throws away.
Name,Role,Company,Department Jane Smith,Head of Sales,Acme,Commercial "Brown, John",Staff Engineer,Acme,Engineering Sarah Jones,Marketing Lead,Northwind,Marketing
What makes a good header row
The header row is the first line, and it is the only line treated differently from the rest. Header names do not have to match anything, because you map the columns yourself — but names that describe their contents get guessed correctly, which means confirming three mappings instead of setting six.
Names like "Name", "Full Name", "Role", "Job Title", "Company", "Organisation" and "Department" are recognised. "Column1", "F3" and an empty cell are not, and they leave the mapping to you. Neither is wrong; one is faster.
- One header row, at the very top. A title like "2026 Delegate List" sitting above it becomes the header row instead, and then your real headers become the first person.
- One name per column. Two columns both called "Name" is legal in a CSV and confusing on the mapping screen.
- No merged cells. They do not survive the export and arrive as blanks.
- Split first and last name only if you need them apart. A single full-name column is simpler for a badge.
- Blank spacer rows between groups do no harm — rows with nothing in any mapped column are skipped — but they make the preview harder to read.
Delimiters: comma, semicolon and tab
The C in CSV stands for comma, and then reality intervenes. Excel installed with a German, French, Spanish, Italian or most other European locales writes CSV files separated by semicolons, because in those locales the comma is the decimal separator. Exports from databases and some ticketing systems use tabs instead.
All three are detected from the file, so you do not have to declare which you have. The symptom of a delimiter that could not be handled is unmistakable: one enormous column containing the whole row, with the separators still visible in the preview. When you see that, the file is usually not what its extension claims — most often an HTML table or a spreadsheet saved with a .csv name by a web app.
A .txt file with commas in it imports the same as a .csv. The extension is not what makes it work.
Encoding, and why the accents came out wrong
Zoë printed as Zoë, Müller as Müller, a curly apostrophe as ’. All three are the same fault: the file was written in a legacy single-byte encoding and read as UTF-8. It is not a font problem, and no amount of retyping the name in the people table fixes the next import.
The fix is at export time. In Excel, choose CSV UTF-8 (Comma delimited) rather than plain CSV — they sit next to each other in the Save As list and only one of them is safe. Google Sheets exports UTF-8 already, so File → Download → Comma-separated values is all there is to it. If somebody handed you the file, open it, re-save it as CSV UTF-8 and import again.
Look for this on the preview table, not on the printed badge. If it is there at all it is visible in the first three rows.
The mapping screen, column by column
After you drop the file in you get one row per column in your file: the header name, a sample of what is in it, and a dropdown saying where it goes. The dropdowns start pre-filled with a guess based on your header names.
Underneath is a preview table showing the first rows as they will be read. That table is the point of the whole screen. Read across one row and check the values sit under the right headings — a single stray comma in one line shifts every value after it, and the preview is where that becomes visible instead of expensive.
- 1Go to the People tab and choose Import CSV.
- 2Drop the file in or pick it from your computer.
- 3Read each guessed mapping and correct the ones that are wrong.
- 4Set every column you do not need to "Don’t import".
- 5Check the preview table row by row, paying attention to any row with a comma or an accent in it.
- 6Confirm the import, then click two or three people in the table and look at their badges.
Columns with no obvious home
Registration exports carry ticket numbers, dietary requirements, session choices, T-shirt sizes and consent flags. Most of that does not belong on a badge, and "Don’t import" is the right answer for it. Nothing is lost — your file is untouched and you can import it again with different choices in half a minute.
For the ones you do want, remember that badge text fields take variables. A column mapped to department is available as {{department}} and can sit anywhere, including inside a longer line like "Table {{department}}" if you have repurposed the column for seating. QR values take variables too.
Photo columns are the one to be careful with. A column of image addresses can feed the per-person photo, but each value has to be a direct link to the image file itself — an address ending in .jpg or .png. A Google Drive or Dropbox sharing link points at a web page that displays a picture, not at the picture, and nothing will render.
- Two columns mapped to the same field is the classic cause of every badge showing the same name. The mapping list is the only place that is visible.
- A column mapped to a field that is not on the badge design is harmless — it just never appears.
- An empty value in a mapped column leaves a gap on that one person’s badge, not on everyone’s.
- A row with a company but no name is not an empty row, so it imports as a badge with a blank name. Worth a glance down the list afterwards.
Blank rows, limits and re-importing
Rows where every mapped column is empty are skipped, which is what saves you from the trailing empty rows spreadsheets accumulate at the bottom. The count of imported people is your check: if you expected 214 and got 211, three rows were blank in every column you mapped.
The importer handles up to 5,000 rows. A few hundred appears instantly; a few thousand takes a moment when you generate the PDF, because every badge is drawn as real text rather than pasted in as a picture.
If you imported the wrong file, or the right file before somebody fixed it, empty the people table and import again rather than patching rows by hand. Nothing was uploaded anywhere, so a re-import costs seconds. And because the project lives in this browser on this device, keep the CSV — that file is your backup, not the project.