← All articlesHow-to

How to import a deck from a CSV or JSON file

Have a deck in a spreadsheet, or a card list from another tool? Deck Builder 3.5.0 can import a whole deck from a CSV file or a JSON file, and a built-in column mapper lets you choose which column becomes which card field. Here is exactly how the two formats work.

Open the import chooser

On the Decks screen, open the overflow menu (⋮) and tap Import Deck. Deck Builder offers three formats:

  • Deck Builder file (.dbpd): a full export from another Deck Builder install, images included.
  • JSON: an editable text file following the Deck Builder card scheme.
  • CSV: a spreadsheet, where you map each column to a card field.

Pick CSV or JSON and point Deck Builder at your file.

Import from CSV

A CSV is the easiest way to bring in a deck you already keep in a spreadsheet. A few rules:

  • The first row is a header row. Its labels drive which column maps to which field.
  • One card per row. To add several copies of a card, use a Quantity column (see below) or repeat the row.
  • Files are read as UTF-8 with standard CSV quoting: wrap a field in double quotes to allow commas or line breaks inside it, and double a literal quote ("") to escape it.
  • The maximum file size is 20 MB.

Column names

Only Name is required. Every other column is optional. Deck Builder auto-maps your headers to card fields (matching is case-, space- and punctuation-insensitive), and you can override any column, or set it to Do not import, on the mapping screen. These headers are recognised (the header names themselves are English):

Card field Recommended header Also matches
Name Name cardname, card, title
Quantity Quantity qty, count, copies, amount
Type Type cardtype, typeline
Subtypes Subtypes subtype
Supertypes Supertypes supertype
Rarity Rarity
Set name Set Name set, edition, expansion
Set number Set Number collectornumber, cardnumber, number, no
Cost Cost mana, manacost, price, value
Cost unit Cost Unit
Power Power attack, atk, strength
Power unit Power Unit
Health Health toughness, defense, hp, life
Health unit Health Unit
Game Game
Rules text Rules Text rules, text, oracle, oracletext, ability, effect, body
Flavor text Flavor Text flavourtext, flavor, flavour, quote
Description Description desc, notes, comment
Tags Tags tag, labels, categories, category
Keywords Keywords keyword
Image URL Image URL image, img, art, artwork, picture, url, imageuri, imagelink

If two columns map to the same field, the second one defaults to Do not import so you resolve the ambiguity deliberately. Unknown headers default to Do not import too.

Lists and quantities

  • List columns: Tags, Keywords, Subtypes and Supertypes can hold several values in one cell. Separate them with a semicolon (;), for example burn;red;spell. The comma is the column separator, so it cannot also separate list items.
  • Quantity: a Quantity of 3 creates three separate cards (Deck Builder has no per-card count field). A missing, blank, 0 or negative value means 1, and leading text is tolerated, so 2x becomes 2.

A worked example

Name,Quantity,Type,Cost,Power,Health,Rarity,Tags,Keywords,Rules Text,Flavor Text,Image URL
Lightning Bolt,4,Instant,R,,,Common,burn;red,,"Lightning Bolt deals 3 damage to any target.","The sparkmage shrieked...",https://cards.scryfall.io/normal/front/c/e/ce711943-c1a1-43a0-8b89-8d169cfb8e06.jpg
Grizzly Bears,2,Creature,1G,2,2,Common,green;beatdown,,,"Don't try to outrun one of Dominaria's grizzlies...",https://cards.scryfall.io/normal/front/4/0/409f9b88-f03e-40b6-9883-68c14c37c0de.jpg
Serra Angel,1,Creature,3WW,4,4,Uncommon,white;flyer,Flying;Vigilance,"Flying, vigilance","Never resting, never faltering.",
Island,20,Land,,,,Common,land;blue,,"({T}: Add {U}.)",,

This imports 27 cards (4 + 2 + 1 + 20).

Card art

The Image URL column accepts two kinds of value:

  • an http(s) URL, stored as an external reference and loaded on demand (the same way Scryfall cards work). The image is never downloaded or redistributed.
  • an embedded image as a data:image/...;base64,... URI, decoded and saved to your device.

Any other value (a bare filename or a local path) is ignored, and the card imports without art. You can always add art later in the card editor.

Import from JSON

JSON is the richer format. It is the same text-only scheme used inside a Deck Builder export (.dbpd), so it carries deck settings and more per-card detail than a flat spreadsheet can. The easiest way to author one is to export an existing deck as JSON, edit it, and import it back.

The top level looks like this:

{
  "formatVersion": 1,
  "exportedAt": "2026-07-15T12:00:00Z",
  "deck": {
    "uuid": "…", "name": "My Deck",
    "source": "IMPORTED",
    "tags": ["standard"]
  },
  "settings": { "handCardsCount": 1, "discardPileEnabled": true },
  "cards": [
    {
      "uuid": "…", "name": "Lightning Bolt", "cardDeckIndex": 0,
      "type": "Instant", "cost": "R",
      "rulesText": "Lightning Bolt deals 3 damage to any target.",
      "tags": ["burn"], "keywords": [],
      "source": "IMPORTED"
    }
  ]
}

UUIDs are strings, timestamps are ISO-8601, and unknown keys are ignored. Note that the JSON field is rulesText (camelCase), whereas the CSV header is Rules Text. JSON carries no image bytes, so use external image URLs.

What to expect

  • Only a name is required. Everything else is optional in both formats.
  • A fresh deck is created with a new identity. An import is never merged into an existing deck.
  • Imported cards are marked with the source Imported.
  • If a file is malformed or larger than 20 MB, Deck Builder shows a clear message on the import screen instead of failing.

Once your deck is in, you can take it further: turn it into print-ready cards, or publish it to the Deck Store so other players can find it.

#csv import#json import#deck import#spreadsheet#how-to

Get Deck Builder

Scan, create, manage, and shuffle any card deck on Android, completely ad-free.

Download on Google Play