Two places in the top bar move your game in and out of ShuffleKit. The File menu on the left holds the imports (spreadsheets, Google Sheets, PDFs and Illustrator files) and the exports (card data, images, print sheets and supported virtual-tabletop packs). Its actions are scoped to the active collection, so you do not accidentally export boards when you meant to export a card deck.
The filled Print & export button at the right end of the bar gathers the ways a game leaves ShuffleKit: PDF print sheet and Order printed copies under Print, Cards as images, Tabletop Simulator and Roll20 under Files, and Publish online and Play online under Online on projects you own. Its file options open the same export dialog described below, and a crown marks an option your plan doesn't include yet. See Workspace Overview.

| Option | Purpose | |
|---|---|---|
| Import | Cards from CSV or Excel... | Bring data into the active component collection from a spreadsheet |
| Cards from a Google Sheet... | Read a shared or published Google Sheet, and Sync it again later | |
| New project from a PDF or Illustrator file... | Turn a PDF or .ai design, one card per page, into a new project |
|
| Export | All as CSV | Card data as a spreadsheet, one row per card you can see |
| All as JSON | The same card data in JSON | |
| Card Images (PNG / JPEG / SVG)... | Rendered cards as image files | |
| PDF Print Sheet... | Print-ready pages | |
| Tabletop Simulator... | A TTS-ready spritesheet for supported card collections | |
| Clear all project items... | Deletes the current project's items; destructive |
The labels follow the collection you have open: in a boards collection they read Boards from CSV or Excel... and Board Images (PNG / JPEG / SVG).... Tabletop Simulator... only appears for card collections.
With rows selected, the File menu steps aside for selection actions. The Export button in the selection bar offers As CSV, As JSON, As Card Images (PNG / JPEG / SVG)... and As PDF Print Sheet... for just those rows.
Importing
From CSV or Excel

Upload File takes a drag-and-drop or a file picker, and accepts CSV, TSV, Excel (.xlsx or .xls) and JSON. One file can hold up to 2,000 rows; split anything bigger into several files. A CSV is read in the encoding it was saved in, so accents and non-Latin text come through: UTF-8 with or without a BOM, UTF-16, Shift_JIS from Japanese Excel, Big5 from Taiwanese and Hong Kong Excel, and Windows-1252 from European Excel.
Paste Data is the faster route for a quick batch:

