{{ toastMessage }}

OPBINDER.COM

Sets OP-01 to OP-17 • Deck & Storage Manager

{{ (currentUser.display_name || currentUser.username)[0] }}
{{ currentUser.display_name || currentUser.username }}
Found {{ totalCards }} cards
Rotation:
Show:
Set:
Color:
Type:
Box:
Sort:

Loading cards from inventory database...

No cards match your current filters

{{ card.block_number }}
{{ card.variants.length }} Arts
{{ card.rarity === 'P' ? 'Promo' : (card.rarity || 'C') }}
{{ card.card_set_id || card.card_id }}

{{ card.card_name }}

{{ card.card_type }} Cost {{ card.card_cost }}
Total Owned: {{ card.owned_count }}
{{ card.in_storage }} ({{ card.storage_location === 'P' ? 'Promo' : card.storage_location }}) {{ card.rented_out || card.in_decks }} Rented 0 Rented
{{ card.owned_count }}
In: {{ card.decks_allocated.map(d => d.deck_name + ' (' + d.quantity + ')').join(', ') }}
Not in decks
Page {{ currentPage }} of {{ totalPages }} ({{ totalCards }} cards)

Saved Decks Gallery {{ savedDecks.length }} Saved

Browse your decks or create a new one. Toggle "Built" to mark physical cards as rented out from storage.

No Saved Decks Yet

Build a custom deck from your inventory or paste a decklist from OPTCG Sim!

No Leader

{{ d.name }}

{{ d.leader_name || 'No Leader' }} ({{ d.leader_color }})

{{ d.total_cards }} cards
{{ currentDeck.name || 'Untitled Deck' }}
Total Cards: {{ totalDeckCardCount }} / 51 (1 Leader + 50 Main) {{ currentDeck.leader.card_name }} ({{ currentDeck.leader.card_color }}) No Leader Selected Need {{ deckStats.total_missing }} more copies 100% Owned! Ready to play!
Physical cards are Rented Out from storage Cards stay safe in your Storage Box
{{ copyNotification }}

Deck Cards (Leader + Main Deck)

Ready Partial Missing
{{ currentDeck.leader.block_number }}
LEADER
Owned: {{ currentDeck.leader.owned_count }} 0 Owned (Missing)

{{ currentDeck.leader.card_name }}

{{ currentDeck.leader.card_set_id || currentDeck.leader.card_id }} {{ currentDeck.leader.card_color }}
+ Select Leader Click to choose your Deck Leader
{{ card.block_number }}
{{ card.card_cost !== null ? 'Cost ' + card.card_cost : card.card_type }}
{{ card.needed }} / {{ card.owned_count }} {{ card.owned_count }} / {{ card.needed }} (Need {{ card.missing_copies }}) 0 / {{ card.needed }} (Missing)

{{ card.card_name }}

{{ card.card_set_id || card.card_id }} {{ card.card_type }}
In {{ card.other_active_decks[0].deck_name }} ({{ card.other_active_decks[0].quantity }})
Needed:
{{ card.needed }}

This deck is currently empty

Click "Add / Browse Cards" to select cards from your inventory or paste a decklist from clipboard.

Missing Copies Checklist
{{ deckStats.total_missing }} Needed

{{ currentDeck.leader.card_name }} {{ currentDeck.leader.card_set_id }} • Leader
Need 1
{{ c.card_name }} {{ c.card_set_id || c.card_id }} • Own {{ c.owned_count }}/{{ c.needed }}
Need {{ c.missing_copies }}
All cards in this decklist are in your collection!

Cost Curve Distribution

{{ cnt }}
{{ cst }}

Saved Decks ({{ savedDecks.length }})

No saved decks yet.

{{ d.name }}

{{ d.total_cards }} cards

Storage & Inventory Center

Organize physical card storage boxes, track cards rented to active decks, identify deck shortages, and mass buy unowned cards on TCGPlayer.

Total Rented Copies {{ rentedCards.reduce((sum, c) => sum + (c.total_allocated || 0), 0) }} Physical copies in built decks
Unique Rented Cards {{ rentedCards.length }} Distinct card titles rented
Active Built Decks {{ savedDecks.filter(d => d.is_active).length }} Decks currently assembled
Deck Conflicts {{ conflicts.length }} {{ conflicts.length > 0 ? 'Shortages across decks' : 'Zero card shortages' }}
Inventory Shortage Alert: You have {{ conflicts.length }} card(s) where built decks need more physical copies than you own!
Filter by Deck:

