Game libraryFor owners

Import your games from a spreadsheet

Add your whole collection at once from a spreadsheet or a BoardGameGeek export: the Title column every file needs, what each other column does, and how BoardGameGeek fills in the rest.

Last verified

If your games are already listed in a spreadsheet, you can add them all to your Library in one go instead of typing each one with Add game. Save the spreadsheet as a CSV file, choose it in GameLedger, and BoardGameGeek can fill in the box art, player counts, play times and descriptions you left out.

This guide covers the one column every file needs, what each other column does, each step of the import, and what to do when a row doesn't come in the way you expected.

Before you start

You need:

  • Permission to edit the Library. Owners and admins always have it. A staff member needs View and Edit ticked for Library on the Team page, or the Import CSV button doesn't show. See Team and permissions.
  • A CSV file. The file picker only shows files ending in .csv. In Excel, choose File → Save As and pick CSV UTF-8. In Google Sheets, choose File → Download → Comma Separated Values (.csv). In Numbers, choose File → Export To → CSV. Files separated by semicolons or tabs work too, as long as the name ends in .csv.
  • The column names in the first row. Delete any heading or empty rows above them.
  • One row per game. Put how many copies you own in the CopiesInRotation column rather than repeating a game on several rows.

Import your games

Step 1: Open the import

Click Library in the left-hand menu, then Import CSV at the top of the page. The Import games from a CSV window opens with an example of the layout the import reads.

The Import games from a CSV window. A teal box reads Your file needs a column named Title, and says a column called something else, like Name or Game, won't be picked up. Below it, an example table with a Title column holding Catan and Wingspan and a CopiesInRotation column holding 2 and 1, then a note about BoardGameGeek auto-fill. At the bottom, Download template and Choose CSV file buttons.
The first window repeats the one rule: a column named Title.

Step 2: Get the template, if you want one

Click Download template to save game_import_template.csv. The Download Template button next to Import CSV at the top of the Library does the same. Its first row has every column the import reads, spelled the way the import expects, so it is the easiest way to build a new file.

The template comes with three sample games: Catan, Ticket to Ride and Wingspan. Delete those rows before you import, or they are added to your Library.

You don't have to use the template. Any CSV works as long as it has a Title column. Other columns only come in when their names match the column list.

Step 3: Choose your file

Click Choose CSV file and pick your file. GameLedger reads it in your browser and checks it before anything is saved:

  • If it finds no Title column, no names under it, or no rows at all, it says so and imports nothing. See When the file can't be read.
  • Otherwise it checks your games against your Library, showing Checking which of these games are already in your library... for a moment.

Step 4: Decide what happens to games you already have

If none of your rows match a game in your Library, the window says None of these rows match games already in your library. and there is nothing to choose.

If some do, it says how many, for example 2 of 5 rows match games you already have, and offers two choices:

  • Skip games I already have (chosen to start with): those rows are left out, and nothing about your existing games changes.
  • Add these copies: each matching row's CopiesInRotation is added to the copies of the game you already have. Nothing else on that game changes.

The window's title counts the rows it will send, for example Import 3 Games. With Skip games I already have, the rows that match aren't counted. How a row is matched to a game you already have is under Games you already have.

The Import 3 Games window. It reads 2 of 5 rows match games you already have, with two choices: Skip games I already have, which is selected, and Add these copies. Below, Would you like to automatically fill in missing game details using BoardGameGeek?, a list of what BGG Auto-fill can populate, a note that Skip BGG would skip 2 rows, and the Skip BGG and Auto-fill from BGG buttons.
When some rows match games in your Library, you choose what happens to them.

Step 5: Choose whether BoardGameGeek fills the gaps

The window asks Would you like to automatically fill in missing game details using BoardGameGeek?

  • Auto-fill from BGG imports your games, then looks each new game up on BoardGameGeek and fills in only what your file left blank. A Title on each row is enough. See What BoardGameGeek auto-fill does.
  • Skip BGG imports exactly what is in your file. Each new game then needs MinPlayers, MaxPlayers, MinTime and MaxTime, and a row missing any of them is skipped. If that would skip rows, the window warns you first, for example Skip BGG would skip 12 rows.