Copy cells straight out of Excel or Google Sheets, paste into the box, and click Parse Data. The field expects tab-separated data, which is exactly what a spreadsheet puts on your clipboard.
For example, a small CSV can look like this:
title,Type,ability
Moonlit Scout,living,Reveal the top card of your deck.
Void Cartographer,space,Look at the top three cards.
The first row is the header. Each following row becomes a new card. An entirely empty row is skipped.
Getting an import right
- Put a header row first. Column headers are matched to your property names, and the matching is forgiving: case and punctuation don't matter, near-misses surface as one-click suggestions in the Map Columns step, and you can remap anything by hand there. Headers that match nothing become new properties. If your titles sit in a later row, click that row's number in the Map Columns table to make it the header.
- Create the properties first. Define columns in ShuffleKit before importing, so types are right. One thing to know about Select properties: values their options list hasn't seen before are added to it rather than rejected, so scan the options for typos after a big import.
- Test with five rows. Import a small slice, check it landed correctly, then do the rest.
The import runs in steps: Import Cards (pick the source), Map Columns, then either Choose Destination (new cards) or Review Changes (an update), and Import Complete.
In the Map Columns step, each source column can be mapped to an existing property, turned into a new property, or skipped. Click a column's header to change its mapping:
- Search properties... filters the collection's properties; each shows its type. Click one to map the column to it.
- Create new property makes a new column. Its name starts as the file's header and can be edited; if the import has to shorten or change it, a line reads Imported as "...". Pick its type: Text, Number, Select, Boolean, Color, Image or Icon. The type starts on what the values look like.
- The × on the header skips the column (it greys out and reads Skipped); Restore column brings it back.
Clicking any cell under the header row turns that column into a new property named after the cell's text.
Small marks on a header flag trouble: a near-miss mapped to the closest existing property (click to change it), values that can't be stored as the chosen type and will import empty (switch to Text to keep them), and an Image column holding bare filenames. The footer counts N existing, + N new and N skipped, offers Auto-map (N) to map every column that has a close match, and continues with Continue (or Review changes for an update).
A few prompts appear above the table when they apply:
- N existing columns won't be filled names the collection's columns that no file column maps to, and says when your design draws them. Match them up maps the near-misses for you.
- Replace this collection's columns rebuilds the columns from the file and removes the ones it doesn't have. It starts on when the collection has columns but no items, and off once items hold values.
- A column name longer than the limit is shortened, and the step shows the name it will get.
- Row N looks like data, not column titles appears when the header row holds values. Click the right row's number in the table to use it instead.
- When the collection's design draws a column the file doesn't fill, a chip such as Attack → Power offers to point that field at a file column instead of leaving it blank. Click it to accept; click again to undo.
Under the table, for a CSV, a pasted batch or a Google Sheet (not Excel or JSON), Doesn't look right? offers Try smart importing, which works out the file's delimiter and header row and splits it again. It turns into This didn't split into columns when everything landed in one column.
When the collection already has cards, the same step asks at its top what the file should do:
- Add every row as a new card appends, as every import used to.
- Update matching cards finds the card each row belongs to and changes it in place, so its decks, notes and layout stay attached. Rows that match nothing are added. Pick the column under Match rows by: the ShuffleKit ID column that CSV and JSON export write matches exactly, or pick a column such as Name. The step defaults to updating when rows already match cards here, and says how many match.
An update goes to Review Changes before anything is written: tallies for New, Changed, Unchanged and Not in the file, with the changes listed card by card. Cards the file no longer lists are left alone unless you choose Mark them Archived or Delete them. On the Free plan, new cards past the 120-card limit are left out and the review says how many; changes to existing cards always apply.
Adding rows as new cards goes to Choose Destination instead: the current collection (or project), or a New project you name there. A new project always starts with cards, whatever collection you imported from.
Import Complete sums it up: how many cards were imported (or, for an update, what changed), empty rows skipped, new properties created, columns removed by a replace, and any row errors. Click Done and the new columns flash in the sheet so you can find them.
The round trip that works best: clear any search or filter, open the All cards tab, use All as CSV, edit in your spreadsheet, then import the file back with Update matching cards. The ShuffleKit ID column ties each row to its card, even if you renamed it.
This is the regular Cards-page import. Onboarding has its own first-run import preview, with delimiter, header row and smart parsing controls, for when you create a new project from the onboarding wizard. Either way, keep a small test file handy before importing a full set.
Images can come in with the rows. In Map Columns, the Card images panel takes pictures named after your cards, or listed by file name in a column of the sheet: click Add images or Add a folder and each card gets its picture. Cells holding image URLs work too.
For cards already in ShuffleKit you don't need a spreadsheet. Click an image column's name in the sheet, choose Add images by file name… and pick the pictures or a folder, or click Use images from your library to match the ones you've already uploaded. It matches on whichever column the file names follow (a name, a number or anything else), ignoring capital letters, spaces, hyphens and underscores, so "Card Name" finds card_name.png. Cards that already have a picture keep it unless you tick Replace pictures that are already there, and one undo takes them all back.
ShuffleKit also snapshots your existing cards automatically before every import, so a bad import is recoverable. See Notes & Version History.
From a Google Sheet
Cards from a Google Sheet... opens the same import on its Google Sheet tab. In Google Sheets, choose Share → Anyone with the link, or File → Share → Publish to web as CSV, paste the link into Google Sheet link, and click Read sheet (or press Enter). ShuffleKit reads the first tab, or the tab the link names, and the rest is the import above.
The link is kept for the collection. Next time the tab reads "This collection syncs from a Google Sheet", with the link, when it last synced, and a Sync button. Sync reads the sheet again and goes straight to Review Changes when the columns still line up, matching on the same column as last time; otherwise it walks through Map Columns like a new file. Use a different sheet swaps the link. A sheet that isn't shared can't be read; ShuffleKit never signs in to your Google account.
Each collection keeps its own link, so a deck of cards and a set of tokens can sync from two different sheets.
New project from a PDF or Illustrator file
New project from a PDF or Illustrator file... does more than seed a layout: it builds a whole new project from a PDF or an .ai file with one card per page, extracting properties, a layout, cards and artwork. Use it when you're migrating an existing card design into ShuffleKit. A print sheet with several cards on each page isn't split up; export one card per page first. It leaves the project you're in untouched. The steps:
- Import Design File: drop the PDF or
.aifile. ShuffleKit shows its size, page count and a thumbnail of the first card. Click Analyze with AI. - AI Analysis: the detected properties with their types, then Cards (the page count, and how many pages the AI read), Card size, Layout elements, Artwork area and a Confidence score, with the model's AI Reasoning folded underneath. Click Review & Import, or Back to try another file.
- Review & Import: set the Project Name, untick any property you don't want and fix its name or type (text, number, image, select, boolean, color), and choose which pages become cards (All / None, or tick each Page N). A line reads Will create: 1 project, N properties, 1 layout, N cards. Click Import.
- Import Complete: Properties created, Layout created, Cards created and Images uploaded, plus a Some cards need a look list if any step had trouble. Open Project switches to the new project; Close stays where you are.
On the Free plan, which holds one project, the import can take the place of a first try that has no real work in it yet. The review step then reads Replaces "(project name)", the button becomes Replace and import, and it asks you to confirm before deleting anything; Upgrade to keep both is beside it. If your one project has real work in it, the analysis stops, the upgrade panel opens, and the dialog reads Your plan's project limit is reached.
A Pipeline Details panel under every step logs what ran, and Copy puts that log on your clipboard for a support request.
From a Photoshop file (one layout)
A .psd comes in as a layout rather than as cards. In the Design editor, open the Designs panel, click Add a front design (or back) at the end of a face's section, or Design the front on a face with no design yet, and choose Import from PSD…:
- Import layout from Photoshop: drop the
.psd. The dialog lists the naming conventions it reads: a layer named{{title}}becomes a field bound to thetitlecolumn, a group named__flatten__is flattened into one picture (use it for decorative groups with layer effects), hidden layers stay hidden and rotated layers are flattened. - Review PSD Import: the canvas size, the detected column connections, the layers (hidden ones marked), and a warning naming any Missing fonts, which render in a fallback until you load them in the editor. Set Layout name and Side (Front or Back), then click Import N layers. When that face already has a design, the step also asks Which cards use it? under the name and side, the same choice as a new design (see Layouts & Priority).
Export as PSD… in a design's ⋯ menu in the Designs panel goes the other way: a layered Photoshop file with the bound elements named {{Property Name}}, so it can come back in through Import from PSD. See Layouts & the Design Editor.
There is no import from Tabletop Simulator or other virtual-tabletop files: those formats are export-only.
Exporting
Card images
File → Card Images (PNG / JPEG / SVG)... (or Print & export → Cards as images) opens the main export dialog for the active collection. It renders the collection as images, spritesheets or a PDF print sheet, with the settings on the left and a live preview on the right.

