Tool Guides
How Challonge Import Works in the Tournament Card Generator
A technical walkthrough of how the tool pulls participants and match results from Challonge, why some matches don't import, and when to switch to Manual mode.
The Challonge import in the card generator saves you from retyping a bracket by hand, but it's still fetching public web data, not calling a private database — so it's worth knowing what it actually does when a fetch fails or a match doesn't show up. This is a plain-language walkthrough of how it works.
What you paste in
You can paste a full Challonge tournament URL or just its slug. The tool normalizes either into the same identifier: if the URL includes an organization subdomain — like org.challonge.com/mybracket — it combines the subdomain and the bracket name into org-mybracket, which matches how Challonge itself addresses organization brackets under its public endpoints.
The four-step lookup the tool runs
Rather than relying on one endpoint that might be blocked or empty, the import runs through up to four fallbacks in order and stops at the first one that returns real data. You can see this happen live in the import log the tool shows you:
- Challonge's public JSON endpoint — the fastest path, used first for every bracket.
- The Challonge API — only attempted if this deployment has an API key configured; skipped otherwise. This step exists for brackets the public endpoint can't fully resolve.
- The bracket's embedded "module" data — Challonge's bracket page embeds a structured JSON blob used to render the bracket in your browser; the tool reads that directly when the earlier steps come back empty.
- A raw HTML fallback — as a last resort, it scans the bracket page's HTML for participant names, so you at least get a player list even if match data isn't recoverable.
If all four fail, you'll get a clear error telling you Challonge denied access, with a pointer to Manual mode.
What counts as a "completed" match
Only matches Challonge itself marks complete, with a scored result, get imported. Byes, matches still in progress, and matches missing a score string are skipped — not because the tool ignores them, but because there's no reliable result to attach to a card yet. This is the most common reason an imported card looks like it's "missing" matches compared to the live bracket: the bracket has more matches queued than have actually finished.
Swiss vs. Top Cut format detection
Many Beyblade X brackets run a Swiss or round robin group stage that feeds into an elimination Top Cut — see tournament formats explained for how that structure works. On Challonge, the outer tournament's declared type usually reflects the Top Cut (final) stage, not the group stage underneath it. If the import only trusted that outer type, a Swiss group stage could get mislabeled as an elimination round. To avoid that, the tool checks whether the bracket has groups and, if so, prefers the group's own declared format for labeling those matches.
When to use Manual mode instead
Switch to Manual mode when:
- The bracket is private, so none of the four lookup steps can see it.
- Challonge is rate-limiting or blocking automated requests to that bracket.
- Players were renamed mid-event and the imported names no longer match who actually played.
- You need to add context — like a bye or a disqualification — that Challonge's match data doesn't capture cleanly.
Manual mode uses the same card layouts as an import, so switching over doesn't cost you any of the design work already done.
FAQ
Does this require a Challonge account? No — it reads the same public bracket data anyone with the link could see.
Is my bracket data stored anywhere? The import fetches data to build your card preview in the same request; it isn't written to a database. See the privacy policy for what the site does store (optional browser usage records and feedback you submit deliberately).
Why did only some players show up? If every lookup step failed except the HTML fallback, you'll only get a participant list with no match results — that step exists purely so you're not starting from nothing.