English | Português
GoAnime is a terminal application for searching, streaming and downloading anime, movies and TV shows in English and Brazilian Portuguese. It searches several sources at once, plays the selected episode in mpv, and keeps track of where you stopped.
It is a single binary for Linux, macOS and Windows, and mpv is all it needs to stream. FFmpeg is optional: downloads use it to embed subtitles, and upscaling a video requires it.
- Features
- Installation
- Usage
- Sources
- Configuration
- Files
- Troubleshooting
- Using GoAnime as a library
- Contributing
- Community
- Acknowledgments
- Disclaimer
- License
- Searches every enabled source in parallel and falls back to another source when one fails.
- Subbed and dubbed anime in English and Portuguese, plus Portuguese movies and TV shows.
- Streams with quality selection, or downloads a single episode, a range, or a whole series.
- Saves downloads with Plex-compatible names (
Anime - S01E01.mp4). - Resumes playback and remembers watched episodes.
- Skips the opening from the player menu, using timestamps from AniSkip.
- Discord Rich Presence.
- Anime4K upscaling in real time while you watch, or of video and image files.
- Updates itself with
goanime --update.
GoAnime uses mpv for playback. Install mpv first, unless you use the Windows installer, which includes it.
Prebuilt binaries for every platform are available on the releases page.
GoAnime ships as a per-user installer and as a portable ZIP. Neither needs administrator rights.
Download and run GoAnime-Installer-<version>.exe from the
latest release.
It installs GoAnime and mpv under %LOCALAPPDATA%\Programs\GoAnime and adds
that folder and its bin subfolder to your user PATH. It does not ask
for UAC. If an old 1.x all-users installation is found, the installer asks you
to uninstall it first, so two copies do not compete in PATH.
If you prefer not to use the installer, download
goanime-windows-amd64.zip, extract goanime-windows-amd64.exe, rename it to
goanime.exe and put it in a folder on your PATH. The archive does not
include mpv: install it separately. GoAnime
finds mpv.exe on your PATH or in the same folder as goanime.exe.
Unsigned binaries and SmartScreen. GoAnime releases are not signed with a
paid Authenticode certificate, so Windows SmartScreen may show "Windows
protected your PC" the first time you run the installer or goanime.exe. That
warning is expected for an unsigned project; it does not mean the file is
known to be malicious or safe. Verify the SHA-256 against
checksums-sha256.txt (see Verifying a download).
Only if it matches, choose More info → Run anyway. Never disable
SmartScreen globally, and never run a file whose hash you have not checked.
When you launch GoAnime on its own (double-click, Start menu or a desktop
shortcut), it runs in Windows Terminal so the
interface gets color, UTF-8 and font fallback. If it started in the classic
console and Windows Terminal is missing, GoAnime tries winget once; when
winget is unavailable, as in Windows Sandbox, it unpacks the official x64
Windows Terminal build embedded in the executable into
%LOCALAPPDATA%\GoAnime\WindowsTerminal and reopens from there. That path
needs neither network nor administrator rights; builds for other
architectures download the official archive instead. Without a usable copy
GoAnime continues in the classic console. Set GOANIME_TERMINAL=conhost to
stay in the classic console.
brew install mpv
curl -Lo goanime https://github.com/alvarorichard/GoAnime/releases/latest/download/goanime-darwin-universal
chmod +x goanime
sudo mv goanime /usr/local/bin/The binary is universal and runs on both Apple Silicon and Intel Macs. If you
download it with a browser instead of curl, macOS quarantines it and refuses
to run it; clear the flag with
xattr -d com.apple.quarantine /usr/local/bin/goanime.
GoAnime is available in the AUR:
yay -S goanimeInstall mpv with your package manager (sudo apt install mpv or
sudo dnf install mpv), then:
curl -LO https://github.com/alvarorichard/GoAnime/releases/latest/download/goanime-linux-amd64.tar.gz
tar -xzf goanime-linux-amd64.tar.gz
sudo install goanime-linux-amd64 /usr/local/bin/goanimeFor ARM64, replace amd64 with arm64.
With Go 1.27.3 or later:
go install github.com/alvarorichard/Goanime/v2/cmd/goanime@latestThe v2 module path is github.com/alvarorichard/Goanime/v2; library imports
must use that prefix. The previous v1 module remains available at the old path.
Progress tracking is backed by SQLite and requires CGO, so a C compiler must be available when building. Without one, GoAnime still builds and runs, but does not track progress. The release binaries are built with SQLite. See docs/BUILD_OPTIONS.md for details.
Every release includes checksums-sha256.txt. Compute the hash of the file
you downloaded and compare it with the line for that file:
sha256sum goanime-linux-amd64.tar.gz # Linux
shasum -a 256 goanime # macOS, the goanime-darwin-universal line
Get-FileHash goanime-windows-amd64.zip # Windows, in PowerShellchecksums-sha256.txt is published in the same release as the binaries, so it
detects a corrupted or truncated download, not a compromised release. The
Windows and macOS binaries are not code-signed; the operating system may warn
on first launch.
| Installed with | Update with |
|---|---|
| Windows installer (2.0.0+) | goanime --update, or the installer of the new version |
| Windows installer (1.x) | The v2.0.0 installer once; after that, goanime --update |
| Windows portable ZIP | goanime --update |
| AUR | Your AUR helper, for example yay -Syu |
| A release binary or archive | goanime --update |
go install |
The same go install command |
goanime --update checks the download against the release's
checksums-sha256.txt and installs nothing if they do not match. On Windows it
stages the new executable next to the running one, lets a helper finish the
replacement after GoAnime exits, and keeps the previous binary as
goanime.exe.backup until the new version starts successfully. See
docs/AUTO_UPDATE.md for the full flow.
The per-user Windows installer lives in a folder the user can write to, so
goanime --update does not need elevation. On Linux and macOS, if the
executable lives in a folder you cannot write to, such as /usr/local/bin,
run sudo goanime --update.
Run goanime without arguments to open search home. Type a name and press
enter, or press ↓ to pick from the lists below: Continue reopens an
episode where you stopped (enter resumes, r starts over, e lists
episodes, x removes it) and Recent repeats a past search with its result
count. tab switches scope between ALL, PT-BR, ENGLISH and MOVIES/TV.
From a result, choose a version with ← → and, for a series, an episode.
You can also pass the name directly:
goanime "one piece"Use spaces in the name, not hyphens.
Anime downloads go to ~/.local/goanime/downloads/anime/ unless you pass
-o:
goanime -d "one piece" 1 # episode 1
goanime -d -r "naruto" 1-12 # episodes 1 to 12
goanime -d -a "one piece" # every episode
goanime -d --quality 720p "frieren" 1 # a specific quality
goanime -d -o ~/Anime "bleach" 10 # a custom directoryThe directory given to -o must be inside your home folder.
Movies and TV shows use -dm and go to ~/.local/goanime/downloads/movies/:
goanime -dm "Interstellar" # a movie
goanime -dm --type tv "Dark" 1 5 # season 1, episode 5
goanime -dm -r "Dark" 1 1-5 # season 1, episodes 1 to 5
goanime -dm -a "Dark" # every seasonSome streams are downloaded with yt-dlp, which GoAnime fetches on its own the first time it needs it.
Other options:
goanime --source animefire "jujutsu kaisen" # search a single source
goanime --upscale --upscale-hq video.mp4 # upscale a file with Anime4K
goanime --update # update to the latest release
goanime --debug "naruto" # write a debug logRun goanime -h for the full list of options.
| Key | Action |
|---|---|
↑ ↓ or k j |
Move |
Type, or / |
Filter the list |
g G |
First or last item |
Enter |
Select |
Esc |
Go back |
tab |
Switch search scope (search home) |
← → |
Choose a version (results) |
r e x |
From start, episodes, remove (Continue list) |
d D A m |
Download one, range, all, options (episodes) |
In a menu that shows a letter beside each option, that letter picks the option at once; any other key still filters.
The episode list marks the episodes you finished with ✓ and the one you stopped partway with ◐, and opens where you left off.
While mpv plays, the terminal shows the player menu, with how far the episode has played:
| Key | Option | What it does |
|---|---|---|
n |
Next episode | Play the next episode |
p |
Previous episode | Play the previous episode |
e |
Select episode | Pick another episode from the list |
c |
Change anime | Search for another title |
s |
Skip intro | Jump past the opening, when AniSkip has its timestamps |
a |
Audio track | Switch the audio track, when there is more than one |
t |
Subtitles | Switch or turn off subtitles, when there are any |
Esc |
← Back | Return to the download and playback menu |
q |
Exit | Close mpv and quit |
For a movie, the menu offers Replay movie (r), Change movie (c), the track
options, ← Back and Exit. When an episode or movie has saved progress, GoAnime
asks whether to resume from where you stopped.
Real-time Upscale, in the menu before playback, applies Anime4K shaders in mpv. The first time, choose Setup shaders to download them, then pick a mode. Each mode's label says what it is for, from Performance for a weak GPU to Ultra for SD sources.
| Source | Content | Language | Notes |
|---|---|---|---|
| HiAnime | Anime | English, subbed and dubbed | Subbed by default |
| AnimeFire | Anime | Portuguese (Brazil) | |
| AnimesDigital | Anime | Portuguese (Brazil) | Subtitled and dubbed |
| AnimeDrive | Anime | Portuguese (Brazil) | Host override: GOANIME_ANIMEDRIVE_URL |
| Goyabu | Anime | Portuguese (Brazil) | Disabled by default, see below |
| StartFlix | Movies, TV | Portuguese (Brazil) | Dubbed and subtitled |
| TopCine | Movies, TV | Portuguese (Brazil) | Catalog only; playback goes through StartFlix |
| Pobreflix | Movies, TV | Portuguese (Brazil) | Direct MP4 playback; StartFlix panel fallback |
--source limits a search to one source: hianime, animefire, goyabu,
animesdigital, animedrive, startflix, topcine or pobreflix.
movietv covers StartFlix, TopCine and Pobreflix; ptbr covers every
Portuguese source.
Pobreflix asks the site's /api catalog first and falls back to its sitemap
index. Current movie and episode pages embed public MP4 servers, so playback is
direct and needs no browser. Old-theme pages still use the StartFlix panel.
AnimeDrive's host is intermittently unreachable from some networks. If the
site moves or your network blocks it, GOANIME_ANIMEDRIVE_URL points the
source at a reachable mirror.
Goyabu is behind a Cloudflare managed challenge and is disabled by default. It
works on networks that Cloudflare does not challenge; on a challenged network
no browserless HTTP client can clear the challenge. Enable it with
GOANIME_ENABLED_SOURCES=goyabu.
GoAnime depends on third-party websites, and those websites change without notice. When one does, the corresponding source can stop working until it is updated. A scheduled workflow checks every source daily, so breakage is usually visible there before it is reported.
GoAnime needs no configuration file. A few environment variables cover less common needs:
| Variable | Description |
|---|---|
GOANIME_ENABLED_SOURCES |
Comma-separated sources to enable, such as goyabu |
GOANIME_DISABLED_SOURCES |
Comma-separated sources to skip |
GOANIME_THEME |
dark, light or auto (default): auto asks the terminal once for its background |
GOANIME_TERMINAL |
conhost keeps Windows GoAnime in the classic console instead of reopening it in Windows Terminal |
GOANIME_PLAIN |
Set to 1 for the plain interface: no colors, no Japanese glosses, ASCII only (same as --plain, NO_COLOR or TERM=dumb) |
GOANIME_JAPANESE |
1 always shows the Japanese glosses, 0 always hides them; unset, GoAnime shows them where the terminal has a font for them |
GOANIME_HIANIME_AUDIO |
sub (default) or dub |
GOANIME_STRICT_SOURCE |
Set to 1 to report an error instead of guessing an unknown source |
GOANIME_ANIMEFIRE_API |
Address of the AnimeFire API |
GOANIME_ANIMEDRIVE_URL |
Address of AnimeDrive |
GOANIME_POBREFLIX_URL |
Address of Pobreflix |
GOANIME_STARTFLIX_URL |
Address of StartFlix |
GOANIME_STARTFLIX_PANEL_URL |
Address of the StartFlix video panel |
GOANIME_TOPCINE_URL |
Address of TopCine |
TMDB_API_KEY |
A TMDB key for movie, TV and season details |
OMDB_API_KEY |
An OMDb key to use instead of the shared demo key |
The address variables point a source at a new domain when its site moves, without waiting for a new release.
| What | Linux | macOS | Windows |
|---|---|---|---|
| Watch history | ~/.local/goanime/tracking/progress.db |
~/.local/goanime/tracking/progress.db |
%LOCALAPPDATA%\GoAnime\tracking\progress.db |
| Downloads | ~/.local/goanime/downloads/ |
~/.local/goanime/downloads/ |
%USERPROFILE%\.local\goanime\downloads\ |
| Debug logs | ~/.local/share/goanime/logs/ |
~/Library/Logs/GoAnime/ |
%LOCALAPPDATA%\GoAnime\logs\ |
| Anime4K shaders | ~/.config/goanime/anime4k-shaders/ |
~/Library/Application Support/goanime/anime4k-shaders/ |
%APPDATA%\goanime\anime4k-shaders\ |
| yt-dlp | ~/.cache/go-ytdlp/ |
~/Library/Caches/go-ytdlp/ |
%LOCALAPPDATA%\go-ytdlp\ |
| Japanese font | ~/.local/share/fonts/goanime/ |
— | — |
On Linux, the shader and yt-dlp folders follow XDG_CONFIG_HOME and
XDG_CACHE_HOME when they are set, and the font folder follows
XDG_DATA_HOME. Deleting the watch history file resets
all progress. To uninstall GoAnime, remove the executable (or, with the
Windows installer, uninstall it from Settings) and delete the folders above
that you no longer need.
AnimeDrive can take longer to answer when the site is busy. Its search uses
the full source deadline, without restarting a request at the shorter HTTP
client timeout. The host is also intermittently unreachable from some
networks. If it still times out, point GOANIME_ANIMEDRIVE_URL at a reachable
mirror, try again later, or use --source to search another source. Include a
debug log when reporting the problem.
Open a bug report and attach a debug log to it:
-
Run the same command again with
--debugadded, for examplegoanime --debug "naruto", and repeat what you did until the problem happens. -
When it starts, GoAnime prints the path of the log file. Each run writes a new file named
goanime_<date>_<time>.login this folder:System Folder Windows %LOCALAPPDATA%\GoAnime\logsmacOS ~/Library/Logs/GoAnimeLinux ~/.local/share/goanime/logs -
Attach the newest file to the issue, together with the output of
goanime --version, your operating system and the command you ran.
The log lists the titles you searched and paths on your computer, which can include your user name. Read it before attaching if that matters to you.
Make sure mpv --version works in the same terminal you run GoAnime from.
On Windows, open a new terminal after installing so the updated PATH is
picked up.
The Japanese beside each heading (ゴーアニメ, 検索) is drawn with the terminal's fonts. When none of them has Japanese, GoAnime hides it instead of showing boxes:
- Linux: GoAnime installs GoAnime Glyphs, an 11 KB font with just those
characters, in
~/.local/share/fonts/goanime/. Close and reopen the terminal to see them. A full Japanese font works too, such asnoto-fonts-cjkon Arch Linux,fonts-noto-cjkon Debian and Ubuntu orgoogle-noto-sans-cjk-fontson Fedora. - Windows: GoAnime opens itself in Windows Terminal, which has font
fallback.
GOANIME_TERMINAL=conhostkeeps the classic console, where the Japanese stays hidden. - Linux virtual console (
TERM=linux): its font has no Japanese, so it stays hidden.
GOANIME_JAPANESE=1 shows it anyway, GOANIME_JAPANESE=0 hides it
everywhere. The font is never installed with GOANIME_JAPANESE=0 or in the
plain interface.
The search and scraping code is exposed as a public Go package:
client := goanime.NewClient()
results, err := client.SearchAnime("One Piece", nil)Search covers every source. Episode lists and stream URLs are available for AnimeFire results only for now. docs/LIBRARY_USAGE.md walks through the API, and pkg/goanime/examples has complete programs.
Bug reports, fixes and new sources are welcome.
Most of the maintenance work in GoAnime is keeping sources working as the
sites behind them change, and that is also the easiest way to start
contributing: the source health workflow
shows which sources are failing, and each source is a self-contained package
under internal/scraper/providers. To add a new one, follow
docs/ADDING_A_SOURCE.md, which uses Goyabu as the
reference implementation.
To build and test:
git clone https://github.com/alvarorichard/GoAnime.git
cd GoAnime
git checkout dev
go build ./cmd/goanime
go test -short ./...Development happens on the dev branch. Create your branch from dev and
open pull requests against dev; main only receives releases.
CONTRIBUTING.md lists the checks to run before opening a
pull request, and docs/Development.md covers code style
and the rest of the workflow.
- Discord for questions, feedback and release announcements.
- GoAnime Mobile, the Android version.
- goanime.online, the project website, with an overview of GoAnime and installation instructions.
GoAnime is built on the work of these projects:
- mpv plays every stream.
- AniSkip provides the opening timestamps.
- AniList and Jikan, an unofficial MyAnimeList API, provide anime metadata.
- TMDB and OMDb provide movie and TV metadata.
- Anime4K provides the upscaling algorithm and shaders.
- yt-dlp handles some downloads.
- Bubble Tea, Huh and Lip Gloss build the terminal interface.
- Noto Sans CJK is the source of GoAnime Glyphs, the Japanese font GoAnime installs on Linux (SIL Open Font License).
- ani-cli inspired the project.
GoAnime does not host, upload or distribute any media. It retrieves content that third-party websites make publicly available and is not affiliated with any of them. Users are responsible for complying with the laws of their country.
GoAnime is released under the MIT License.