Export as

| Format | Use for |
|---|---|
| PNG Images | One raster file per item: VTTs, mockups, social posts |
| JPEG Images | Smaller raster files with white corners instead of transparent ones: print shops that ask for JPEG, phones |
| SVG Images | Vector: scaling, print workflows, hand-off to a designer. Pictures are embedded in the file, so it opens in Illustrator, Affinity or Figma with its art |
| PDF Print Sheet | Print-ready pages, with the active component laid out for proofing |
| TTS Spritesheet | Tabletop Simulator's grid format, for card collections |
| Roll20 Spritesheet | Roll20's deck format, for card collections |
Cards to export (named after the collection's type) scopes the run:
- All cards (N) is every card in the project.
- Current deck (N) is the deck tab you're in, and is where the dialog starts when you open it from a deck.
- Selected (N) appears when you have rows selected.
Dice and other components with more than two faces also get Face to export: one face per run.
Corner radius is a slider from 0 to 25%, offered for PNG, JPEG, SVG and PDF (spritesheets and box dielines stay square). The help text under it:
Transparent corners, for digital and VTT use. Print & Ship cuts real rounded ones.
On a PDF the corners are filled white instead, and the line reads "Corners print white. Print & Ship cuts real rounded ones." On JPEG it reads "White corners, since JPEG has no transparency. Print & Ship cuts real rounded ones." So: raise it for digital, leave it at 0 for physical. Rounding corners on a file destined for a printer removes bleed the die-cut needs.
The preview grid shows every item that will be exported, rendered. Click a card to exclude or include it. Excluded items fade out. This is how you export "everything except the three pieces that aren't finished" without touching your data.
Export N cards confirms and runs. A progress bar replaces the settings while it renders, and Cancel stops it. When it finishes the left button reads Done; for a spritesheet the import settings stay on screen until you close it.
Visual exports (PNG, JPEG, SVG, PDF and virtual-tabletop spritesheets) need a paid plan: Hobby, Indie or Professional. On Free you can still open the dialog and set everything up: the preview is blurred behind "PDF export is a paid feature" (or Image, or Spritesheet), and the button reads Upgrade to Export. Your card data is safe either way. CSV and JSON data exports work on every plan and remain useful as card-data backups. See Manage Your Profile, Plan & Security.
Options by format
Every option in the dialog, which formats show it, and where it starts. All six formats need a paid plan.
| Option | PNG | JPEG | SVG | TTS | Roll20 | Starts on | |
|---|---|---|---|---|---|---|---|
| Cards to export | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | Current deck inside a deck, otherwise All cards; Selected when you exported a selection |
| Face to export (dice and other many-faced pieces) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | The first face |
| Include deck quantities (inside a deck) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | On |
| Fill them with the column name instead (empty fields) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | Off |
| Corner radius | ✓ | ✓ | ✓ | ✓ | 0% (hidden for boxes) | ||
| Columns | 5 to 10 | 5 to 10, or 12 | 10 | ||||
| Layout mode | ✓ | Grid (multiple per page) | |||||
| Page size | ✓ | A4 | |||||
| Orientation | ✓ | Auto | |||||
| Maintain original card size (grid) | ✓ | On | |||||
| No spacing between cards (grid) | ✓ | Off | |||||
| Cards per row (grid, size not kept) | ✓ | Auto | |||||
| Printed size | ✓ | Canvas | |||||
| Include crop marks and bleed / Include crop marks | ✓ | Off | |||||
| Include cut & fold guides (boxes) | ✓ | On | |||||
| Card back (when back layouts exist) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | None for PNG, JPEG and SVG; for the others, Auto when the project has a default back, otherwise None |
| Double-sided flip (with a back) | ✓ | Long edge (most printers) | |||||
| Print check line | ✓ | Shown when something is found |
The PDF and spritesheet previews have their own arrows under them to page through the sheets, and clicking any card in any preview leaves it out of the export.
What you download
- PNG, JPEG and SVG: one file for a single card, otherwise a
.zipwith one file per card, named after the project and each card's name. JPEG files end in.jpg. With a Card back chosen, the back is saved beside the fronts in the same format: one-backfile when every card shares it, otherwise one back file per card. Image files start on None, so the download is fronts only until you pick a back. - PDF: one
.pdfnamed after the project and the collection, for exampleMy Game-Cards.pdf. With a back chosen, each front page is followed by its mirrored back page, ready for double-sided printing. - TTS and Roll20: a single sheet with no back downloads as one PNG. Anything more comes as a
.zipholding the face sheets, their back image or back sheets, and animport-settings.txtwith the grid for each sheet.
For a die or other many-faced piece, every face after the first adds its name to the file name, so six runs make six files rather than one overwritten six times.
On a phone, PNG, JPEG, SVG and PDF exports are built first and handed over after. When the files are ready, a line such as 12 images ready. Share puts them in Photos or any app. sits above three buttons: Done, Save ZIP (Download for a single file) and Share 12 images (Share PDF for a PDF). For images on an iPhone, Share is the way into Photos. A set too big for the share sheet reads Too many to share at once, so Save downloads them as a ZIP. and leaves only the save button (Save ZIP), as does a browser that won't share files.
Empty fields
If a card leaves a field empty that its design draws, a line appears in the settings column: "N cards have empty fields that print blank". Details names each card and the empty columns. From there:
- Leave them blank: the × hides the line until a new gap appears.
- Fill them with the column name instead prints each gap as its column name, which is handy on a proof to see where the holes are.
- Show in sheet selects those cards in the sheet so you can fill them in.
Print & Ship shows the same line above its preview.
PDF print sheet
PDF Print Sheet... in the File menu, or PDF print sheet under Print & export, opens the same dialog on the PDF format. So does Printing somewhere else? Export a print-ready PDF on the Print & Ship page. The page settings:
- Layout mode: Grid (multiple per page) or One card per page.
- Page size: A4 (the default), A3, US Letter, US Legal or Tabloid. If the card is bigger than the page's printable area, the dialog says what it scaled to and offers a page size that fits at true size.
- Orientation: Auto names the orientation it picked; you can pin Portrait or Landscape.
- Maintain original card size (on by default) prints at true size. Turn it off to choose Cards per row instead. No spacing between cards butts them edge to edge.
- Printed size appears with one card per page, or at true size: Canvas prints the canvas at 300 DPI, or pick a standard size and the trimmed card is scaled to measure exactly that.
- A line under the grid says how many cards fit on each sheet, and the best fit if your settings hold fewer.
- Card back, when the collection has back layouts, adds back pages: Auto (match card conditions), None, or one back layout for every card. With backs on, set Double-sided flip to the edge your printer turns on (Long edge (most printers) or Short edge); the back pages are mirrored to match.
On a phone these page settings fold into a Page setup row that reads back the current choice, for example Grid · A4 · Portrait. Tap it to open them. A page too small for the card shows its warning on that row too.
A box collection swaps crop marks for Include cut & fold guides, which draws the die line in red and the creases in blue over the artwork.
Before a print run
- Check the count on the button matches what you expect.
- Set Corner radius to 0 for physical printing.
- Read the Print check line if one appears in the settings column on a PDF export: "Print check: N cards may not print the way they look". Details lists text sitting within 1/8 in of the cut, pictures that would print under 300 DPI, and backgrounds that stop short of the bleed, card by card. It is a warning only; the × prints as it is and hides the line until something new comes up. Print & Ship runs the same check before an upload.
- Turn on Include crop marks and bleed for a printer who trims: each card gets a 1/8 in bleed stretched from its edges, with the marks on the cut. If your layout already has a bleed drawn in, the option reads Include crop marks and marks the cut at the edge of that bleed.
- Export a PDF Print Sheet, print one page first and measure a card against a ruler. Proof it in hand. Print and Play at Home covers the print dialog settings.
- Remember deck quantities: with Include deck quantities on (the default, shown when you export from a deck), a card with QTY 3 lays out three times on the print sheet.
Data exports
All as CSV gives you flat data, one row per card with its property values. It exports the rows you can see, in the order you see them: open the All cards tab and clear the search and any View → Filter first if you want every card. Good for spreadsheets, balance analysis, and sharing with someone who doesn't use ShuffleKit. The file is UTF-8 with a BOM at the start, so Excel opens accents and non-Latin text correctly.
All as JSON carries the same card data in JSON, which keeps value types intact for scripts and tools. Neither export includes layouts, decks or notes, so treat them as card-data backups rather than full project backups.
Both download immediately without a dialog, and both export the cards in view: the open collection (or All cards), narrowed by any search or status filter you have on. Clear the search first if you want everything. The first column, ShuffleKit ID, is each card's id: leave it in the file and an update import matches rows back to their cards exactly. An import into a different project skips it.
Tabletop Simulator
Tabletop Simulator... produces the spritesheet TTS expects for a deck. The same output is available as a format inside the Card Images dialog, alongside Roll20 Spritesheet.
![]()
Read a VTT-sheet preview before exporting
The spritesheet preview shows the actual files the export will write. If the selected cards need more than one file, use the arrow buttons beneath it to inspect Sheet 1, Sheet 2, and so on. The line beside the arrows names the grid for the sheet currently in view; use those exact columns and rows when the VTT importer asks for them. Excluded cards appear on a final Excluded page instead of leaving misleading holes in a sheet.
For Tabletop Simulator, ShuffleKit uses a legal 2–10 column, 2–7 row grid and reserves a trailing slot for the card hidden in a player's hand. That means a full 10-column sheet holds 69 playable cards, not 70. Columns runs from 5 to 10 (10 is the default); Roll20 also offers 12. Small decks are packed into two rows automatically, because TTS rejects a one-row deck. Long decks are split into several files.
When the export finishes, a Tabletop Simulator import box spells out Width, Height and Number for each sheet: the three fields TTS's deck importer asks for. Number is the card count, so a full sheet is 69. With several sheets, import each as its own deck, then drop one onto another to merge them.
After a Tabletop Simulator export, ShuffleKit also hosts the sheets. Under Hosted for Tabletop Simulator you get two ways in:
- Download saved object. Put that file in
Documents/My Games/Tabletop Simulator/Saves/Saved Objectsand the whole deck appears under Objects → Saved Objects, already cut and backed, with each card named. - Face and Back links with copy buttons, to paste into Objects → Components → Custom → Deck with the settings above. They save you uploading the PNGs somewhere public first.
The links stay up for as long as the project exists. Hosting is part of every paid plan, like the export itself; if an upload fails, Try again retries it.
Choose a Card back whenever the deck needs one. With one shared back, the export supplies one card-sized back image and fills TTS's spare hidden-card slots with it. With conditional or different backs, it writes a matching back sheet beside each face sheet; turn on Unique Backs in TTS (and Back is Hidden, so a held card doesn't show as a blank) and use the same grid for the paired sheets. The choices are Auto (match card conditions), None, or one back layout for every card; Auto is preselected when the project has a default back. None is appropriate only when face-down cards do not need artwork.
Clear project items
Clear all project items... is in red at the bottom of the menu for a reason, and there's no undo. It deletes every item in the project, including boards, tokens and other components, and keeps your columns, layouts and groups. The confirmation offers Export CSV and Export JSON buttons: take one, and a version snapshot, first.
Inside a deck tab the same item reads Clear deck... and offers two choices: Remove from deck, which keeps the cards in the project and in any other deck, or Delete permanently.










