WebAOM (Web Anime-O-Matic) is a Java desktop application that hashes anime files and adds them to your MyList on AniDB. It retrieves metadata via the UDP API and can automatically rename and organize your collection.
- Multi-algorithm file hashing (ED2K, MD5, SHA-1, CRC32, Tiger Tree Hash)
- AniDB MyList integration with automatic metadata retrieval
- Rule-based file renaming and moving using customizable templates
- Drag-and-drop file processing with concurrent hashing
- Optional database backend (SQLite embedded, PostgreSQL, or MySQL)
- Encrypted and compressed UDP communication
- AniDB account (required)
- Java 21+ (for JAR files) or use native packages
Download pre-built packages from the Releases page:
| Platform | Package |
|---|---|
| macOS | WebAOM-2.5.0.dmg |
| Windows | WebAOM-2.5.0.msi |
| Linux | WebAOM-2.5.0-x86_64.AppImage |
| Linux | webaom_2.5.0_amd64.deb (Debian) |
macOS users: The app is not notarized. Right-click → Open, or run
xattr -cr /Applications/WebAOM.app
Requires Java 21+:
# Lite (SQLite only, ~4MB) - recommended for most users
java -jar webaom-2.5.0-lite.jar
# Full (SQLite + PostgreSQL + MySQL, ~10MB)
java -jar webaom-2.5.0-full.jar- Add files — Drag-and-drop, click "Files..." or "Folders...", or set default directories in Options
- Log in — Click "Login" and enter your AniDB credentials
- Start — Click "Start" and WebAOM will hash each file, fetch metadata from AniDB, add it to your MyList, and optionally rename/move it based on your rules
Settings are stored in the platform app-data directory (UTF-8):
- Linux:
~/.config/webaom - macOS:
~/Library/Application Support/webaom - Windows:
%APPDATA%\\webaom
Key options include:
- Connection: AniDB host, ports, keep-alive, delay between requests (minimum 2 sec, 3 recommended)
- File Options: MyList state, source, storage, watched status
- Hash Functions: Select which algorithms to compute (ED2K is required)
- Wanted Extensions: File types to process (default: avi, ogm, mkv, mp4, and many more)
WebAOM uses a scripting system to rename and move files based on metadata. Rules are defined in the Rules tab.
Example rename script:
IF A(Naruto) DO FAIL // Skip Naruto files
DO ADD '%eng (%ann) - %enr - %epn ' // Base format
IF D(japanese);S(english) DO ADD '(SUB)' // Add (SUB) for English subs
IF G(!unknown) DO ADD '[%grp]' // Add group if known
DO ADD '(%CRC)' // Always add CRC
Example move script:
IF R(DVD,HKDVD) DO ADD 'M:\dvd\'
ELSE DO ADD 'N:\tv\'
DO ADD '%yea\%ann [%eps]\'
| Tag | Description |
|---|---|
%ann |
Anime name (romaji) |
%eng |
Anime name (english) |
%kan |
Anime name (kanji) |
%epn |
Episode name |
%enr |
Episode number |
%grp |
Group short name |
%crc / %CRC |
CRC32 (lower/upper) |
%ed2 / %ED2 |
ED2K hash (lower/upper) |
%src |
Source (TV, DVD, etc.) |
%res |
Resolution |
%yea |
Year |
| Test | Description |
|---|---|
A(name) |
Anime name/ID (supports regex) |
G(name) |
Group name/ID |
R(source) |
Source: TV, DVD, HKDVD, www, etc. |
T(type) |
Type: TV, OVA, Movie, Other, web |
D(lang) |
Dub language |
S(lang) |
Sub language |
Y(year) |
Year or range (e.g., Y(2000-2010)) |
I(tag) |
Tag is defined |
Use ; for AND, , for OR, ! for NOT.
Media servers like Plex, Jellyfin, and Emby require TVDB naming (S01E01 format) rather than AniDB absolute numbering. Use FileBot to convert WebAOM-renamed files.
Note: This expression is designed for files renamed with WebAOM's default template:
%ann (%yea) - %enr - %epn [%src-%res][%aud][%dub][%vid]-%grp
filebot -rename "FILES" --db AniDB --format @format.txt -non-strictformat.txt — converts AniDB matches to TVDB season/episode numbering:
{def grp=any{group}{fn.tokenize("-")[-1].tokenize(".")[0]}; def lang=any{audioLanguages.join("+")}{""}; def src=any{vs}{source}{""}; def res=any{vf}{resolution}{""}; def aud=any{ac}{""}; def vid=any{vc}{""}; db.TheTVDB.n+" ("+any{db.TheTVDB.y}{""}+") - "+db.TheTVDB.s00e00+" - "+db.TheTVDB.t+" ["+src+"-"+res+"]["+aud+"]["+lang+"]["+vid+"]"+(grp?"-"+grp:"")}This uses the db.TheTVDB cross-reference binding which maps AniDB episodes to TVDB using the Anime-Lists project.
Example conversion:
From: Gintama (2006) - 083 - Rank Has Nothing to Do With Luck [DVD-760x576][FLAC][japanese][H264]-CBT.mkv
To: Gintama (2006) - S02E34 - Rank Has Nothing to Do with Luck [DVDRip-576p][FLAC][jpn][x264]-CBT.mkv
| Key | Action |
|---|---|
? |
Show keyboard shortcuts help |
| Enter/Space | Show job info |
| A | Open anime page in browser |
| M | Open MyList page in browser |
| W | Watch file (Windows/macOS) |
| X | Open containing folder |
| P | Pause/unpause job |
| S | Apply rules / update status |
| I | Re-identify file |
| Left | Collapse row (tree view) |
| Right | Expand row (tree view) |
| F5/⌘R | Refresh alternate view |
| F9 | Reset application |
| Delete/BackSpace | Delete selected jobs |
| ESC | Stop worker thread |
WebAOM uses an embedded SQLite database by default. For PostgreSQL or MySQL:
- Create the database with Unicode support
- Enter the JDBC URL in Options → "My Database":
jdbc:postgresql://localhost/webaom?user=myuser&password=mypass jdbc:mysql://localhost/webaom?user=myuser&password=mypass - Press Enter to connect
Requires Java 21+. Gradle is included via wrapper.
./gradlew build # Compile and create JARs
./gradlew run # Run the application| Command | Description |
|---|---|
./gradlew clean |
Remove build artifacts |
./gradlew spotlessApply |
Format code |
./gradlew jpackage |
Create native installer for current platform |
Git hooks are installed automatically by Gradle. Any ./gradlew ... invocation refreshes
.git/hooks/pre-commit and .git/hooks/pre-push shims that run repository hooks.
These hooks run spotlessCheck on commit (for staged Java/Gradle changes) and on push.
Created by epoximator — RIP (developed 2005–2010). Revived in 2025 as a maintenance fork from AniDB's UDP clients repository.
Goals: preserve the application, fix bugs, and maintain compatibility with modern Java.
GNU General Public License v2 (GPLv2)