Scanning physical deck allocations and storage...

{{ c.block_number }}

{{ c.card_name }}

{{ c.card_id }} • {{ c.set_id === 'P' ? 'Promo' : c.set_id }} • {{ c.card_color }}

Rented Out: {{ c.total_allocated }}x
In Storage: {{ c.in_storage }}x
Shortage: Need {{ c.shortage }} more copies
Currently in Decks:
{{ d.deck_name }}: {{ d.quantity }}x {{ d.is_leader ? '(Leader)' : '' }}

No Cards Currently Rented Out

You currently have no built decks renting out physical cards, or no cards match your search. Mark any deck as "Built" in the Deck Builder to allocate your physical cards here.

Selection:
Deck:
{{ selectedMassBuyCount }} cards ({{ selectedMassBuyTotalCopies }} copies)

Calculating missing copies across all saved decks...

{{ c.block_number }}

{{ c.card_name }}

{{ c.card_id }} • {{ c.set_id === 'P' ? 'Promo' : c.set_id }} • {{ c.card_color }}

Owned: {{ c.owned_count }}x
Missing: {{ c.missing_count }}x
Buy Qty:
{{ getMassBuyQty(c.card_id, c.missing_count) }}
Decks: {{ d.deck_name }} ({{ d.quantity }}x)
TCGPlayer →

No Deck Shortages!

You own all physical copies required for your current decks. Want to explore cards you don't own to build new decks?

Filter Set:
Selection:
{{ selectedMassBuyCount }} cards ({{ selectedMassBuyTotalCopies }} copies)

Loading unowned cards catalog...

{{ c.block_number }}

{{ c.card_name }}

{{ c.card_id }} • {{ c.set_id === 'P' ? 'Promo' : c.set_id }} • {{ c.card_color }}

Status: 0 Owned
Buy Copies:
{{ getMassBuyQty(c.card_id, 1) }}
{{ c.card_type }} • Cost {{ c.card_cost !== null ? c.card_cost : '-' }} TCGPlayer →

No Unowned Cards Found

No unowned cards match your current search and set filters. Try clearing your filters or searching another set.

Page {{ unownedPage }} of {{ unownedTotalPages }} ({{ unownedTotal }} Unowned Cards)
Total Copies Owned {{ stats.total_owned }} Across all printings
Unique Cards Owned {{ stats.unique_owned }} Out of {{ stats.total_unique_db }} in database
In Storage Boxes {{ stats.in_storage }} Unallocated copies
Rented Out {{ stats.in_decks }} In {{ stats.active_decks_count }} active decks

Collection Progress by Set

Click any set below to instantly view your owned cards in that set!

{{ s.set_id === 'P' ? 'Promo' : s.set_id }} {{ s.owned_in_set }} / {{ s.total_in_set }} Owned
{{ Math.round((s.owned_in_set / (s.total_in_set || 1)) * 100) }}% complete View Owned Cards →

Backup & Restore Collection

Export your personal inventory and decks as a JSON file, or restore from a backup.

{{ authMode === 'login' ? 'Sign In to OPBinder' : (authMode === 'register' ? 'Create Free Account' : 'Reset Password') }}

{{ authMode === 'login' ? 'Access your private collection, decks & binders' : (authMode === 'register' ? 'Track owned cards, decks & storage boxes' : 'Reset your password with your registered email') }}

or continue with email
{{ authError }}
Privacy Guarantee: We do not store your private credentials, tracking cookies, or payment info. All binder records and custom decks are strictly private to your account.
New to OPBinder? Already have an account? Remember your credentials?

Account Settings Google Account Standard Account

Edit your display name, username, or reset your password

{{ accountSuccess }}
{{ accountError }}
{{ (currentUser.display_name || currentUser.username)[0] }}

{{ currentUser.display_name || currentUser.username }}

@{{ currentUser.username }} • {{ currentUser.email }}

This name appears in your binder header and public deck sharing links.

@

Letters, numbers, and underscores only. Must be unique.

Used for signing in and password recovery.

Keep your OPBinder account secure by using a strong, unique password with at least 6 characters.
Reset your password directly using the email address associated with your OPBinder account.
Privacy Guarantee: We do not store sensitive payment details or track personal data. Your decks and binder records are strictly private.