Repository navigation
bundled plugins
Seventy-two signed WebAssembly components ship with the release, in plugins/ next to the
executable. Only the ones you use are installed: you choose them by service in the setup
assistant's Your services step, and
serve keeps what is installed up to date at every start.
- A fresh installation starts with the services that need no account or destination — link lists and folder crawlers, the account-less hosters (XFileSharing, MediaFire, KrakenFiles), metadata and post-processing — so it works before anybody opens the assistant.
- Your services in the setup assistant installs the ones you tick and removes an installed one you untick; a service you removed is not installed again at a later start. A service is every plugin that belongs to it: MEGA is its downloads, its sign-in, its folders and its login check.
- Settings → Plugins → Catalogue lists every bundled service, installed or not, by category and with a search; Install adds one with one click. A plugin you removed shows up here again rather than coming back on its own.
- An update never installs something new. It brings newer versions of what is installed; a plugin that is new in the release is listed as available.
- The repository comes first. Both install each plugin of a service from the plugin repository when it offers the bundle's version or a newer one, signed with the same key and asking for no more permissions, and from the bundle beside the program otherwise — without a network, for example. See Installing and trust.
- To install every bundled plugin, start the service with
--install-all-bundled-plugins(Docker:RDOWNLOADER_INSTALL_ALL_BUNDLED_PLUGINS=true).
When a newly installed plugin starts to run is described in Installing and trust.
A new plugin version does not always mean new behaviour. When the shared library the bundled plugins are built with changes, every one of them gets a new patch version with no change of its own. It is installed at the next start; nothing needs to be done.
Hoster, cloud-storage and multihoster resolvers. Each exists only as a plugin — nothing is compiled into the application as a fallback.
| Plugin | Type | Does |
|---|---|---|
ddownload |
Hoster | DDownload, via account credentials or an API key |
rapidgator |
Hoster | Rapidgator, premium account or the free flow |
nitroflare |
Hoster | Nitroflare, premium key or the free flow |
katfile |
Hoster | KatFile, across its mirror domains |
onefichier |
Hoster | 1fichier with an API key |
keep2share |
Hoster | Keep2Share with a premium account |
filejoker |
Hoster | FileJoker, with account cookies |
turbobit |
Hoster | Turbobit as a guest through the site's captcha and countdown, or with an account |
hitfile |
Hoster | HitFile as a guest through the site's captcha and countdown, or with an account |
krakenfiles |
Hoster | KrakenFiles without an account, through the file page's download form and its Cloudflare Turnstile |
mediafire |
Hoster | Public MediaFire file links, through the documented API and the file page |
pixeldrain |
Hoster | Pixeldrain files, without an account or with an optional API key |
xfs-generic |
Hoster | XFileSharing installations across 211 domains — takes no account at all |
dropbox |
Hoster | Dropbox files and shared links, through the official Dropbox API |
google-drive |
Hoster | Google Drive files, shared links and Workspace exports, through the official Drive API |
onedrive |
Hoster | OneDrive and SharePoint files and sharing links, through Microsoft Graph |
box |
Hoster | Box files and shared links, through the official Content API, pinned to the file version |
pcloud |
Hoster | pCloud files, in either of pCloud's two data centres |
putio |
Hoster | Files in a Put.io account |
seedr |
Hoster | Files in a Seedr account, with the account's e-mail address and password |
torbox |
Debrid service | TorBox's own download addresses, renewing the short-lived link on every attempt |
premiumize |
Multihoster | Resolves other hosters' links through Premiumize.me |
alldebrid |
Multihoster | Resolves other hosters' links through AllDebrid |
debridlink |
Multihoster | Resolves other hosters' links through Debrid-Link |
linksnappy |
Multihoster | Resolves other hosters' links through LinkSnappy |
realdebrid |
Multihoster | Resolves other hosters' links through Real-Debrid |
offcloud |
Multihoster | Resolves other hosters' links through Offcloud |
The cloud-storage resolvers sign in through their provider's own OAuth plugin, listed below. See Hosters and accounts for credentials and the free flow.
Turn one address that stands for many files into those files. The folder each file sat in becomes the package suggestion.
| Plugin | Lists |
|---|---|
premiumize-crawler |
A Premiumize.me cloud folder or item address |
mega-crawler |
A public MEGA folder link, or a folder of the signed-in account, with names, sizes and structure — at most a thousand files, or a refusal saying so |
google-drive-crawler |
A Google Drive folder or shared-drive address |
dropbox-crawler |
A Dropbox folder or shared-folder link |
onedrive-crawler |
A OneDrive or SharePoint folder sharing link |
box-crawler |
A Box folder or shared link |
pcloud-crawler |
A pCloud folder of your own drive, or a public link |
pixeldrain-crawler |
A Pixeldrain list (/l/…), one file per entry under the list's title |
mediafire-crawler |
A public MediaFire folder link, or a list of file keys |
nextcloud-crawler |
A public Nextcloud or ownCloud folder share, including a password-protected one |
peeplink-crawler |
The hoster links behind a PEEPLink or AlfaLink entry page |
directory-index-crawler |
An open directory listing of Apache, nginx, Caddy or lighttpd |
Sign an account in through the provider itself, instead of pasting an API key.
| Plugin | Flow |
|---|---|
alldebrid-auth |
PIN flow |
debridlink-auth |
OAuth device flow |
premiumize-auth |
OAuth device flow |
torbox-auth |
Checks a pasted TorBox API key |
mega-auth |
Signs a MEGA account in with its e-mail address and password; the application computes the values MEGA's sign-in needs, so the password never enters the plugin |
All of them report a refusal with a stated reason — consent refused, the code expired, an unreadable answer — and repeat nothing the provider wrote, so a leaked credential in an error answer never reaches the interface or the log.
Authorization code with PKCE, or a device code, with automatic renewal from stored refresh material.
| Plugin | Signs in to |
|---|---|
google-drive-oauth |
Google, through Google's own authorization endpoint |
onedrive-oauth |
Microsoft, by browser or by device code |
dropbox-oauth |
Dropbox, through Dropbox's own authorization endpoint |
box-oauth |
Box, with your own application's client id and secret |
pcloud-oauth |
pCloud, with your own application's key and secret |
putio-oauth |
Put.io, with your own application's client id and secret |
realdebrid-auth |
Real-Debrid, by device code — the account's Connect with a code sign-in |
rdownloader plugin new --type oauth scaffolds the starting point for a provider whose token
expires. See Developing a plugin.
Work that runs at a provider and outlives the call that started it.
| Plugin | Does |
|---|---|
realdebrid-torrents |
Runs magnets and .torrent files on a Real-Debrid account, and asks which files you want |
torbox-jobs |
Runs magnets, .torrent and .nzb files and ordinary links on a TorBox account |
premiumize-transfers |
Runs magnets, ordinary links and container files on a Premiumize.me account |
putio-transfers |
Runs magnets and .torrent files on a Put.io account |
offcloud-cloud |
Runs magnets and ordinary links in an Offcloud account's cloud |
seedr-jobs |
Runs magnets and .torrent files on a Seedr account |
Such a job is followed on the Remote jobs page: it keeps running while this machine does not, and the account keeps it afterwards until somebody deletes it. Only Real-Debrid stops to ask which files you want; the others hand every finished file to the LinkGrabber, where you pick. See Remote jobs.
A provider that encrypts on the client hands over an address and a description of how its bytes become a file. The bytes never leave the application, and the key never reaches the provider.
| Plugin | Does |
|---|---|
mega |
Resolves MEGA file links — public ones and files of the signed-in account — and describes how the host decrypts their bytes. It also carries the MEGA account row |
Three example plugins — example-oauth, example-stream-transform and example-transfer — are
in the repository's plugins/ folder but do not ship. No transfer backend is bundled. The starting
point for a plugin of your own is the scaffold of its type; see
Developing a plugin.
Turn a file format the built-in scanner does not understand into LinkGrabber candidates.
| Plugin | Reads |
|---|---|
metalink-intake |
RFC 5854 .meta4 and Metalink 3.0 .metalink: each listed file with its name and size under its best-ranked HTTP mirror; every mirror and hash becomes one of the download's sources — see Metalink
|
crawljob-intake |
JDownloader .crawljob files, turning packageName into a grouping hint. It reads only text, packageName and filename — never a download folder or a command to run afterwards |
| Plugin | Does |
|---|---|
sponsorblock-enricher |
Reports how much of a YouTube video is sponsor, self-promotion or intro, before the download starts. It sends a video id and nothing else |
metadata-enricher |
Reads the film or series out of a release name and adds rating, year, genre and runtime |
Off by default, like every enricher — an enricher reaches a service outside your machine.
One service each, so they can be updated and switched off separately.
| Plugin | Delivers to |
|---|---|
ntfy-notifier |
An ntfy topic on ntfy.sh or on your own server, with an optional bearer token |
discord-notifier |
A Discord webhook — the token is kept in the vault even though it is part of the address |
telegram-notifier |
A Telegram bot chat, by bot token plus chat id |
plex-notifier |
Refreshes the Plex libraries when a package finishes; with a library section and a path mapping only the package's folder is scanned. The token is optional for a server that admits its own network |
jellyfin-notifier |
Refreshes the Jellyfin libraries when a package finishes, with an API key; with a path mapping it scans the folder that holds the package instead of every library |
emby-notifier |
Refreshes the Emby libraries when a package finishes, with an API key; with a path mapping it scans the folder that holds the package instead of every library |
See Notifications.
Run after cleanup and before a user script. Installing one changes nothing until it is enabled, globally or per category.
| Plugin | Does |
|---|---|
sha256-postprocess |
Verifies .sha256 sidecar files |
md5-postprocess |
Verifies .md5 sidecar files |
rename-postprocess |
Tidy file names — replaces spaces with dots and collapses runs of separators. Leaves extensions and hidden files' leading dots alone, renames a file inside the folder it is in and never the folder, and reports skipped when a package is already tidy |
| Plugin | Does |
|---|---|
webdav-storage |
Creates a folder per package and the package's own folders inside it, uploads each file, and confirms each one with a PROPFIND before anything local is deleted
|
Set the post-processing upload target to plugin:<plugin-id>/<destination> to use it. See
Post-processing.
Getting started
- Installation
- Building from source
- Translating rDownloader
- First run
- Your first download
- The interface
Using rDownloader
- The download queue
- Download history
- The LinkGrabber
- Site rules
- Hosters and accounts
- Usenet and NZB
- BitTorrent
- Video and audio downloads
- Image galleries
- Livestream recording
- FTP, SFTP and WebDAV
- Object storage
- Subscriptions
- Remote jobs
- Storage, categories and rules
- Watched folders
- Post-processing
- Bandwidth and power
- Notifications
- Automation
- Statistics
- Keyboard and accessibility
Integrations
- Browser extension
- Desktop capture agent
- Command line client
- REST API
- MCP server
- Automation tool compatibility
Operating
- Docker and NAS
- Synology NAS
- Reverse proxy
- Accounts, sessions and permissions
- Sign in with an identity provider
- External tools
- Backup and restore
- Updates
- Security and privacy
- Diagnostics and maintenance
- Troubleshooting
- Defaults and limits
- Support matrix
Plugins
Plugin development
- Developing a plugin
- Resolver
- Transfer backend
- Intake parser
- Intake parser with mirrors
- Folder crawler
- Remote job
- Sign-in
- OAuth sign-in
- Metadata enricher
- Notification destination
- Post-processing step
- Upload destination
- Stream transform
- Plugin reference
- Packaging, signing and distribution
- Running a plugin repository
Reference