Getting in
Signing in
Sign in with your RetroAchievements username and your web API key (on RetroAchievements under Settings > Authentication > Web API Key). The tool checks with RetroAchievements that the key really is yours, and your account must be on the allowed users list (events team members and moderators).
While you're signed in, everything the tool asks RetroAchievements is asked with your key. It's kept encrypted in your browser's session cookie, never shown and never logged. Sessions last two weeks; Sign out ends yours. If you reset your key on RetroAchievements, sign in again with the new one.
Admin: users and activity log
Only Sutarion and drisc see Admin in the header. Allowed users adds someone by their RetroAchievements username as events team or moderator, changes their role or removes them (they're signed out on their next request). Accounts are matched by their RetroAchievements account, so a rename doesn't lock anyone out.
The Activity log lists every sign-in, failed sign-in, sign-out and change anyone makes (what was sent, minus anything secret), newest first, with a filter by user. Reading pages isn't logged.
LOTM Tool
Announcement
Fill in the event details and the Discord, forum and site news posts are generated as you type. Entering only the leaderboard ID and pressing Fill game and leaderboard from ID fills the game ID, game name, leaderboard name and description. Genre isn't available from the API, so type it.
Start and end dates are fixed at 00:00 UTC. The posts are editable; Discard edits and regenerate puts back the generated text.
Finishing an event
Archive this event saves the current details, the generated posts and the final top 10 to History. The leaderboard keeps being tracked until you change the leaderboard ID for the next event.
Site DMs
Fetch top 3 users reads the top 3 of the leaderboard set on the Announcement tab. Each Create DM button opens RetroAchievements' compose page with the message filled in. Nothing is sent until you press send there.
Poll
Each choice becomes **Leaderboard Name** - Game Name, and in the links list the name links to the
leaderboard when the row has an ID or URL. Enter a leaderboard ID and press Fill to get both names, or
type them. Games titled ~Hack~ or ~Homebrew~ on RetroAchievements get a
[Hack] or [Homebrew] prefix. Blank rows are skipped.
Both output boxes are editable; constructing the poll again replaces your edits.
History
Every hour the top 25 of the leaderboard set on the Announcement tab is stored, and Leaderboard over time charts it. Take snapshot now stores one straight away. When the leaderboard ID changes for the next event, the old one stops being tracked but its history stays browsable. Archived events lists every event saved with Archive this event.
Peak Streak
Streak rules
- A streak needs a mastery every UTC day: every achievement in a set earned in hardcore, dated the day the last one was earned. Hardcore beaten awards don't count, and neither do event games or sets with fewer than 6 achievements. A set demoted since (0 achievements now) still counts, since its size when it was mastered isn't known.
- Each day records the first mastery of that day, skipping games already used in the streak when there's another one.
- Checks run through yesterday (UTC), never today, so a check early in the UTC day doesn't judge a day people haven't had time to play.
- Free days count for everyone (a site outage, say). Excused days count for one person: the game was later demoted, deleted or turned into an event game so the mastery no longer shows, or a clock change moved their usual time past midnight UTC.
- Masteries hidden on someone's profile are still found.
Roster and daily update
Update everyone asks RetroAchievements for each active person's masteries since their last checked day and records one per day. It takes about two minutes for 70 people and can run at any hour. While it runs, its progress shows in the In progress panel at the bottom left of every page, with a Stop button; the badge and username checks show there too. When one finishes, a message says what it found.
Anyone with a day without a mastery stops there and lands in Needs attention. Open them and add the game they used, mark the day excused, or end the streak (the peak is kept). The roster opens on Needs attention when anyone is in it, and on Active otherwise. The other filters show ended streaks, people missing an event badge and people who reused a game.
A participant's page
Click a row to open someone's page: their recorded days, peak, the Day 1 post their streak started from, any reused games and their old usernames. From there you can fill or excuse a missing day, end or restart the streak, rename them, or mark their event badge as hidden.
Reopening and DST
An ended streak has Reopen streak: it becomes active again, is checked straight away and stops at the day that broke it, which can then be filled or excused.
When clocks change, 00:00 UTC moves by an hour in local time, so a mastery made at someone's usual time can land just after midnight UTC and leave the day before empty. A missed day within three days after a US, European or Australian clock change, or followed by a mastery before 01:00 UTC, shows Possible DST change, and the excuse reason DST change is chosen for you.
Adding people, free days, exports
Under Roster upkeep: Add participant adds someone with their Day 1 date (they're checked straight away), Free days adds a day that counts for everyone, and Exports downloads the leaderboard CSV and a CSV of every recorded day. Most people are added from their Day 1 post instead; see Working through forum posts.
Leaderboard post
The full history in the forum post's BBCode format, highest peak first. Run Update everyone first so it's current. The text is editable before you copy it.
Event badges
Check badges reads who holds the Peak Streak event's 30 days and 100 days badges, including badges hidden on profiles. A higher tier counts as holding the lower one. It skips people already recorded with the 100 days badge; Full check re-checks everyone.
Missing badges gives one comma-separated list of names per tier to paste into that achievement's award field on the site. If someone has their badge but the check can't see it, open them and press Mark badge as hidden: they're left off the missing lists until unmarked.
Discord Peaker role
The Peaker role is for an active streak of 100 days or more. Discord Peaker role lists who to add (reached 100) and remove (streak ended, or restarted below 100) since the list was last marked as sent, with a message for the moderators in the form "Please award the Peaker role to … and remove it from …". Mark as sent records the current holders so the next list only shows later changes. A streak with an unresolved gap still counts until it's ended on the roster.
Check who has the role on Discord: paste everyone who has the role now, as a CSV or one name per line. They're matched by RA username, display name or old username, and you get who's missing it, who shouldn't have it (with why) and names that don't match anyone, such as a Discord nickname that differs from the RA name. Save as current holders makes that paste the starting point for the change list.
Username changes
Lists people whose RetroAchievements name has changed since they were added. Update or Update all renames them on the roster so their forum posts match again; the old name is kept on their page. A name already used by another roster entry is flagged for you to merge by hand. Check usernames looks up everyone's current name, about one a second; the badge check also notices renames for badge holders.
Reused games
A game used twice within a streak, or again after an earlier streak, is flagged under the Reused games filter and on the person's page. A subset (bonus, specialty or exclusive set) is its own mastery and isn't a reuse of the main game. The daily update avoids picking an already-used game when the day has another mastery.
On someone's page, Recheck with the API reads what they actually mastered on each reused day. When they also mastered a game that isn't used on any other day, a Use … button switches the day to it (the day's note records what it was before). Masteries they'd already used elsewhere are listed with the day they were used. For a long streak the check can take a minute.
Invalid streakers
Someone whose streak was invalid can reset a set on RetroAchievements and master it again, which removes the old mastery from the site. On their page, Mark as invalid streaker (with a note on why) reads every mastery they hold now and keeps it on file. Each check adds any new masteries, including ones made between streaks, so the file never has holes.
Any day of their current streak that masters a set already on file from an earlier day is listed under Remastered games on their page and puts them in Needs attention. The daily update picks a set they haven't mastered before when the day has one. The Invalid streakers filter lists everyone marked. Refresh masteries on file reads them all again; Stop watching drops the file.
Streak Checker
Counts one mastery per UTC day from anyone's masteries, from a start date to yesterday (or an end date you choose). With Use Day 1 posts from the stored topic ticked, each valid Day 1 post starts a streak attempt and every day is lined up with what they posted.
The latest attempt has the same roster buttons as a Day 1 post. If a real Day 1 post wasn't recognised, use Count as Day 1 next to it, or paste its link into Day 1 post the check missed.
Importing the forum topic
The forum can't be read by the server (Cloudflare blocks it), so the topic is read with your own browser:
- With the Tampermonkey extension installed, install the Peak Streak export script. Tampermonkey opens an install page; review it and press Install. If you have version 1.1, open the link again to update to 1.2.
- On the Forum Checker tab, open the topic with the Last stored post link. It opens at the last post already stored, and the Export topic panel at the bottom right is filled in to carry on from it.
- Press Export topic. It finds the page that post is on now (pages shift when posts are deleted),
reads forward to the end, one page every 1.5 seconds, and downloads a
.jsonfile. Stop and save ends early and still saves what it read. For a topic not stored yet, open it normally; a blank start reads from page 1. - Choose that file on the Forum Checker tab and press Import. It reports how many posts are new, and warns if the file starts after the last stored post, since posts in between would be missing.
Working through forum posts
Posts are grouped as Day 1, Day 1 with other days, Later days and Not a day post. Only posts that say Day 1 and claim a game count as Day 1 posts. A real Day 1 post with unusual wording can be counted with Count as Day 1, and un-counted again.
- Check if streak is still going counts mastery days from the post's date through yesterday and shows where it broke.
- Add to roster adds the author with Day 1 = the post's UTC date and checks them straight away. For someone whose streak ended it reads Start new streak (the peak is kept).
- End current and restart appears when someone already active posts a newer Day 1: their current streak ends at its last mastery, the peak is kept, and the new one starts from the post.
- Record as ended is hidden when the post's streak can't beat the peak already on the roster.
- New people only hides everyone already active and anyone already recorded from that post.
- Done, hide it removes a post once you've dealt with it, for everyone. Tick Show reviewed posts to see them again and Put back to undo.
- In Later days and Not a day post, Hide all hides every post shown in that group at once (only the matching ones when you've filtered by author).