Stats | Bibdle

Your Stats

Track your Bibdle performance over time

← Back to Game
{#if loading}

Loading your stats...

{:else if data.requiresAuth}

Authentication Required

You must be logged in to see your stats.

← Back to Game
{:else if data.error}

{data.error}

Return to Game
{:else if !data.stats}
No stats available yet.

Start playing to build your stats!

Start Playing
{:else} {@const stats = data.stats}
🔥
{stats.currentStreak}
Current Streak
{stats.bestStreak}
Best Streak
🎯
{stats.avgGuesses}
Avg Guesses
{stats.totalSolves}
Total Solves
{#if stats.totalSolves > 0}
{#if stats.worstDay}
😅
Worst Day
{stats.worstDay.guessCount} guesses
{formatDate(stats.worstDay.date)}
{/if} {#if stats.bestBook}
🏆
Best Book
{getBookName(stats.bestBook.bookId)}
{stats.bestBook.avgGuesses} avg guesses ({stats .bestBook.count}x)
{/if} {#if stats.mostSeenBook}
📖
Most Seen Book
{getBookName(stats.mostSeenBook.bookId)}
{stats.mostSeenBook.count} time{stats .mostSeenBook.count === 1 ? "" : "s"}
{/if}
📚
Unique Books
{stats.totalBooksSeenOT + stats.totalBooksSeenNT}
OT: {stats.totalBooksSeenOT} / NT: {stats.totalBooksSeenNT}

Grade Distribution

{#each Object.entries(stats.gradeDistribution) as [grade, count] (grade)} {@const percentage = getGradePercentage( count, stats.totalSolves, )}
{grade}
{count}
{percentage}%
{/each}
{#if stats.recentCompletions.length > 0}

Recent Performance

{#each stats.recentCompletions as completion, idx (`${completion.date}-${idx}`)}
{formatDate(completion.date)}
{completion.guessCount} guess{completion.guessCount === 1 ? "" : "es"} {completion.grade}
{/each}
{/if} {/if} {/if}