Batcharr

Batcharr

Docker app from Batcharr's Repository

Overview

Batcharr is a self-hosted bulk media request and review interface for Radarr and Sonarr. Import copied external lists, pasted movie and TV titles, TXT/CSV/JSON files, or optional TMDb lists; review metadata and alternate matches; detect titles already in your Arr libraries; and submit only the requests you approve. Batcharr also includes persistent request history, encrypted credential storage, optional WebUI password protection, configurable Arr request defaults, and optional Discord slash-command requests.

Batcharr — Unraid Community Applications Template

Batcharr icon

This repository contains the official Unraid Community Applications template for Batcharr.

Batcharr is a self-hosted bulk media request and review interface for Radarr and Sonarr. It is designed for people who already use the Arr stack and want to process a list of movies and television series without searching and adding every title one at a time.

Batcharr does not download media itself. It resolves titles against your own Radarr and Sonarr instances, lets you review the matches, and submits only the items you approve. Radarr and Sonarr remain responsible for monitoring, searching, downloading, and library management.

What Batcharr can do

  • Import mixed movie and television lists.
  • Copy visible list text from an external webpage and let Batcharr filter navigation/metadata noise.
  • Paste clean title lists directly into the WebUI.
  • Upload TXT, CSV, and JSON files.
  • Parse optional release years and explicit movie: / tv: style prefixes.
  • Use exact TMDb movie IDs and TVDb series IDs from structured imports.
  • Optionally import TMDb public lists with a user-supplied TMDb API Read Access Token.
  • Resolve movies through Radarr and series through Sonarr.
  • Detect Sonarr API v3 or v5.
  • Review posters, title, year, overview, destination, and confidence before submitting.
  • Choose alternate matches when the first result is wrong.
  • Approve or skip titles individually.
  • Bulk-approve high-confidence matches.
  • Detect titles already present in Radarr or Sonarr and avoid submitting them again.
  • Store request results in persistent history.
  • Configure Radarr and Sonarr root folders, quality profiles, monitoring, and search-on-add behavior.
  • Encrypt saved Arr API keys and integration credentials before storing them in SQLite.
  • Protect the WebUI with an optional shared password.
  • Optionally accept interactive requests from Discord.

Install from Unraid Apps

  1. Open Apps in the Unraid WebGUI.
  2. Search for Batcharr.
  3. Select the Batcharr application.
  4. Review the container settings.
  5. Set a persistent Batcharr Secret.
  6. Optionally set a Batcharr Password.
  7. Install the container.
  8. Open the Batcharr WebUI.
  9. Configure Radarr and/or Sonarr from Settings and run the connection tests.

Generate the Batcharr Secret

From an Unraid terminal:

openssl rand -hex 32

Copy the generated value into BATCHARR_SECRET and keep it stable for the life of the installation.

Do not casually change or lose BATCHARR_SECRET. Batcharr uses it to encrypt stored credentials. If the secret changes, previously saved API keys and tokens cannot be decrypted and must be entered again.

Unraid template settings

Setting Default Purpose
Repository ghcr.io/bmj812/batcharr:latest Official Batcharr container image
WebUI Port 50583000 Browser access to Batcharr
Appdata /mnt/user/appdata/batcharr/config Persistent SQLite database, settings, history, and encrypted credentials
PUID 99 Standard Unraid nobody user ID
PGID 100 Standard Unraid users group ID
TZ America/Los_Angeles Container timezone; change to your own IANA timezone as needed
BATCHARR_PASSWORD blank Optional shared WebUI password
BATCHARR_SECRET required Stable encryption secret for saved credentials
BATCHARR_COOKIE_SECURE false Set true only when Batcharr is accessed exclusively over HTTPS

First-run configuration

Open Settings in Batcharr and configure at least one Arr service.

Radarr

Batcharr can store and use:

  • Radarr URL
  • API key
  • Root folder
  • Quality profile
  • Minimum availability
  • Monitored state
  • Search-on-add behavior

Sonarr

Batcharr can store and use:

  • Sonarr URL
  • API key
  • Root folder
  • Quality profile
  • Series type
  • Monitor behavior
  • Season-folder behavior
  • Search-on-add behavior

When Batcharr shares a custom Docker network with the Arr containers, internal names such as these can be used:

http://radarr:7878
http://sonarr:8989

With Unraid's normal bridge networking, use addresses that are reachable from inside the Batcharr container, typically the Unraid host/LAN address and the published Radarr/Sonarr ports.

Import methods

1. External list — recommended for copied website lists

Copy the visible text from a list page and paste it into Bulk Import → External list.

Batcharr attempts to identify title rows, pair them with release years, remove duplicates, and ignore common page-navigation or metadata lines. This method does not require a TMDb developer account and does not ask Batcharr to browse arbitrary URLs on your behalf.

2. Paste titles

Paste a clean mixed list directly into Batcharr. Examples:

The Thing (1982)
movie: Alien
TV | The Expanse (2015)
Dark - 2017

Unlabeled titles can be searched automatically against the configured Arr services, or the batch can be forced to movies or television.

3. File upload

Batcharr accepts:

  • TXT
  • CSV
  • JSON

Imports are limited to 2 MiB and 200 unique titles per batch. Uploaded file contents are parsed in memory and are not retained as uploaded files.

CSV columns

A CSV file needs a header row. Recognized fields include:

title,year,type,tmdb_id,tvdb_id

title is required. type accepts movie/film or television/show/series forms. TMDb IDs can provide exact movie matching and TVDb IDs can provide exact series matching.

JSON shape

JSON can be a top-level array or an object containing an items array:

{
  "items": [
    {
      "title": "Alien",
      "year": 1979,
      "type": "movie",
      "tmdbId": 348
    }
  ]
}

4. Direct TMDb list import — optional advanced integration

Batcharr can load a TMDb list by list URL or numeric list ID when you configure your own TMDb API Read Access Token in Settings.

This is optional. The normal copied external-list workflow does not require a TMDb account or token.

Review and submission workflow

After resolving a batch, Batcharr presents a review queue. Depending on the result, an item can be:

  • Needs review
  • Approved
  • Skipped
  • Already present
  • Added
  • Failed

You can inspect the selected match, choose an alternate candidate, approve or skip individual items, bulk-approve high-confidence matches, and then submit only the approved items.

A successful Batcharr request means the item was accepted by Radarr or Sonarr. It does not mean that the media has finished downloading.

Request history

The History tab records recent request results including:

  • Movie or series type
  • Title
  • Release year when available
  • External ID when available
  • Status
  • Result message
  • Timestamp

History is stored in the persistent SQLite database under /config.

Discord integration

Discord support is optional. Batcharr includes an in-app setup guide and can register these slash commands:

  • /movie — find and request a movie
  • /show — find and request a television series
  • /list — resolve and review a mixed list

Discord requests use interactive confirmation rather than silently adding the first search result. Batcharr can also restrict Discord use to configured channel IDs and/or role IDs.

The container includes the Discord gateway worker. Batcharr also exposes an interaction endpoint for Discord application configurations that use an Interaction Endpoint URL.

Discord credentials can be stored from the WebUI. Environment variables can also override saved Discord settings for advanced deployments.

Optional advanced environment overrides

These are not required in the standard Unraid template because they can be configured in the Batcharr WebUI, but advanced users can provide them as additional container variables:

Variable Purpose
TMDB_ACCESS_TOKEN TMDb API Read Access Token
DISCORD_APPLICATION_ID Discord application ID
DISCORD_PUBLIC_KEY Discord application public key
DISCORD_BOT_TOKEN Discord bot token
DISCORD_GUILD_ID Discord server/guild ID
DISCORD_ALLOWED_CHANNEL_IDS Optional allowed Discord channel IDs
DISCORD_ALLOWED_ROLE_IDS Optional allowed Discord role IDs

Environment-provided integration values override the corresponding values saved in Batcharr.

Updating Batcharr on Unraid

Batcharr uses the published latest image from GitHub Container Registry.

Normal update path:

  1. Open the Docker page in Unraid.
  2. Check for updates.
  3. Update Batcharr when an image update is available.
  4. Keep the /config mapping unchanged.
  5. Keep the existing BATCHARR_SECRET unchanged.

Manual pull:

docker pull ghcr.io/bmj812/batcharr:latest

If Unraid appears to keep an old image, Force Update recreates the container from the current template/image while preserving mapped appdata and variables.