When more than 50 of your rows are new games, the window also shows Large import detected: with auto-fill, a big library takes a while.

Both buttons stay greyed out until the check against your Library has finished.

Step 6: Keep the page open while it runs

The window shows Importing 75 / 300 rows... as your games are saved. Large files are sent in batches of about 75 rows.

With auto-fill, games GameLedger already has BoardGameGeek details for are filled in straight away. If any are left to look up, a message says Now filling in details from BoardGameGeek, and a Fetching BGG Data window shows a progress bar. Each of those games takes about 3 seconds. Keep the page open until the summary appears. If you close it, the games it hadn't reached keep only what your file had, with starter values for any blank player counts, play times and complexity.

Step 7: Read the summary

When everything is done, a summary opens and stays until you close it. It is titled Import finished, or Import finished, with some things to check when something needs a look. It shows:

  • Imported: how many new games were added.
  • Updated: games you already had that got more copies, when you chose Add these copies.
  • Skipped ... matching games you already have: when you chose Skip games I already have.
  • Skipped ... (listed below): rows that were refused, each named under Rows to check with the reason. That list also names rows with no title, and notes such as a dropped link. See What the messages mean.
  • Filled from BoardGameGeek: with auto-fill, how many games got details from BoardGameGeek. Already complete counts games that had nothing left for it to add.
  • BoardGameGeek couldn't find and weren't filled from BoardGameGeek: games that were imported with only what your file had, each with the reason, such as No confident BoardGameGeek match for this title or BoardGameGeek didn't answer in time. Open each one in your Library and finish it on its Edit Game form.

Long lists show five entries, then a Show all button.

