Randime: The Anime Randomizer

A headshot of Colin Hemphill
Written by Colin Hemphill
April 21, 20234 min read
The views expressed on this blog are my own, and do not necessarily reflect those of my employer.
A gloomy photo of a PlayStation 4 controller with strong shadows and subtle orange and green lighting

RIP: The Crunchyroll Random Button

Many years ago, anime streaming service Crunchyroll introduced a great and terrible new feature. At the top of the page was a button that would take you immediately to the first episode of a randomly selected anime. If you know anything about anime and the types of TV series that might appear after clicking this button, you know that it is a dangerous proposition.

The button appeared sometime in 2014 or 2015, but when Crunchyroll launched its new interface as a beta in 2021, the ominous dice icon was gone. While the back end API still exists and you can redirect to a random anime by entering the link directly, the random button is no longer a prominent feature on the site. I know there are people who want this feature, as you can see from this TikTok user.

The AniMonday Podcast

My friends and I rolled the dice on the Crunchyroll random button for a few years, and in 2018 my wife and I started The AniMonday Podcast. The entire premise for our show was to subject ourselves to a randomly selected anime, and the Crunchyroll random button was the star.

When I discovered that the button would be phased out, I set out to see if I could develop my own solution to randomly select an anime. Outside the bounds of the Crunchyroll catalog, I knew could generate even more outlandish suggestions.

Building an Anime Randomizer

My solution was randime.moe.

The Kitsu API

Kitsu is a popular discovery platform to search for anime by genre, content, target audience, themes, and more. At its core, Kitsu is a database that draws connections between different elements of its content, pulls in viewer ratings, and allows you to manage a personal library. For developers, they offer a full-featured JSON API to perform searches and manage a user’s library.

Kitsu offered the most flexible API to accomplish my task.

The Randomizer Interface

I built Randime a couple years ago, but recently rebuilt it from scratch using the Next.js App Router and Tailwind CSS. It now exists as a standalone website rather than one tied to the podcast.

The interface is meant to be simple and repeatable, with a handful of checkboxes to allow you to select what streaming services you have access to. You can then jam the "Randomize" button as much as you want until something looks interesting. This instant feedback and repeatability sets it apart from other randomizer services, including Crunchyroll’s own feature.

A screenshot of the Randime randomizer. It displays the randomizer settings alongside a randomly generated title and its details. The anime chosen is Kiznaiver.

In addition to the randomizer, Randime keeps track of previous rolls in a "History" page so that you can always go back to a permalink for something you came across recently. If something really stands out, you can add it to a watchlist that is saved to localStorage.

A screenshot of the Randime history page. It displays posters and titles of numerous anime series in a grid.

The Back End

The randomizer API is a two-part integration with Kitsu. The first request simply reaches out to determine how many total entries match a user’s randomizer settings. With this number in mind, we randomly generate a number within that range and return details on that entry.

To fulfill a permalink, we simply use the anime ID in URL params to grab details for that particular anime series or movie.

Next Steps

The localStorage solution for keeping a watchlist is simple to implement and requires no authentication from the user. This is a great way to keep track of things for users who just want to quickly generate some ideas, but some users might prefer to sync random selections to a centralized account. I plan to add integrations with Kitsu and MyAnimeList to add randomly generated titles to users who are authenticated with those accounts.

Aside from that I’m just hoping to generate some buzz around the idea, and maybe draw new listeners to the AniMonday backlog!