Current limitations

  • One Radarr instance and one Sonarr instance.
  • One optional shared WebUI password rather than individual user accounts.
  • Maximum of 200 unique titles per WebUI import.
  • Discord list review is intentionally bounded for interactive Discord UI constraints.
  • Copied external-list importing requires the user to copy visible webpage text.
  • Direct TMDb list importing requires a user-supplied TMDb token.
  • Batcharr submits requests but does not manage the downstream download queue.
  • The currently published container workflow targets linux/amd64.

Security notes

  • Radarr and Sonarr API keys are encrypted before being written to SQLite.
  • TMDb tokens and Discord secrets saved in Batcharr are stored server-side and encrypted.
  • Secret credentials are not returned to the browser after saving.
  • Imported files are parsed in memory rather than retained as uploaded files.
  • Keep BATCHARR_SECRET private and stable.
  • Do not post Arr API keys, Discord bot tokens, passwords, or the Batcharr secret in support threads or screenshots.
  • Leaving BATCHARR_PASSWORD blank is appropriate only when access to Batcharr is already restricted by a trusted LAN, VPN, reverse-proxy authentication, or equivalent control.
  • Use BATCHARR_COOKIE_SECURE=true only when users access Batcharr exclusively through HTTPS.

Troubleshooting / support information

When reporting a problem, include:

  • What you were doing when the problem occurred
  • Whether the problem occurred in the WebUI or Discord
  • Which import method was used
  • Whether the Radarr and Sonarr connection tests succeed
  • Browser/device information if the issue is UI-related
  • Screenshots with all secrets hidden
  • Recent Batcharr container logs

Useful Unraid commands:

docker logs --tail 200 Batcharr

If your container name is lowercase, use:

docker logs --tail 200 batcharr

Check the running image:

docker inspect batcharr --format='{{.Image}}'

Check the locally pulled latest image:

docker image inspect ghcr.io/bmj812/batcharr:latest --format='{{.Id}}'

Links

License

This template repository is licensed under the zlib License (Zlib). See LICENSE.

Batcharr's application source should use its own repository LICENSE file as the authoritative license for the application code.

Install Batcharr on Unraid in a few clicks.

Find Batcharr in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for Batcharr Review the template variables and paths Click Install

Requirements

At least one reachable Radarr or Sonarr instance is required for media requests. Internet access is required to pull the container image and for optional TMDb or Discord integrations.

Related apps

Explore more like this

Explore all

Details

Repository
ghcr.io/bmj812/batcharr:latest
Last Updated2026-09-07
First Seen2026-07-21

Runtime arguments

Web UI
http://[IP]:[PORT:3000]
Network
bridge
Shell
sh
Privileged
false

Template configuration

WebUI PortPorttcp

Host port used to access the Batcharr WebUI. Container port 3000 is fixed.

Target
3000
Default
5058
Value
5058
AppdataPathrw

Persistent Batcharr SQLite database, settings, request history, and encrypted credentials. Keep this mapping when updating or recreating the container.

Target
/config
Default
/mnt/user/appdata/batcharr
Value
/mnt/user/appdata/batcharr
PUIDVariable

Unraid user ID used to run Batcharr inside the container. The standard Unraid nobody user is 99.

Default
99
Value
99
PGIDVariable

Unraid group ID used to run Batcharr inside the container. The standard Unraid users group is 100.

Default
100
Value
100
TimezoneVariable

IANA timezone used by Batcharr for timestamps and runtime behavior. Change this to your local timezone if needed.

Target
TZ
Default
America/Los_Angeles
Value
America/Los_Angeles
Batcharr PasswordVariable

Optional shared WebUI password. Leaving this blank disables Batcharr login protection; do that only on a trusted LAN, VPN, or otherwise access-controlled network.

Target
BATCHARR_PASSWORD
Batcharr SecretVariable

Required stable secret used to encrypt stored Radarr, Sonarr, TMDb, and Discord credentials. Generate a strong value such as: openssl rand -hex 32. Do not change or lose it after setup; changing it makes previously stored encrypted credentials unreadable.

Target
BATCHARR_SECRET
Secure CookieVariable

Set to true only when browsers access Batcharr exclusively through HTTPS. Leave false for normal direct HTTP access on your LAN.

Target
BATCHARR_COOKIE_SECURE
Default
false
Value
false