{{ f.title }}
{{ f.body }}
{{ c.body }}
No comments yet.
Loading your squad…
{{ isSignUp ? 'Create your account' : 'Sign in to sync your lists' }}
// co-op watchlists for you + your squad
Track anime, manga, movies, games & music & games together.
Built by fans, for fans + content creators.
Pick your world
Info
// {{ entityData.kind.toLowerCase() }} · {{ entityData.year }}
No songs listed for this release.
// {{ entity.type === 'character' ? 'character' : entity.type === 'artist' ? 'artist' + (entityData.genre ? ' · ' + entityData.genre.toLowerCase() : '') : entityIsActor ? (entityData.primaryOccupations?.[0] || 'actor').toLowerCase() : entityIsVA ? 'voice actor' : 'staff' }}
{{ entityData.name.native }}
No biography on TMDB yet.
No song of theirs matches that.
{{ discOpenRelease.kind }} · {{ discOpenRelease.year }} · {{ discOpenRelease.tracks }} songs
Loading the rest…
as {{ r.character }}
{{ r.media.format === 'MOVIE' ? 'movie' : 'series' }} · {{ r.media.seasonYear }} · {{ r.episodes }} ep
{{ [...new Set(r.roles)].join(', ') }}
{{ (r.role || '').toLowerCase() }} · {{ r.media.type === 'MANGA' ? 'manga' : (r.media.format || 'anime').replace('_', ' ').toLowerCase() }}
{{ (r.role || '').toLowerCase() }}
{{ r.roles.join(', ') }}
My list
First watch: {{ inlineForm.progress || 0 }}/{{ selectedAnime.episodes || '?' }} (not finished). Going past it puts it back on Watching.
Rewatches {{ inlineForm.repeats.length }}/{{ MAX_REPEATS }}
{{ selectedAnime.type === 'GAME' ? 'Playing together' : 'Watching together' }}together · {{ UNIT.short }} {{ detailParty.progress }}
{{ inviteFrom(inviteFor(selectedAnime.id)).username }} wants to {{ selectedAnime.type === 'GAME' ? 'play' : 'watch' }} this with you ({{ invitePeople(inviteFor(selectedAnime.id)).length }} people are in).
You finished it, so it counts as a rewatch for you.
You dropped it: pick it up again (Watching) to carry on with them.
Invite friends to play it with you. Their pictures show on the poster, and everyone keeps their own status and hours played.
Invite friends to watch it with you. Their pictures show on the poster, everyone keeps their own status, and when anyone counts an episode, everyone moves along.
My watch link
Tip: the show's page (not one episode) keeps working as you go. Crunchyroll's opens on your next episode. If a site's episode links end in the episode number, just paste an episode’s link (like …/episode-7): Watch always opens your next episode.
auto{{ linkInfo(selectedAnime).auto ? linkInfo(selectedAnime).site : linkInfo(selectedAnime).host }} · ep {{ nextEpOf(selectedAnime.id) }}
Official sites
Info
// game · {{ selectedAnime.seasonYear }} · co-op{{ selectedAnime.format === 'MOVIE' ? 'movie' : 'tv series' }} · {{ selectedAnime.seasonYear }} · airingsong · {{ selectedAnime.artists.join(', ') }} · {{ selectedAnime.seasonYear }}{{ (selectedAnime.format || 'anime').replace('_', ' ') }} · {{ (selectedAnime.season || '').toLowerCase() }} {{ selectedAnime.seasonYear }}
{{ altTitleOf(selectedAnime) }}
{{ player.full ? 'Listen' : '30-second preview' }}
Spotify app didn’t open? Open it in the browser →
Artist
{{ selectedAnime.artistInfo?.name || selectedAnime.artists[0] }}
Didn’t open? You may not have the {{ gameExtra.linkFallback.site }} app. Open it in the browser →
Time to beat
from {{ gameExtra.ttb.count }} player{{ gameExtra.ttb.count === 1 ? '' : 's' }} on IGDB
No play times reported for this game yet.
Steam
{{ !selectedAnime.steamId ? 'This game isn’t on Steam.' : gameExtra.steam === false ? 'Couldn’t load Steam info right now.' : 'Loading Steam info…' }}
Loading from Steam…
{{ ach.error }}
Steam didn’t share your achievements for this game. In Steam: Profile → Edit Profile → Privacy Settings → Game details: Public.
{{ a.name }}
{{ a.desc || '—' }}
// episodes
{{ gameExtra.seriesOpts[0].name }}
{{ gameExtra.storyIds.length ? 'The play order your community arranged. Anyone can fix it: tap Arrange and drag.' : 'No story order yet. IGDB doesn’t track it, so tap Arrange and drag the games into story order. Everyone will see it.' }}{{ gameExtra.storyIds.length ? 'The watch order your community arranged. Anyone can fix it: tap Arrange and drag.' : 'No story order yet. Tap Arrange and drag the movies into the order the story happens. Everyone will see it.' }}
Whole franchise · {{ movieTotals.count }} movies
Watch time {{ movieTotals.time }} You’ve seen {{ movieTotals.seen }} / {{ movieTotals.count }} ({{ movieTotals.missing }} without a length yet)Whole franchise · {{ seriesTotals.count }} games
Story {{ seriesTotals.story }} h Story + sides {{ seriesTotals.sides }} h 100% {{ seriesTotals.full }} h 100% + DLC {{ seriesTotals.fullDlc }} h ({{ seriesTotals.missing }} without play times)No other {{ selectedAnime.type === 'TV' ? 'movies' : 'games' }} found in this franchise.
{{ rel.relationType.replace('_', ' ') }} · {{ rel.type }} · Movie {{ movieNoOf(rel) }}
{{ titleOf(rel) }}
Related entries AniList doesn't have. They open on MyAnimeList (they can't go on your list here).
{{ (char.role || '').toLowerCase() }}
Japanese
Status distribution
Score distribution
// {{ viewedIsFriend ? 'friend' : 'on anicoop' }}
“{{ decorOf(viewedUser?.profile).tagline }}”
{{ viewedUser?.profile ? lastSeenText(viewedUser.profile) : '' }}
{{ viewedUser.profile.bio }}
Watch buddies · only the sections you pick sync their Plan to watch
Add {{ viewedUser.profile.username }} as a friend to see their lists and favorites.
{{ viewedUser.profile.username }} keeps their {{ viewedUser.hidden.map(t => t === 'MANGA' ? 'manga' : t.toLowerCase()).join(' & ') }} list private.
// you vs {{ viewedUser.profile.username }}
Taste match
{{ comparison.affinity != null ? 'Based on ' + comparison.scoredBoth + ' titles you both scored' : 'Score 3+ titles you both watched to see your match' }}
{{ st.label }}
Your top genres
{{ comparison.genres.me.join(', ') || '–' }}
Their top genres
{{ comparison.genres.them.join(', ') || '–' }}
{{ comparison.total }} titles between you — each one is in exactly one group.
Finding the seasons that belong together… {{ seriesState.done }} / {{ seriesState.total }} (only the first time)
{{ g.name }}
You {{ g.meDone }}/{{ g.items.length }} {{ statusLabelFor(compareType, 'COMPLETED').toLowerCase() }} {{ viewedUser.profile.username }} {{ g.themDone }}/{{ g.items.length }}{{ compareQ.trim() ? 'No series with that name.' : 'No shows with more than one season between you yet.' }}
{{ compareQ.trim() ? 'No title with that name here.' : 'Nothing here.' }}
{{ viewedUser.profile.username }} keeps their activity private.
Nothing here yet.
// {{ ({ MANGA: 'manga', GAME: 'games', TV: 'movies & tv', SONG: 'songs', ADULT: '18+' })[theirList.type] || 'anime' }} · {{ viewedUser.profile.username }}’s list
View only — open a title to comment on it, or tap + to put it on your own list.
This list is private.
No scored {{ cat.noun }} yet.
{{ viewedUser.profile.username }} keeps their friends list private.
// coming soon
{{ currentSection.soon }}
// {{ cdGame ? 'release dates' : 'airing schedule' }} · times in your time zone
{{ cd.error }}
{{ cdFiltersOn ? 'Nothing here matches these filters.' : c.id === 'search' ? (cdGame ? 'No upcoming game matches that. (Games that are already out have no countdown.)' : 'No airing or upcoming anime matches that. (Anime that already finished have no countdown.)') : cdGame && c.id === 'upcoming' ? 'None of the games on your list are coming out yet.' : 'Nothing here right now.' }}
// giveaways · free to keep for a limited time
You get a notification when a new one shows up (Settings → Notifications). Games on your list come first. From GamerPower.
{{ freeG.error }}
Nothing free {{ freeG.store ? 'there ' : '' }}right now. Check back later.
// {{ currentSection.short.toLowerCase() }} leaderboard
Hide these {{ currentSection.short.toLowerCase() }} genres everywhere
The Movies & TV leaderboard switches on once its database is connected.
{{ top.error }}
{{ mediaType === 'SONG' ? topItems.length + ' songs' : 'That’s everyone with enough ratings · ' + topItems.length + ' titles' }}
// help build anicoop
Ideas, bugs, anything. Everyone can see and vote. The best ideas rise to the top.
{{ fb.error }}
{{ f.body }}
{{ c.body }}
No comments yet.
No feedback yet. Be the first!
// {{ filters.search.trim() ? 'searching ' + currentSection.short.toLowerCase() : 'trending ' + currentSection.short.toLowerCase() }}
Hide these {{ currentSection.short.toLowerCase() }} genres everywhere · Browse, Leaderboard, trending & random picks
{{ (item.withNames ? 'with ' + item.withNames : 'solo') + (item.restart ? ' · started over' : item.repeatNo ? ' · rewatch #' + item.repeatNo : '') }} · {{ linkInfo(item.anime).site }} · no link saved
{{ item.progress || 0 }} {{ UNIT.unit.toLowerCase() }} playedPlayed {{ item.progress || 0 }} {{ item.progress === 1 ? 'time' : 'times' }} · {{ item.anime.artists.join(', ') }}{{ UNIT.short }} {{ item.progress || 0 }} / {{ item.anime.episodes || '?' }}{{ newEps(item) }} new
{{ shelfSub(s) }}
{{ new Date(g.releaseDate).toLocaleDateString(undefined, { month: 'short', day: 'numeric', year: 'numeric' }) }}
// database not connected yet
Browsing, search and title pages switch on as soon as the movie & TV API is added. Your lists, rankings and stats for this section are already set up.
{{ browseError }}
Search for your {{ section === 'anime' ? 'anime' : 'manhwa' }}
Type its name in the search box above: the best match shows up here. You can track it, rate it and compare it; {{ section === 'anime' ? 'watching' : 'reading' }} 18+ stays off.
{{ g.sub }}
{{ moreError }}
{{ filters.search.trim() ? 'That’s everything found' : 'That’s the whole chart' }} · {{ visibleResults.length }} songs
{{ moreError }}
Loading more…
You’ve reached the end · {{ visibleResults.length }} titles
// every section · what the squad is up to
{{ COMPOSER_KINDS.find(k => k.v === composer.kind).hint }}
{{ tierManhwaNow ? 'Manhwa' : SECTIONS[SECTION_OF_TYPE[tierType]]?.short }} tier list
Rank {{ tierNoun }} or their characters: pick a{{ tierType === 'ANIME' ? 'n anime' : ' manga' }} and get its whole cast, a genre / tag (tsundere, isekai…), your list, or one by one — then drag them into tiers.Rank games or game characters: a game’s whole cast, one by one, a whole genre, or your list — then drag them into tiers.Rank movies & shows or their characters (with the actors’ photos): a movie’s or show’s whole cast, one by one, a genre, or your list — then drag them into tiers.Rank songs or artists: one by one, a genre, or your list — then drag them into tiers.
Pick another type in the filters above to rank something else.
Searching…
Nothing found.
Your list updates aren't posted here.
{{ activityVerb(a) }}
{{ part.t }}
{{ part.t }}
{{ pi.winners.length > 1 ? "It's a tie" : 'Winner' }}
{{ pi.total }} vote{{ pi.total === 1 ? '' : 's' }} · {{ pi.ended ? 'Poll ended' : 'Ends in ' + pi.left }} · tap your pick again to undo · vote to see results
{{ a.extra.source }}
{{ di.mine ? 'You’re on “' + sideLabel(a, di.mine) + '” — argue it in the replies · tap again to leave' : 'Pick a side to argue in the replies' }}
{{ part.t }}
Nothing here yet
Start a poll, ask about {{ ({ MANGA: 'a chapter', GAME: 'a game', TV: 'an episode', SONG: 'a song' })[mediaType] || 'an episode' }}, make a tier list, post a clip — posts from every section show up here{{ feedFilter.type !== 'ALL' ? ' (this filter: ' + (FEED_TYPES.find(t => t.v === feedFilter.type)?.l || '') + ')' : '' }}.
Pick a chat
Send recommendations, episodes, emojis and GIFs.
{{ personOf(chatWith).username }} isn’t your friend yet and wants to chat. Reply or accept to start chatting — decline and they can’t message you again.
You’re not friends, so this goes to their message requests. They can choose to reply.
{{ personOf(chatWith).username }} declined your message request.
You declined this request.
Loading…
{{ dayLabel(m.created_at) }}
Recommendation
Say hi 👋 — or send them an anime from any anime page.
Recent
{{ (EMOJI_GROUPS.find(g => g[0] === emoji.group) || [])[2] }}
No emoji called that.
{{ emoji.note }}
Tap the on any GIF (here or in a chat) to keep it here.
Loading GIFs…
{{ gifState.error }}
More GIFs…
Powered by {{ gifState.by }}
Searching…
Loading…
{{ dayLabel(m.created_at) }}
{{ personOf(m.sender_id).username }}
Recommendation
Say hi to the group 👋
Recent
{{ (EMOJI_GROUPS.find(g => g[0] === emoji.group) || [])[2] }}
No emoji called that.
{{ emoji.note }}
Tap the on any GIF (here or in a chat) to keep it here.
Loading GIFs…
{{ gifState.error }}
More GIFs…
Powered by {{ gifState.by }}
Searching…
// {{ currentSection.short.toLowerCase() }} · {{ strictSolo ? 'just you' : listWith.length ? 'with ' + joinNames(listWith.map(id => personOf(id).username)) : 'everything you track' }}
Playlists need the latest database update: run the whole supabase_setup.sql in Supabase → SQL Editor once.
No playlists yet. Make one, then add songs from here or from any song's edit window.
{{ plShared(plOpenList) ? 'Shared playlist' : 'Playlist' }} · {{ (plOpenList.songs || []).length }} songs · {{ plLength(plOpenList) }}
{{ plAdd.q.trim() ? 'On your list' : 'Your songs' }}
All songs
Searching…
No songs found.
Search for any song to add it.
Nothing here yet
{{ strictSolo ? 'Everything here is something you watch with friends.' : listWith.length ? 'Nothing you watch with all of them yet.' : listFiltersOn ? 'No matches for these filters.' : 'Add some from Browse with the + button.' }}
Finding the seasons that belong together… {{ seriesState.done }} / {{ seriesState.total }} (only the first time)
{{ seriesState.error }}
{{ g.name }}
// player one
“{{ decorOf(currentProfile).tagline }}”
{{ currentProfile.bio }}
Your activity
No activity yet.
{{ achTotal.done.toLocaleString() }} of {{ achTotal.total.toLocaleString() }} Steam achievements · counting…
{{ achTotal.total ? Math.round(achTotal.done / achTotal.total * 100) : 0 }}% · {{ achTotal.perfect }} perfect game{{ achTotal.perfect === 1 ? '' : 's' }} · from {{ achTotal.games }} game{{ achTotal.games === 1 ? '' : 's' }} with achievements
Drag a row to a new spot (on your phone, drag the handle), or type a number. Titles you score later slot in by score.
{{ cat.id === 'TV' ? 'Movies & TV isn’t connected to a database yet — your scored movies and shows will rank here once it is.' : 'Score some ' + cat.noun + ' and they show up here.' }}
{{ FAV_EMPTY[favTab.me] || ({ ANIME: 'Open any anime and tap the heart next to a character.', MANGA: 'Open any manga and tap the heart next to a character.', GAME: 'Open a game and tap the heart on a character (or add one from a friend’s profile).', TV: 'Open a movie or show and tap the heart on a character.' })[favTab.me] }}
Incoming requests
Sent requests
Friends
No friends yet — send a request with their username above.
{{ player.song.title?.romaji }}
{{ (player.song.artists || []).join(', ') }}
Looking for the lyrics…
{{ lyr.err }}
Instrumental: no lyrics
No lyrics found for this song.
The 30-second preview starts in the middle of the song, so the lyrics don’t follow it. With the full song they do.
{{ l || ' ' }}
Lyrics from LRCLIB
Music
Searching…
Find any song and play it without leaving what you're doing.
{{ music.error }}
{{ music.pl.name }}
This playlist is empty. Add songs with the ⊕ button next to any song.
Playlists need the latest database update: run the whole supabase_setup.sql in Supabase again.
No playlists yet.
Songs you like show up here.
Songs you play show up here.
SAVE TO
{{ plPicker.list ? plPicker.list.length + ' songs' : plPicker.song.title?.romaji }}
Playlists need the latest database update: run the whole supabase_setup.sql in Supabase again.
No playlists yet.
Friends {{ friendsList.length }}
Loading…
{{ grp.l }} · {{ grp.list.length }}
{{ grp.k === 'on' ? 'Nobody else is online right now.' : 'No one else yet.' }}
Want to look offline? Settings → Privacy → “Show when I’m online”.
Requests
Watch buddy requests
{{ grp.l }} · {{ grp.list.length }}
No friends yet — add someone by username above.
Notifications
Nothing yet — when friends comment, like your posts or a new episode comes out, it shows up here.
Invites {{ invCount }}
Watch together
Friend requests
Watch buddy requests
No invites right now. Friend requests, watch buddy requests and invites to watch or play something together show up here.
Searching…
Nothing found.
Searching {{ currentSection.label.toLowerCase() }} · Enter shows every result
{{ tourStep.hero && tour.i === 0 ? '// hello' : tourStep.last ? '// done' : '// step ' + tour.i + ' of ' + (TOUR_STEPS.length - 2) }}
{{ tourStep.body }}
IMPORTANT: please go through this tour at least once. It shows how lists, watching with friends, watch links and reading work, and most questions are answered in it.
starting in Steam
{{ steamHours(steamOwned(steamPlay.game.steamId)) }} h played {{ achStats.done }} / {{ achStats.total }} achievements
Your browser may ask to open Steam: allow it. Nothing happens? Steam may not be installed on this device.
How many episodes did you watch?
{{ titleOf(watchAsk.anime) }} · from ep {{ nextEpOf(watchAsk.anime.id) }}
Status
{{ formRestart(editForm) ? 'Started over' : 'Rewatch #' + (editForm.repeats.length || 1) + ' of ' + MAX_REPEATS }}
Counts separately from your first watch ({{ editForm.progress || 0 }}/{{ editForm.anime.episodes || '?' }}, not finished). Going past it puts it back on Watching; reaching the last episode marks it Completed.
Counts separately from your first watch. Reaching the last episode finishes this rewatch.
{{ UNIT.ep }} progress
Score
Rewatches {{ editForm.repeats.length }}/{{ MAX_REPEATS }} used
{{ editForm.anime.type === 'GAME' ? 'Playing together' : 'Watching together' }}
Playlists (saved right away)
// steam prices
The store price in each region, cheapest first{{ regionPrices.fx ? ', with roughly what it costs in US dollars' : '' }}.
{{ regionPrices.error }}
Steam only lets you buy in the region your account and payment method are from. Dollar values are estimates.
// {{ partyDraftGames ? 'play together' : 'watch together' }}
Friends who say yes get it on their list with your pictures on it. Everyone keeps their own status, and the episode count moves together.
Your usual groups · one tap invites them
Friends
Add friends first (Profile → Friends), then invite them.
No friend with that name.
// shared playlist
Friends you add see it in their playlists and can add, remove and reorder songs. Only you can add or remove people, or delete it.
Add friends first (Profile → Friends).
Settings
// account
Welcome tour
A quick walk through the important parts of anicoop.
What’s new in v{{ APP_VERSION }}
The newest changes, in a short list (and every update before it).
Username
3–20 letters, numbers, _ or . — friends find and @mention you by this.
We send a confirmation link to both your old and new address — the change happens once you click them.
Sign out
Your lists stay saved in the cloud.
// look & feel
Saved to your account, so every device looks the same.
Mode
Main color
Buttons, highlights and the glow everywhere.
Poster size
Title language
// how friends see you
Profile color
Your avatar ring, profile glow and name color.
Description {{ profileEdit.bio.length }}/160
// make it yours
Shows around your picture everywhere — feed, chat, friends lists.
The background of your profile card.
Fills the whole page behind your profile — friends see it when they visit (like a Steam profile background).
From your list
Your own picture
An animated layer over your profile card.
How your name looks on your profile.
Tagline {{ decorDraft.tagline.length }}/60
Earned automatically from your lists. Tap up to 3 to feature them first. Tap the to hide one you don’t want on your profile.
// how your lists work
Watch links
For anime without a link of your own, Watch opens the official site AniList lists. Pick the service you have. A link you save yourself always wins.
Open watch links in
Phones always open a new tab. Streaming sites don’t allow being shown inside another website, so the pop-up is its own window.
Scoring system
Only changes how scores look and how you enter them — nothing is lost when you switch.
Default list order
List activity creation
Create an entry on your activity feed when your list updates.
Reset scores
Sets every score on that list back to 0. Your statuses and progress stay.
// who sees what
Who can see my friends list
Shown on your profile.
Who can see my lists
This controls your lists, their activity and profile stats. Friends you watch a title with always see that you’re in it.
{{ pt.label }} SOON
No friends yet.
Tap friends to hide this list from them ({{ privacy[pt.type].hidden_from.length }} hidden).
Profile stats
Pick who sees each stat on your profile. Everyone includes people you’re not friends with. You can also hide a stat from specific people.
{{ st.l }}
Hide {{ st.l.toLowerCase() }} from…
Tip: stats for a list you’ve hidden (above) stay hidden too. People who can see your list could still count titles themselves.
// what pings you
Desktop / phone pop-ups
Show a system notification when anicoop is in the background.
{{ g.title }}
{{ g.note }}
{{ it.label }}
{{ typeof it.off === 'string' ? it.off : it.hint }}
// {{ isOwner ? 'app owner' : 'admin' }}
This app has no owner yet
The owner has every power: roles, achievements, moderation, 18+ access. The first person to claim it becomes the owner — only do this if you run anicoop.
Roles & achievements need a database update
Run the whole supabase_setup.sql in Supabase → SQL Editor once, then reopen this tab.
Your powers
AniList sync (for everyone on the app)
One-time setup so people can link their AniList account: go to anilist.co/settings/developer → Create new client, name it anicoop, set the Redirect URL to {{ siteUrl }}, save, then paste the Client ID (a number) here.
18+ content
Hidden for everyone by default: the 18+ filter disappears and adult titles won’t open. The owner (and roles with “Manage 18+”) always have access.
Allowed ({{ adultConfig.users.length }})
Track 18+
A small 18+ access: these people can add, rate, compare and share 18+ anime, manga, manhwa and manhua, but not watch or read them. Nothing 18+ shows in their Browse: with Anime or Manga → 18+ only they search for a title by name and get the best match. People with full 18+ access don't need this.
Run the v1.3 SQL in Supabase (see README) before changing this.
Can track ({{ adultTrack.users.length }})
Songs
Hidden for everyone by default: the Songs section, the music button, the player, song stats, rankings and artist pages disappear. The owner (and roles with “Manage songs”) always have access.
Run the v9.7 SQL in Supabase (see README) before changing this.
Allowed ({{ songsCfg.users.length }})
Roles
Make any role you like, pick what it can do, then give it to people (below or from their profile). Roles show on profiles for everyone, in this order.
No roles yet — make the first one.
People
Find anyone by username to give or take roles, hand out an achievement, or clean up their profile. (You can do all of this from their profile too.)
{{ adminLookup.user.username }}
Roles
Everyone with a role
// keep them in step
Changes to your solo list here (add, status, progress, score, remove) are copied to the linked account.
AniList
{{ alLink ? 'Linked as ' + alLink.remote_name + ' · syncing both ways' : (alClientId ? 'Not linked' : 'Not available yet — the app owner needs to finish the AniList setup (Settings → Owner)') }}
Syncing {{ alSync.pending }} change{{ alSync.pending === 1 ? '' : 's' }} to AniList…
Last sync problem: {{ alSync.error }}
Up to date
Changes you make on AniList come here too (checked every 10 minutes while anicoop is open). Removing a title on AniList doesn’t remove it here. Last checked {{ timeAgo(new Date(alPull.at).toISOString()) }}.
Last check: {{ alPull.error }}
MyAnimeList
{{ malLink ? 'Linked as ' + malLink.remote_name + ' · syncing your anime & manga changes' : malSync.ready === false ? (malSync.error || 'Not available yet — the app owner needs to finish the MyAnimeList setup') : 'Not linked' }}
Syncing {{ malSync.pending }} change{{ malSync.pending === 1 ? '' : 's' }} to MyAnimeList…
Last sync problem: {{ malSync.error }}
Up to date
Only anime and manga (MyAnimeList has no games, movies or songs). Scores are rounded to whole numbers there.
Steam
{{ PREFS.steam ? 'Linked as ' + PREFS.steam.name + (steamAcc.lib ? ' · ' + steamCount + ' games' : '') : 'See which games you own and their hours, and bring your library into Games.' }}
{{ steamAcc.error }}
Steam didn’t share your games. In Steam: Profile → Edit Profile → Privacy Settings → Game details: Public, then tap .
Import your library into Games. Games you played in the last 2 weeks go to Playing; hours come from Steam. Games already on your list only get their hours updated.
✓ {{ steamAcc.result.added }} added, {{ steamAcc.result.updated }} updated, {{ steamAcc.result.skipped }} already there · {{ steamAcc.result.notFound }} not found in the games database (tools, demos, soundtracks…)
// bring your history
Imports go into your solo list. Titles are matched with AniList automatically.
MyAnimeList
AniList
Type your AniList username. Your AniList profile must be public.
{{ importState.step || 'Working…' }}
{{ importState.done }} / {{ importState.total || '?' }} · keep this window open
{{ importState.result.error }}
Imported from {{ importState.result.source }}
{{ importState.result.added }} added · {{ importState.result.updated }} updated (further along in the import) · {{ importState.result.skipped }} skipped (already on your list) · {{ importState.result.missing }} not found on AniList
AniList doesn’t have these (or lists them under a very different name). Search for them in Browse and add them by hand.
// keep a copy
Saves everything on your lists to this device. The backup file has every title with its status, score, progress, rewatches, marks and watch link, plus your squads, favourites and playlists. The spreadsheet opens in Excel, Google Sheets or Numbers.
// {{ drillName === 'You' ? 'your stats' : drillName + '’s stats' }}
Each square is a day you opened anicoop.
Score spread
Nothing here yet.
Drag to move · scroll or use the slider to zoom
// {{ randomSourceLabel }}
{{ randomWide ? 'from all ' + (({ MANGA: 'manga', GAME: 'games', TV: 'movies & shows', SONG: 'songs' })[randomWideType] || 'anime') : randomPool.length + ' match' + (randomPool.length === 1 ? '' : 'es') }}
▶ {{ randomPick.progress || 0 }} plays{{ soloEntry(randomPick.anime.id)?.progress ?? randomPick.progress ?? 0 }}/{{ randomPick.anime.episodes || '?' }} {{ UNIT.unit.toLowerCase() }} · {{ randomPick.group }}
{{ randomPick.anime.genres.join(', ') }}
Add to my list
Solo list
{{ titleOf(sheetAnime) }}
▶ {{ soloEntry(sheetAnime.id)?.progress || 0 }} plays{{ soloEntry(sheetAnime.id)?.progress || 0 }}/{{ sheetAnime.episodes || '?' }} {{ UNIT.unit.toLowerCase() }} · {{ STATUS_LABELS[soloEntry(sheetAnime.id).status] }}
// {{ playKind === 'manga' ? 'read' : 'watch' }} · {{ KIND_LABEL[playKind].toLowerCase() }}
No {{ playKind === 'manga' ? 'reading' : 'watching' }} sources yet
anicoop doesn’t host anything itself. Install an extension to {{ playKind === 'manga' ? 'read' : 'watch' }} right here.
On {{ currentSite.name }} as “{{ srcView.match.title }}” ·
Searching {{ currentSite.name }}…
{{ srcView.error }}
Nothing found on {{ currentSite.name }}, under this title or its other names. Try another spelling.
Not found under the same name. Which one is it?
Chapters show up here once you install a source.
{{ readInfo ? 'MangaDex doesn’t have this title. Pick another source above.' : 'Looking for it on MangaDex…' }}
{{ readSrc === 'mangadex' ? reader.error : srcView.error }}
No chapters here. Try another language or source.
No chapter matches “{{ chQ.trim() }}”.
Chapters come from the source you pick. Website sources are read without their ads or trackers.
// {{ (sectionList.find(s => s.type === histType) || {}).label?.toLowerCase() }}
What you {{ histType === 'MANGA' ? 'read' : histType === 'SONG' ? 'played' : 'watched' }} here, newest first. Only kept on this device.
Nothing yet. {{ histType === 'MANGA' ? 'Chapters you read' : histType === 'SONG' ? 'Songs you play' : histType === 'GAME' ? 'Trailers you watch' : 'Episodes and trailers you watch' }} show up here.
{{ g.label }}
// {{ KIND_LABEL[extKind].toLowerCase() }}
anicoop doesn’t host any {{ extKind === 'manga' ? 'manga' : extKind === 'anime' ? 'anime' : 'movies or shows' }}. Install a source to {{ extKind === 'manga' ? 'read' : 'watch' }} inside the app. Your progress still saves to your lists.
Checking sources for {{ titleOf(extFor) }}
{{ x.name }} v{{ x.version }} · {{ x.lang }}
{{ x.desc }}
Mihon server ● connected
{{ mihonUi.msg }}
{{ x.displayName || x.name }} 18+
{{ (x.lang || '').toUpperCase() }} · on your Mihon server
Website sources · {{ extSources.length }}
{{ s.name }} {{ (s.lang || 'en').toUpperCase() }}18+
{{ s.template === 'mihon' ? 'Mihon server · real extension' : s.baseUrl + ' · ' + ((SOURCE_TEMPLATES[s.template] || {}).label || 'Custom') }}
No website sources yet. Add one below, or install from a repository.
{{ extKind === 'manga' ? 'Leave it on Auto-detect: anicoop checks whether the site runs Madara or MangaThemesia, the two themes most manga sites use.' : 'Leave it on Auto-detect: anicoop checks whether the site runs AnimeStream or DooPlay, the themes many anime and movie sites use, and otherwise looks for the players on its episode pages.' }} Sites behind Cloudflare’s “checking your browser” page won’t work.
{{ srcForm.msg }}
Works with {{ extKind === 'manga' ? 'Mihon / Tachiyomi' : 'Aniyomi' }} repositories (paste the GitHub page or its index.min.json) and anicoop’s own {"sources": [{"name", "baseUrl", "template"}]} files.
{{ srcForm.repoMsg }}
{{ srcForm.repoName }} · {{ repoShown.length }} of {{ srcForm.repoItems.length }} sources
{{ extFor ? 'Searches every source in this list (language + search filter) for “' + titleOf(extFor) + '”, under its own name and its “Also known as” names, and only marks the ones that have it and open here.' : 'Checks every source in this list (language + search filter) and pins the ones that work here to the top.' }} Most sources need their own Android code or sit behind Cloudflare, so expect a small share.
Showing 80. Search to find others.
{{ repoScan.onlyOk ? 'None found yet. Turn off the filter above to see every source.' : 'No sources match.' }}
{{ rd.manga ? titleOf(rd.manga) : 'Local file' }}
{{ rd.chapter?.ch ? 'Chapter ' + rd.chapter.ch : '' }}{{ rd.chapter?.title && !/^(ch(apter)?\.?\s*)?[\d.]+$/i.test(rd.chapter.title) ? (rd.chapter?.ch ? ' · ' : '') + rd.chapter.title : '' }}
{{ rd.error }}
Open on MangaDexEnd of chapter{{ rd.chapter?.ch ? ' ' + rd.chapter.ch : '' }}
That’s the latest chapter on this source.
End of chapter{{ rd.chapter?.ch ? ' ' + rd.chapter.ch : '' }}
Saved to your list
{{ shotViewer.i + 1 }} / {{ shotViewer.list.length }}
// trailer
{{ titleOf(trailerOf) }}
// send {{ sendSheet.kind === 'episode' ? 'episode ' + sendSheet.payload?.episode : 'recommendation' }}
{{ sendSheet.payload?.title }}
No one here — add friends or start a chat first.
// group chat
Add friends
Add some friends first, then start a group.
// {{ groupInfo?.name }}
Everyone you can add is already in the group.
Unranked · {{ tier.pool.length }}
{{ tierPlacedCount ? 'Everything is ranked!' : 'Pick something on the left to fill this up.' }}
// what’s new
// {{ MAX_REPEATS }} rewatches of {{ lilBro.title }}
You already have the badge. Go touch some new anime.
// finished
It's on Completed. How would you score it?
{{ songLink.song.title?.romaji }} · {{ songLink.song.artists.join(', ') }}
Paste the right YouTube or YouTube Music link. Everyone’s player uses it for this song from now on.
{{ songLink.err }}
This song has a link set by hand by {{ personOf(songLinkNow.by).username }} · {{ timeAgo(songLinkNow.at) }}
{{ confirmBox.body }}
{{ confirmBox.input.length }}/{{ confirmBox.max }}
// your friends see this
Comments
{{ part.t }}
{{ part.t }}
No comments here yet — start the conversation.