The Import finished, with some things to check window. It lists Imported: 2 new games, Skipped: 2 rows matching games you already have, Skipped: 1 row (listed below) and Filled from BoardGameGeek: 1 game (1 instantly from GameLedger's saved BoardGameGeek data). Under Rows to check, Row 5 Cascadia needs at least 1 copy and was skipped. Under BoardGameGeek couldn't find 1 game, Wingspam, with No confident BoardGameGeek match for this title.
The summary names every row and game that needs a look.

If your file has no Title column

When your file has no column named Title, the window says This file has no Title column, lists the columns it did find, and asks Which column has your game names?

The This file has no Title column window. It explains that GameLedger reads each game's name from a column named Title and that nothing has been imported, and lists the columns in the file, Name and Copies. Below, Which column has your game names? with Name chosen in a drop-down and a Use as Title button, then Close and Choose another file.
Pick the column that holds your game names, then click Use as Title.

You have two ways to carry on:

  • Pick the column and click Use as Title. GameLedger suggests a likely column, such as Name or objectname, when it finds one. The next window shows a few names from that column, for example Game names from your "Name" column: Catan, Azul, Wingspan, …, so you can check you picked the right one. Change column takes you back.
  • Rename the column to Title in your spreadsheet, save it again and click Choose another file.

Nothing is imported until you do one or the other.

If the columns listed look like a heading rather than column names, your file has something above the column names. Delete those rows in your spreadsheet and choose the file again, rather than using Use as Title. If they look like your first game, such as Catan and 2, your file has no row of column names at all. Add one at the top that includes Title, then choose the file again.

What each column does

Spell each column name exactly as it is below, with the same capital letters and no spaces. Title is the exception: title or TITLE works too. A column the import doesn't know is ignored without a message, so Shelf Location or Min Players with a space don't come in. The template has every name spelled correctly.

You can leave out any column except Title, and put the columns in any order.

ColumnWhat to put in itIf it's blank
TitleThe game's name. Required.The row isn't imported.
CopiesInRotation (or Copies)How many copies you own, as a whole number. A 0 skips the row. A word or a negative number counts as 1.1 copy.
MinPlayers, MaxPlayersPlayer counts as whole numbers, 1 or more. MinPlayers can't be more than MaxPlayers.Auto-fill finds them. With Skip BGG, the row is skipped.
MinTime, MaxTimePlay time in minutes, as whole numbers. Write 60, not 1 hour.Auto-fill finds them. With Skip BGG, the row is skipped.
Complexitysimple, medium or complex. Any other word, or a number, counts as blank.Auto-fill finds it. With Skip BGG, Medium.
DescriptionA short description guests read on the game's page.Auto-fill adds BoardGameGeek's.
VibesTags separated by commas, for example strategy, negotiation. Each is saved in Title Case, so co-op becomes Co-Op.Auto-fill adds up to three of the game's BoardGameGeek categories.
ShelfLocationWhere the game sits, for example Shelf A3.Empty.
Statusin_rotation, out_of_service or retired, with the underscores.In rotation.
Conditionnew, good, worn or problematic.Good.
IsStaffPicktrue, yes or 1 for a staff pick.Not a staff pick.
SetupStepsSetup instructions for guests.Empty.
RulesBulletsThe key rules for guests.Empty.
ImageUrlA link to the box art, starting with https://.Auto-fill adds BoardGameGeek's box art.
InstructionalVideoUrl (or VideoUrl)A link to a how-to-play video, starting with https://.Auto-fill adds one when BoardGameGeek lists it.
BggIdThe game's number on BoardGameGeek. It's in the game's web address: for boardgamegeek.com/boardgame/13 the number is 13.Auto-fill looks the game up by its title.
BggRank, BggRatingThe game's BoardGameGeek rank and average rating.Auto-fill adds them.

A few things to watch for:

  • Use plain numbers. The import reads the digits at the start of a cell and ignores the rest, so 2-4 in MinPlayers becomes 2 and 1 hour in MinTime becomes 1 minute. A 0 in a player or time column counts as blank.
  • Status and Condition only take the words above. Anything else, such as Out of service written with spaces, or Like new, quietly becomes In rotation or Good. Capital letters don't matter.
  • Links must start with https:// or http://. A link such as www.example.com/azul.jpg is dropped, the game still comes in, and Rows to check says ignored ImageUrl.
  • A full stop, comma, semicolon, ! or ? at the end of a title is dropped. Sushi Go! comes in as Sushi Go, and extra spaces are tidied away.
  • Cells with commas need quotes. Excel, Google Sheets and Numbers add them for you when they save a CSV, so this only matters if you write the file by hand.
  • Missing pieces, notes, preferred seating and Hide from public games page aren't part of the import. Set them on each game in your Library afterwards.

What BoardGameGeek auto-fill does

Auto-fill only fills what your file left blank, or what the import couldn't use, such as a Complexity of 3 or a link that doesn't start with https:// or http://. Everything else in your file is kept. It never changes copies, shelf location, status, condition, staff picks, setup steps or rules.

For each new game it can add the box art, the player counts and play times, a description, up to three categories as vibes, a complexity based on how heavy BoardGameGeek players rate the game, the BoardGameGeek rank, rating and number, and a how-to-play video.

How it finds each game:

  • A row with a BggId is matched by that number only, never by its title. If BoardGameGeek has no game with that number, the summary lists it under BoardGameGeek couldn't find. Use just the number: a whole web address in the cell is reported as not a BoardGameGeek id.
  • A row without a BggId is matched by its title. GameLedger first looks for the exact title, ignoring capital letters, punctuation and accents. If that finds nothing, it searches BoardGameGeek and takes the closest title, as long as it is close enough. When nothing is, the summary says No confident BoardGameGeek match for this title.

Because the search takes the closest title, a short or misspelled title can pick up a different edition or a game with a longer name. After a big import, look over the box art of your new games. If one is wrong, correct it on its Edit Game form, or delete it and add it again with Add game, where you choose the match yourself. To avoid this, put each game's number in BggId, especially for games with several editions.

A game BoardGameGeek can't fill is still imported with what your file had. Blank player counts and times get starter values so the game can be saved, 1 to 4 players and 30 to 60 minutes, moved to fit any number you did fill in. A blank complexity becomes Medium. Correct them on the game's Edit Game form.

Games you already have

A row matches a game in your Library when the titles are the same, ignoring capital letters, punctuation, extra spaces and accents. So ticket to ride - europe matches Ticket to Ride: Europe, and Pokemon matches Pokémon. The words still have to be the same: Dungeons and Dragons doesn't match Dungeons & Dragons, and Mind doesn't match The Mind. A row that doesn't match is added as a new game, so a different spelling can give you the same game twice.

The import never changes anything on a game you already have except, when you choose Add these copies, its number of copies. To change other details of an existing game, edit it in your Library. A matching row is still checked, so if its player counts are the wrong way round, it is skipped and its copies aren't added.

Importing the same file again

An Export CSV file from your Library uses the same columns as the import, so you can import it into another venue, or import it again.

  • With Skip games I already have, rows for games already in your Library are left out, so importing the same file again only adds the games that are new.
  • With Add these copies, every matching game gets its copies added again, so importing the same file twice doubles your copy counts. Use it for a delivery of new copies, not to restore a backup.

The same game on two rows

Rows with the same title become one game, with the first row's details and all their copies added together. Two rows of Catan with 1 copy each give one Catan with 2 copies. Each row is still checked on its own, so a repeated row with 0 copies is skipped and the first one still imports.

If the import stops partway

If the connection drops or the server stops answering partway through a large file, the batches already sent stay in your Library. The summary is titled Import stopped partway and says Close this summary to resume the import from where it stopped.

Click Close, and the import window comes back with your file still loaded, for example Import stopped at batch 2 of 4. Click Resume import to send only the rows that weren't saved, with the same choices as before.

  • If you chose Skip games I already have, resuming is always safe. Nothing is added twice.
  • If you chose Add these copies, resume rather than uploading the whole file again, or the games already saved get their copies added twice. If it stopped in the middle of a save, check the copy counts of the games in the rows it names.

If you close the import window instead, Resume import is gone. Choose the same file again with Skip games I already have: the games saved the first time now count as games you already have, so only the new games that are left are added. If you had chosen Add these copies, this won't add the copies for games you already had in the rows that didn't go through. Add those copies by hand in your Library.

When the file can't be read

The window saysWhat to do
This file has no Title columnPick the column with your game names and click Use as Title, or rename it to Title in your spreadsheet. See If your file has no Title column.
Every Title in this file is blankThe Title column is there but empty. Put each game's name in it and choose the file again.
This file has no games in itThere are no rows under the column names. Put one game per row below the first row.
We couldn't check your library for games you already haveNothing was imported. Click Try again.

If a spreadsheet file such as .xlsx doesn't show in the file picker, save it as CSV first. If accented names such as Pokémon come in garbled, save the file again as CSV UTF-8.

What the messages mean

Every message under Rows to check starts with the row's number in your file, counting the column names as row 1. Completely empty lines aren't counted.

MessageWhat happened
Missing titleThe row has no name in the Title column, so it wasn't imported.
needs at least 1 copyCopiesInRotation is 0. The row was skipped.
min players (5) is more than max players (3)The player counts are the wrong way round. The row was skipped.
min players must be at least 1A player count is below 1. The row was skipped.
Missing required fields (min_players, max_players, ...)With Skip BGG, a new game had no player count or play time. These are your MinPlayers, MaxPlayers, MinTime and MaxTime columns. The row was skipped.
ignored ImageUrl or ignored VideoUrlThe link didn't start with https:// or http://. The game was imported without it.
couldn't be savedYour Library refused that one game. Other rows weren't affected.
couldn't be confirmedThe connection failed while that game was saving, so it may or may not be there. Check your Library before you import that row again.
failed to importA batch of rows didn't finish saving. See If the import stops partway.
the database stopped responding, so the import stoppedSeveral saves failed in a row, so the import stopped trying. Import those rows again later.
couldn't add copies, copies not added or copies couldn't be confirmedWith Add these copies, the extra copies for a game you already have weren't added, or may not have been. Check that game's copies in your Library before you try again.

To bring in skipped rows, fix them in your spreadsheet and import the file again with Skip games I already have. Everything that saved the first time is left alone, so only the fixed rows are added. For rows that were adding copies to games you already had, add those copies by hand instead.