Essential only
Appearance
this browser only
PresetClassic is a plain, light, compact dashboard with just the queue and history - the graphs and extra cards are hidden. Full brings the default back: auto theme, regular spacing, everything shown. Dense keeps everything but shrinks it - small cards several to a row, short graphs, made for big screens. Each simply sets the controls on this page and the dashboard cards, so any part can be adjusted afterwards; stored in this browser
Classic
Full
Dense
ThemeAuto follows your system's light or dark setting
Auto
Dark
Light
High contrast
Accent colorused for links, buttons and the first chart series
Use the theme's color
Text size100%
Reset
Spacinghow much room each card gets. Compact fits every figure in a small window; spacious gives them air
Comfortable
Compact
Spacious
Fill gapsDense preset only. Lets the dashboard drop to fewer, wider columns when that leaves less empty space under short cards; the page itself can come out a little taller. You can also stack a card by hand: right-click its heading and choose Stack under
Cornershow rounded cards, buttons and panels are
Soft
Square
Round
Outlineshow visible the line around each card and control is. Strong helps if the edges are hard to make out
Normal
Faint
Strong
Chart coloursthe series colours on every graph. The colour-blind-safe set stays distinguishable with deuteranopia or protanopia, which a red/green pair does not
Default
Colour-blind safe
Warm
Movementcharts glide and views fade in. Follows your system's reduce-motion setting unless you choose here
Follow my system
Full
None
Typefacethe more readable option picks the clearest faces already installed on this machine (wider letterforms, looser spacing); nothing is downloaded
System
More readable
Monospace
Your own coloursoverride the theme's background, card and text colours. The readability check below measures whatever you pick, so you can see immediately if a pair stops being legible
Background
Cards
Text
Back to the theme
Readabilitymeasured against the WCAG 2.1 minimum of 4.5:1 for body text
Save or move this lookeverything on this card, plus your card layout, as a file you can keep or load into another browser
Save to a file
Load from a file
Reset the lookputs the appearance and your card layout back to defaults. Your servers, folders, watchlists and every other setting are untouched: this card is stored in this browser only
Reset appearance to defaults
Recommended settings for how you use it
Usenet servers applies from the next download
+ Add server
⤵ Import from SABnzbd / NZBGet…
✓ Test all
Save server
Test connection
Cancel
Server address
Port563 secure · 119 plain
TLS (encrypted)
Username
Connectionsmax your plan allows
Use exactly this manyauto-tuning still measures this server and still reports what it found, but the number above wins. Turn this on when you have timed real downloads yourself and the tuner disagrees with you
Tier / level0 = primary; a level-N server only fetches articles every lower level missed: fill/backup economics
Provider networkservers you give the same name here are treated as one source: many brands resell the same network (optional)
Retention (days)0 = unlimited; older articles route to deeper servers
Block size (GB)for an account where you paid up front for a fixed amount of data: nzbfast counts what it has used and stops using this server when that data is gone. 0 = an unlimited plan. Give it a tier of 1 or more so it only fills in what your main servers missed
Bought a new blockwhen you top up this account, press the button to restart the used counter at zero. The usage history is kept
Block refilled
Every byte is billedturn this on for a metered account, where you pay for what you download. Your files still come from this server exactly as before; what stops is nzbfast spending bytes here for its own benefit, such as automatic connection tests, benchmark traffic and header scans for the index. Leave it off for an unlimited plan
Keep connections openreuse this server's connections between downloads instead of opening new ones, so the next one starts sooner. Whether it helps depends on your link, so it is off until you measure it: Measure runs a short paired test and tells you what it found
Measure
Speed per connectionhow fast ONE connection to this server actually runs, measured rather than assumed. It matters because nzbfast decides how many connections to open by dividing your line speed by what it expects each one to carry, and on some routes - a provider on the other side of the world is the usual one - each connection runs far slower than that, so the number it opens is too small and your line sits half empty. Measuring costs a little of your allowance and opens real connections for a few seconds, so it only ever runs when you press this. Nothing is changed by it: it tells you what it found
Measure
Addresses allowed at oncehow many places may use this account at the same time, from your provider's plan. Not the same as connections above: that is how many connections ONE machine opens, this is how many machines, sites or homes may connect at all. Leave blank if you do not know and nzbfast will use a safe guess
Where to find this
Sign in to your provider's own website (the member area, control panel or "my account" page) and open the page for your plan or subscription. Look for wording like IP addresses , locations , devices or simultaneous logins . It is often printed next to the connection count and is a much smaller number: 1, 2 or 3 is common, and many providers set no limit at all. Your welcome email may say it too. If nothing mentions one, leave this blank.
Why it matters. Holding a connection open makes the next download start faster, but it also keeps one of these address slots occupied while nothing is downloading. If you run nzbfast somewhere else too, or use this account from a laptop, a seedbox or another home, an idle machine can quietly lock the others out. With a limit of 1 or 2 that happens straight away. nzbfast uses this number to decide how soon to hang up when idle.
More than one internet connection? If this machine reaches the internet over several links (a router balancing two lines, or a multi-WAN setup), each connection can go out from a different address and use up several slots at once. Set a bind address on this server to pin it to one link.
Hang up when idle afterseconds with nothing downloading before nzbfast closes this server's connections, freeing the account for your other machines. The next download opens fresh ones, which costs a moment at the start. Blank = choose for me, based on the address limit above. 0 = never hang up, which is right when this machine is the only thing using the account
Connections to keep warmhow many connections survive that hang-up, so the next download still starts warm. Blank = choose for me. On a provider that limits ADDRESSES this makes no difference: this machine is one address whether it holds one connection or sixty, so keeping any at all leaves the account occupied and the sensible answer there is none
Reach this server overwhich kind of internet address to try first, when this server has both an IPv4 and an IPv6 one. Automatic tries IPv4 first, which suits almost everyone. Pick IPv6 first if your home network reaches IPv4 only through your internet provider's translator, where IPv6 is the quicker path. Whichever you pick, the other kind is still tried if the first does not answer. One caution on macOS: it makes itself fresh IPv6 addresses for privacy every so often, so a usenet provider that counts how many places use your account at once can read one machine as several. If yours limits that, set a bind address below as well, to a fixed IPv6 address of this machine
Automatic (IPv4 first)
IPv4 first
IPv6 first
Name on the certificateonly for a server whose security certificate is issued to a different name from the one you connect to. That happens when you reach a server of your own by its address or its name on your own network, or when a provider sits behind another company's front end. Put the name the certificate was issued to here and connect to whatever you like: the certificate is still checked in full, and still has to be issued by a recognised authority - all this changes is which name it has to be issued to. Blank, which is right for almost everyone, checks the name or address you connect to. It takes a name, never an address
Go out from this addressthe local IP address this server's connections leave from, for a machine with more than one internet link (two lines on a router, or a VPN alongside the normal one). Blank lets the system choose. The kind of address decides the kind it reaches: an IPv4 address here connects to the server over IPv4
Through a SOCKS5 proxysend this server's traffic through a SOCKS5 proxy, as host:port. The proxy looks up the server's name for you, so the lookup does not leak past it. Blank connects directly. Each server has its own, so one provider can go through a proxy while the others do not
Proxy sign-inonly if your proxy asks for a user name and password. Leave both blank for an open proxy. Like the server password above, a stored proxy password is never shown: leave it blank to keep it, or clear the user name to remove both
Save server
Test connection
Cancel
Speed & scheduling live
Speed limitbytes/sec, e.g. 50M, 1G; 0 = unlimited
Auto speedRTT-governed: yields to other household traffic, under the cap
Auto-defer slow downloadsa job stuck on one slow server while others wait is sent to the back of the queue (progress kept; it resumes when the queue is clear)
Prefetch on idle serversservers the active download can't use (its articles aren't on them) start the next queued job instead of idling; off automatically when a quota is set
Race slow articlesnear the end of a download, idle connections fetch the last slow articles a second time and the first copy wins; a connection running far below its siblings is reconnected. Finishes jobs sooner for a fraction of a percent of extra traffic
Adaptive connection timeoutsa connection that goes quiet is cut in seconds instead of half a minute, judged against that server's usual response time; a slow but alive transfer is never cut. In fault tests it cleared dead-air stalls about 4x sooner, helped further when a whole server went mute, and dropped nothing on a spiky but healthy link
Check posts before downloadingwhile nothing is downloading, ask every server about a few of each queued post's articles and mark the row with the answer: a post your providers no longer carry is worth knowing about before the bandwidth is spent, not at 97%. Costs a few dozen tiny requests per job, plus a short read of the post's repair data, which is skipped on a prepaid block account. A clean result means the articles answered, not that their contents are intact: a small number of providers answer for removed articles with dummy data, which only the real download catches
Healthy-looking posts start firsta job whose check came back bad waits behind items of the same priority that checked out better. It only changes the ORDER: nothing is removed, paused or failed, and forcing a job or raising its priority overrides it. On by default: a post uploaded moments ago can look missing everywhere too, but it only waits behind healthier items and still downloads
Give up on posts no server can supplya job fails without downloading when EVERY one of your servers said EVERY sampled article was missing and the post is too old for that to be propagation. Sonarr or Radarr then blocklists the release and looks for another one straight away, instead of waiting out a download that cannot finish. Off by default and deliberately hard to trigger: one silent server, or one article still present, and the job runs as normal. Even so, a provider having a bad five minutes can look exactly like a dead post, so turn this on only if you would rather lose the occasional good release than spend the bandwidth. Needs the check above
Alternate copies to holdwhen a download is grabbed from a search, keep this many of the next-best matches ready as backups. Only the small .nzb files are kept - a few kilobytes each - and nothing is downloaded from them unless a copy is switched to. 0 keeps none; 2 or 3 is plenty
Switch to a held copy without askingwhen a download turns out to be one that cannot finish, start the best copy already being held for it instead of putting a button on the queue row. It spends no more than the download you already asked for, because the release is the one you chose and the backup .nzb is already on disk
Look for a replacement when none is heldoff unless you turn it on. Searching spends new traffic on a release you did not pick, so this one asks first by default. Never done for a download Sonarr or Radarr sent: they blocklist and re-search themselves, and two of you hunting one episode gets it grabbed twice
Most copies to tryhow many copies of one release this may spend in total, the first attempt included. Stops a title nobody can supply from being tried all night
Most extra traffic to spenda ceiling on what switching copies may add on top of the download you asked for: e.g. 20G, or 0 for no limit. 0 is the right answer on an unmetered account and the wrong one on a block account, where every byte of a second copy is paid for
Providers the oracle says are gone go lastexperimental: when the availability check is confident a provider's backbone has lost a release (takedown), that provider is asked LAST for that download instead of first. It only changes the ORDER: nothing is removed, so a written-off provider is still asked once every other server has missed the article, and a wrong call costs a little time rather than the download. Off by default
Availability checks while idlewhile nothing is downloading, ask each server about a few articles of indexed releases and remember the answers: that is the picture the setting above reads, and what lets a dead post be recognised before you queue it. Counted per server per hour; 0 turns the checking off. Default 300. Needs the built-in indexer, and stands down entirely while a download runs
Auto-tune connectionsapplies from the next download while idle, measure each provider's connection sweet spot and cap downloads at it: asking a provider for too many sockets can be several times SLOWER than the right number. Set a Line speed below and every result is also scored against it, so you can see how close your providers get and what is worth changing
Check for updatesshow a notice when a new version is published: nzbfast never downloads or installs updates by itself; off = never check at all
Update check URLrelease manifest the daemon polls every 6 h; empty disables checking
Check
Line speedyour connection's full speed. Units matter and both are accepted: 900Mbps or 1Gbps for the number your provider quotes (they sell megabits), 112MB/s or a bare 112M for megabytes. This is the yardstick connection tuning is scored against - every ladder says how close it got, and the note below says what to do about a gap. Tuning never stops measuring at this number, so a line faster than the setting still reads true and is reported back to you. Also lets remote apps set percentage speed limits, SABnzbd-style
Weekly schedulerules fire in this machine's local time; on (re)start the most recent rule at-or-before now wins
+ Add rule
Apply schedule
Connections & performance applies from the next download
Connectionssockets PER SERVER for a download (each server's own account limit also applies); use Connection tuning on the dashboard to find the sweet spot
Total connections across all serversnzbfast normally chooses this for itself and grows it when a measurement says the line needs more: a small fleet finishes sooner than a large one on most lines, and asking for too many sockets is measurably slower. Leave it empty for that. A number fixes the whole fleet at that many connections, shared out across your servers and still inside each account's own limit above. 0 turns the rule off, so every server dials its own number. Worth setting only if "Why is this slow?" on a download says the connection budget is what is holding it back
Pipeline windowcommands in flight per connection
Decoder threads
Checking while downloadinghow much of a download is checked as it arrives. Full confirms every PAR2 block with MD5. Fast claims blocks by CRC32 instead, 2-3× quicker on slow CPUs, and still checks every article's own CRC. Lean also skips those article CRCs once PAR2 covers a file, so damage is caught a moment later, at its block. Whichever you pick, the settle pass at the end and any repair use full MD5, and a download with no PAR2 files keeps article CRCs
full: MD5 every block
fast: CRC32 blocks (default)
lean: CRC32 blocks, no article CRCs
Fast final checklive the check that reads your finished files back from the disk, at the end of a download and when you run nzbfast verify by hand. Normally each file is proved by one digest over the whole file, and that is a single read on one core however many cores the machine has. With this on, each file is proved from the PAR2 set's per-block checksums instead, which run on every core at once. Much faster on a fast local disk, and worth very little on a network share or a spinning disk, where the disk is already the limit. What it costs: a PAR2 set can carry two records that describe different files, and other tools call such a set damaged where this calls it clean. No normal set is built that way, and a repair still proves itself the old way whatever this says
Fast PAR modelive speeds up repair of badly damaged downloads. Turns itself off automatically if a repair does not verify
Memory budgetapplies after restart pipeline RAM cap, e.g. 8G; 0 = automatic (sized from this machine's RAM)
Disk & quota
Download straight into the destinationapplies from the next download write files into the destination above from the start, instead of downloading here and moving them at the end. On a setup where the destination is a different drive, that turns every finished job from a full copy-and-delete into nothing at all, and no job ever needs room on two drives at once. Leave it off for a destination on a network share: every write then goes over the network for the whole download, rather than one bulk copy at the end. The unfinished download, its resume record and the repair scratch all live on the destination while it runs. Per-category ticks in Categories & folders below turn it on for one kind of download without turning it on for the rest
Permissions on finished downloadsapplies from the next download a umask, the same number Docker and the setup guides use: 002 gives folders 775 and files 664, 022 gives 755 and 644. Leave it empty and nzbfast changes nothing, which is what it has always done. Set it when Sonarr or Radarr run as a different user in the same group and cannot read or import what lands here - on a systemd install they usually cannot, because the unit keeps everything the daemon writes owner-only to protect the API key. Ignored on Windows, which has no such thing
Minimum free spacelive pause new jobs below this, e.g. 25G. Defaults to 2G so the disk never fills completely; 0 = off
Pause when the disk cannot keep uplive a drive that has started to fail often still accepts writes - it just takes minutes over them. The download then crawls, the graph sawtooths, and it all looks like a network problem. With this on, several minutes of stalled writes pause the queue with the reason and the folder named, keeping everything downloaded so far, and downloads start again by themselves once the drive answers normally. A brief busy spell never triggers it
Download quotalive byte budget per period, e.g. 500G; 0 = off. Force-priority jobs bypass it
Quota periodlive
daily (local midnight) weekly (Monday, local time) monthly (1st, local time)
Nested archive depthlive how many archive-in-archive layers to unpack automatically (default 5); applies to the next download. At the limit the deepest archive is left in place, unpacked no further - the download still completes. Raise only for unusually deep nested releases
Checking downloads later
Keep a check file in each finished folderapplies from the next download every download proves a checksum for each file it fetched, and then throws it away: the .par2 files that carried it are cleaned up, so months later there is nothing left to check the folder against. With this on, those checksums are kept in a small hidden file called .nzbfast.manifest beside the payload, and a folder can be checked, and repaired, years after it was downloaded. It costs no extra downloading, and one quick read of the finished files as the download ends. Turn it off and finished folders get no such file; a folder that finished while it was off cannot be checked later, because there is nothing to check it against
Check finished folders on a schedulelive off unless you turn it on. Every so often nzbfast goes through the finished folders that have a check file, checks each one against it, and starts a repair for whatever no longer matches, without anybody clicking. It never runs while a download is running or waiting, and it steps aside as soon as one arrives. Checking is not free: it reads every file in a folder from end to end, unpacked films included, so a library where nothing is wrong still costs the disk that read. At most 200 folders are looked at each time, and the next round carries on where the last one stopped, so a big library is covered over several rounds instead of one enormous read. Two things it will not do on its own: repair a download that is no longer on record here, because finding another copy of it means a search and what comes back may not be what is on your disk; and touch a download whose size it does not know, because then it cannot count what the repair would cost. Both are still offered by the Check it button above, where you can look at them first. Needs the check file setting at the top of this card: a folder without one cannot be checked
Hours between checksweekly by default, because a check costs a full read of the folders it reaches and files do not go bad by the hour. 1 to 8760, which is a year. A new value applies from the next check onwards. The first check of a session runs a quarter of an hour after nzbfast starts, and the clock is not remembered across restarts, so a machine restarted more often than this checks more often than this; what bounds the cost of that is the two limits below, not this number
Most repairs to start each timehow many damaged downloads one check may start repairing. Four by default, and 16 at the very most, which is the same limit the Check it button above has: that button tells you the whole count before you press it, and this one tells nobody anything, so it is kept well below it. Damage past the limit is not forgotten, it waits for the next check or for the button above. 0 finds the damage and repairs none of it
Most to download each timea ceiling on what one check may spend on repairs, e.g. 20G. 0 does not mean unlimited here: it means nothing is repaired automatically, and there is no value that takes the ceiling off. Each repair is counted against this at the full size of the download it repairs, not at the size of the damaged part, even though a repair usually fetches far less than that. Counting it the pessimistic way is the point: a ceiling that holds in the worst case holds in every case. For a folder that was unpacked from an archive the worst case is the ordinary case, because none of what is on the disk can be reused
Save paused downloads while you can live
Disk to use for thisNothing on Usenet stays up forever, so an item you queue paused for later can be half gone by the time you start it. Give this a budget and nzbfast quietly fetches those items' files now, while the posts are still whole, then unpacks one only when you start it. The number is how much disk that may use, in GB; 0 turns it off, which is what it does today. It runs only while nothing else is downloading and steps aside within seconds when a real download arrives, and nothing is ever deleted to make room - at the budget, nothing new is picked up
Add watchlist finds pausedNew episodes and films the watchlist finds are queued paused instead of downloading straight away, so you decide when each one runs. With a budget above, their files are still fetched in the background while the post is whole, so waiting costs you nothing
Watch folder & post-processing live
Re-check the folder everylive a file dropped on this machine is noticed the moment it lands, so this is only the backstop for folders the system cannot report on: typically a network share written from another computer. Seconds, 1 to 3600; default 5
Keep .nzb files after pickuplive leave the original .nzb in the watch folder after it is queued, instead of moving it to the Trash. For collectors, and for handing the file to someone when a download misbehaves. A kept file is remembered and not queued again; re-save it to download it again. Whatever you choose, every job's drawer can save you a copy of its .nzb
Also scan subfolderslive files in subfolders are picked up too, and the first subfolder's name becomes the download's category: a file dropped in watch/tv joins the tv category. A folder named "rejected" is left alone; it is where unusable files go when the switch below is on
Move unusable files asidelive a file that is not a usable NZB is moved into a "rejected" folder inside the watch folder, with a small text file beside it saying what was wrong. Off: the file stays where you put it and the reason is shown above the queue. A file that merely looks incomplete is always left in place, because it may still be arriving
Queue NZB files a download produceslive some posts are a "container": a small NZB whose payload is another .nzb file. With this on, a download that finishes with an NZB among its files adds that NZB to the queue paused, so you can check its size and start it yourself. It goes one level only, an NZB inside a download that itself arrived this way is left alone; candidate files over 32 MB are skipped, at most 20 per download are taken, and anything that is not a readable NZB is left on disk
Give the script at mostlive a script still running after this is killed, and a line saying so goes in the log; the download itself is unaffected either way. Seconds; 0 = wait as long as it takes, which is what a long transcode wants. Default 3600. With no limit, one script that hangs holds a thread for as long as nzbfast runs, and every job that finishes after it holds another
Limit where scripts can writelive runs your scripts so they can only write inside the folders nzbfast already uses: the download folder, any move-to destinations, the watch folder and the system temporary folder. They keep full read access and full network access, so notifiers and library tools work as before. Turn this off if a script needs to write somewhere else and fails with "operation not permitted". This does nothing on a machine with no confinement available - the line below says which yours has
Subprocess confinementthe external unrar and par2 helpers, and your own scripts, are run inside a confinement box where this machine offers one. Nothing to set here: this reports what is in force. Where none is available the helpers run exactly as they always have, so a download never fails for want of it
Give the pre-queue script at mostlive an add waits on this script, so its budget is short. A script still over it is killed and the add proceeds untouched. Seconds; 0 = no limit; default 30
When the queue finisheslive what to do once every download is finished, including its repair and unpack. Sleep and shut down warn first, with a countdown across the top of this page and a button to stop it, and switch themselves back to "nothing" once they have run, so a machine that wakes up does not go straight back to sleep. Neither fires while a paused download is still in the queue. Running a script is left on and runs every time. Most installs have no permission to sleep or shut down the machine; if it fails, nzbfast says so in the log and leaves everything running
nothing
run a script
sleep this machine
shut this machine down
Warn before sleeping or shutting down forlive how long the countdown across the top of the page runs before the machine sleeps or shuts down, so you have time to stop it. Seconds, 0 to 3600; default 60. Set 0 if nobody is at the screen anyway
Delete recovery fileslive a download's .par2 repair files have done their job once everything verifies, so they are removed when it completes successfully. Turn off to keep them in the download folder
Cleanup after downloadfile extensions or name patterns deleted from a job's folder once it completes successfully, e.g. sfv, srr, url, *sample*, Subs/*; empty = off. Recovery files have their own switch above
When an archive needs a passwordlive "ask right away" prompts the moment a running download turns out to be password-protected, so you can type it while it keeps downloading; "ask when finished" waits until the download completes and offers the 🔑 unlock; "never ask" completes the download quietly with the archive left packed in its folder for you to extract by hand. Set password on the download itself works in every mode
ask right away, mid-download
ask when the download finishes
never ask - leave it packed
Deleted files go to the Trashlive cleanup moves files to the system Trash or Recycle Bin instead of deleting them, so a wrong guess about what was junk can be undone. If the Trash ever refuses a file, it is left where it is rather than deleted outright. On by default on macOS and Windows. Off on Linux, where there is usually no desktop Trash to empty: with it on, files go to a hidden .Trash folder on the same disk as your downloads, and that space stays used until you empty it yourself
Leftover files after a downloadlive what happens to the leftovers cleanup removes once a download finishes: spent archive parts, recovery files, samples and other junk. Following the setting above keeps one rule for everything; always Trash keeps leftovers recoverable even when your own deletes are permanent; always permanent removes them outright, which keeps a busy Trash from filling up with archive parts. Files you delete yourself always follow the setting above
same as deleted files above
always go to the Trash or Recycle Bin
always deleted permanently
Unpack with external unrarlive use the unrar program installed on this machine instead of nzbfast's built-in extractor. An escape hatch for archives that fail to unpack: the built-in path is faster on every shape we have benchmarked, so leave this off unless one does. Hash-named obfuscated posts always use the built-in path, whose renaming unrar cannot follow. Needs unrar next to the nzbfast binary or on the system PATH
When the unpack will not fitlive some archives cannot be unpacked as they arrive: every part is written to disk first and opened afterwards, so the disk holds the parts and the unpacked files at the same time. A password-protected set needs a third copy, because unlocking writes the plain copy beside the encrypted one before swapping them. That is why a download can fail at 96% on a disk that had room for it. With this on, each archive part is deleted outright the moment the unpacker has read the last of it, so the peak is about one part plus the largest file inside. Deleted for real, not moved to the Trash: the point is space back this second. Only ever on a download that has verified. If it stops halfway, the download is fetched again, which is exactly what already happens when the disk fills, so this can only make the good case cheaper
keep every part until the unpack finishes
when the disk is too full, ask me per download
always delete each part as it is used up
When a download failssome indexers attach a report link to every NZB they serve. Telling them a post is dead is how they learn to stop offering it, and they usually answer with another copy of the same title. Only works for NZBs fetched by URL (RSS, Add-by-URL, your indexer's "send to" button) - a file you dropped in yourself carries no link. Off by default: it tells a third party what failed for you
do nothing
report it to the indexer
report it and queue another copy
Try a failed download again afterlive a download that failed because articles were missing is queued again once, this long afterwards: a post can still be arriving at your provider, and waiting is the only thing that fixes that. Minutes; 0 = never retry on its own. Default 20. A failure that was the connection rather than the post waits 2 minutes instead, and a job that has already had its one automatic try is left in History for you to decide about
Give up on a server that is not answering afterlive when a server stops accepting connections - it is unreachable, or your account is at its connection limit - anything only that server has is stuck until it comes back. This is how long a download waits, counting up all the time that server has been out, before carrying on without it. The download then ends as a connection failure, which is retried on its own a couple of minutes later and picks up where it left off, so nothing is lost. Minutes; default 15. Set 0 to wait however long it takes instead: the download will sit there rather than ever come back failed, which is what you want for something you may not find again - other downloads still go ahead of it. Either way its row names the server and how long it has been out
Server diversity Analyze
Checks whether your providers are really the same network under
different brands, or genuinely different sources. Different sources are what rescue a post one of them is missing.
Notifications live
Tell something a download finishedKodi, Plex and Jellyfin/Emby get a library rescan; a webhook gets whatever you write, so Discord, ntfy, Gotify and Home Assistant all work. Token = the Plex token, the Jellyfin/Emby API key, or user:password for a Kodi with a password set. Category limits a target to one category; empty = every download. Test sends one now
+ Add target
Apply targets
Give up on dead content live
Give up after this many failed releases0 = off, the default. When this many different releases have all finally failed for the same episode or movie, stop chasing it: the item is unmonitored in the Sonarr or Radarr that sent it (and the watchlist stops picking new copies of it), instead of downloading yet another dead copy. Below the threshold nothing changes - a failed grab is blocklisted and searched again as normal. A finished download for the item clears its count
Sonarr and Radarr it may act onunmonitoring happens inside your Sonarr or Radarr, so each one needs its URL and API key here (in the *arr: Settings, General). The on box pauses an instance without forgetting its stored key; removing the row forgets the key too. Watchlist items need no entry - the watchlist is handled by nzbfast itself
+ Add instance
Apply instances
Auto-rename & cleanup live
Rename finished downloadsgive the folder and main file a clean, informative name: a movie becomes "Example Movie 2024"; TV keeps "Show - S01E02". Obfuscated or unrecognized names are left exactly as posted
Include resolution1080p, 2160p, …
Include video codecx265, x264, AV1, …
Include audio codecAtmos, DTS-HD, AC3, …
Include sourceBluRay, WEB, REMUX, …
Include release groupthe -GROUP tag at the end
Year in brackets"Example Movie (2024)" instead of "Example Movie 2024". Off by default. Plex, Jellyfin and Radarr match films on the bracketed shape, so turn this on if one of those apps reads this folder
Quality in square brackets"… [1080p x265]" instead of "… 1080p x265". Off by default
Keep the other words in the namesport, races and other events are often one title repeated all season, and only a word or two apart: "Round11 Hungary Race" vs "Round11 Hungary Qualifying". Keeping those words is what stops them all becoming the same name. Only applies where the name could not be tidied up otherwise, so ordinary films are untouched
Work out what a hidden film issome posts arrive with the name stripped off them, so the video lands as a string of random characters. When that happens, read the film's own running time, picture and sound formats and subtitle languages, then look those up in public film databases. Films only, and only once the download has finished. It renames the file ONLY when two separate databases agree on exactly one film, which needs a TMDB key in the Indexing settings - without one it never renames, it just writes what it found into History so you can see what the file probably is
Episode titles in TV namesname an episode file "Show - S01E02 - The Ceremony [1080p].mkv" instead of "Show - S01E02 [1080p].mkv". Off by default, because it changes filenames your library and your *arr apps have already matched on. The title comes from the episode list already stored for shows on your watchlist, so it never waits on the internet and never renames a file later: a show we have no list for keeps today's name. Titles are in the show's original language, usually English
Ask public databases what a finished download islive when a job finishes, look the release up in two free public databases (srrdb and xREL) to recover the name it was posted under. At most one request to each per download, no account and no key, and a failure is silent. On by default. Off means names come only from what is inside the files, which is what a post with its name stripped off does not have
Skip sample filesapplies from the next download do not download sample and proof clips at all, so you never pay for a teaser you were only going to delete. A file counts as a sample only if its name says so and it is a small slice of the release, so a full-length film whose title happens to contain the word, and a job whose only video is sample-named, are always fetched in full. A skipped file is treated as deliberately absent: repair leaves it alone and the job still completes normally. Off by default, because before the bytes arrive the name is the only evidence there is and a skip cannot be undone. Leaving it off costs a teaser's worth of bandwidth, and "Remove junk files" below already deletes samples once the download has finished. Samples packed inside the archive are not affected either way
Remove junk filesdelete leftover .par2, .nzb, .sfv, .nfo and sample clips from finished movie/TV folders, never the video or its subtitles
Keep only the media file⚠ permanently deletes everything except the video(s) and subtitles; every episode of a season pack is kept
Name downloads after the .nzb filethe finished folder and its main file take the name of the .nzb file, instead of the tidied-up name worked out from the release. Only the biggest file is renamed: the rest of an episode pack, the sample, the subtitles and the .nfo keep the names they arrived with. Off by default, and any category can turn it on or off on its own under Categories
Smart folders live
Ruleseach added NZB's name runs through these top to bottom: first match wins. Match/but-not are regexes or wildcards like *anime* (plain keywords work too); sizes like 200M, 4G; category picks the subfolder of the download root. TV = when the job finishes, file it as [Show]/Season NN/ and rename the video to "Show - S01E02"
+ Add rule
Apply rules
Categories live
The list your apps usethe categories offered to Sonarr, Radarr and other clients, and where each one's finished downloads go. tv, movies, music and books are always available; add any others your apps are set to use - a client whose category is missing here refuses to connect. Leave a folder blank and that category lands in its own subfolder of the download root, which is what most setups want. Rows are listed alphabetically, and a category an app sends that is not here yet adds itself
+ Add category
Apply categories
Your categoriesgive sport, wrestling, podcasts, audiobooks or anything else its own wall category. Each release name runs through these top to bottom, first match wins, ahead of the built-in Movies/TV classifier. Match rules are regexes or wildcards like *anime* (plain keywords work too), same as Smart folder rules. "Treat as" decides what happens when a download finishes: movie-like and TV-like get junk cleanup and renaming; "leave as posted" touches nothing, which is the safe choice for books, comics and audio. Each one is offered to your apps as well, under the short name at the end of its row - add that name to the list above to give it a folder of its own
+ Add category
Apply categories
RSS auto-grab live
Feedseach feed is polled on its own interval; items passing the rules are queued automatically. Rules (one per line): Require: size>200M · Require: age>2h · Reject: age>30d · Reject: *480p* · Accept: *1080p*. An Accept rule can file its matches itself: Accept(category=tv, priority=high): *1080p*. Preview shows what the rules would do without grabbing anything A saved feed address is shown with its API key hidden as ***, so the box does not hold the whole address. Leave the address as it is and the saved key is kept. To change it, paste the whole new address in, key included; an address still showing *** is refused when you apply.
+ Add feed
Apply feeds
When a duplicate is addedlive what happens when a new download has the same identity (show, season and episode, or title and year) as one already queued or downloaded. "Hold it paused" keeps it as a backup that starts automatically if the original fails. "Refuse it" turns the add away with an error. "Fail it into History" records it as a failed download right away, which is what Sonarr and Radarr expect so they can pick a different release themselves. Applies everywhere downloads are added, not just RSS
hold it paused as a backup
refuse it
fail it into History
What counts as a duplicatelive "same show or film" treats any release with the same identity (show, season and episode, or title and year) as a duplicate, even under a different name. "same release only" matches only the same release name again, so a quality upgrade chosen by Sonarr or Radarr downloads normally while the same NZB added twice is still caught
same show or film
same release only
Search indexers live
Indexer accountsyour accounts on NZB indexers (NZBGeek, DrunkenSlug, a Prowlarr or NZBHydra instance, …). Searches on the wall can then ask them too and grab results straight into the queue. API keys never leave this machine. The daily limits mirror your account's allowance: 0 means unlimited.
Set the first box of a row to nzbindex to search nzbindex.com directly instead, with no account needed. It indexes what was actually posted rather than a curated release list, so it finds things an indexer will not - and many of its results carry scrambled names.
+ Add indexer
Apply indexers
Indexing
Built-in indexerlive off unless you turn it on. It scans the newsgroups you choose, straight from your provider, so you can search and browse Usenet here without a third-party account. Read what it does and does not find below before you decide.
What it finds: posts that were uploaded under a real
filename. The scan reads newsgroup headers, so something posted as
Some.Film.2026.1080p.WEB-DL.x264-GROUP.part01.rar is recognised, filed under its
title, and shown on the wall with a poster, cast and ratings.
What it cannot find: posts with the name taken out. A
large and growing share of Usenet is uploaded deliberately obfuscated: the subject is random
(p5cbKvaDJ1Y0PW6DvKCIfztzZ), the filenames inside are random too, and it all goes
into a catch-all group like alt.binaries.boneless. The real name exists only in an
NZB the uploader publishes somewhere else, so it was never posted to Usenet at all and there is
nothing on the wire for any scanner to read. This is not a gap we can close later: no
competitor recovers those by scanning either.
For scale, in our own measurements a full index of
14.8 million scanned posts yielded about 31,000 browsable releases. Roughly one in
five hundred.
Worth turning on if you follow particular newsgroups
where people still post under real names, you want to see what your provider actually carries
rather than what somebody else says it carries, you want to judge retention and completeness
yourself, or you would simply rather not depend on anyone else's service.
Why a commercial indexer is still recommended: an
indexer is told what a release is by whoever uploaded it, so it can name the obfuscated
posts that no scanner can. It also carries years of back catalogue, and it is what Sonarr and
Radarr expect. Add your accounts under Search indexers just above: searches on the wall
can then ask them and grab straight into the queue, with none of this switched on.
With the switch off nothing is scanned, no headers
are fetched, no metadata or artwork is looked up, and no availability sampling runs. The poster
wall, Browse and the Sonarr/Radarr feed are hidden until you turn it back on. The watchlist
stays as long as you have indexer accounts, because it can ask those instead.
What to indexnothing is indexed unless you pick something here. Each choice scans the newsgroups listed under it, and only the ones your provider carries.
Fetch group descriptionsnext fetch most providers send no descriptions at all, which leaves the group search matching names only. This fetches about 45,000 of them from ISC, a public Usenet directory. It is the only request nzbfast makes to anywhere other than your news provider, so it is off unless you turn it on.
Scan interval (seconds)live
Check for new posts everylive a short loop that reads only what is new at the head of each group, so a fresh post shows up in seconds instead of waiting behind the history work of the next full scan. When nothing has arrived it costs one command per group. Seconds; 0 turns it off and leaves the scan interval as the only path. Anything above 0 is held to at least 5. Default 20
Groups scanned at oncelive how many newsgroups one scan pass reads in parallel. Each takes connections from the same provider account your downloads use, so more is faster only up to the point where they start competing. 1 to 8; default 3
Backfill articleslive headers to fetch on a group's first scan
Deepen per scanlive every scan pass also indexes this many OLDER articles per group, growing history in the background until Max age (or the group's start) is reached; 0 = off
Index from every providerlive scan new posts on each of your provider networks, not just one. Posts do not always reach every provider, and providers carry different newsgroups; scanning them all means a release stops looking incomplete when a different provider has the missing parts. The deepest provider still does the history work, the others only follow new posts. Prepaid block accounts are never used for scanning
Re-hunt incomplete releaseslive each scan pass picks this many incomplete releases and asks the other providers for headers around their posting time, filling gaps the scanning provider never received; 0 = off
Read names from inside 7z postslive many obfuscated posts carry their real name inside the posted archive itself. This peeks at two or three articles of each such post and reads the name from the 7z index, so the wall can show what the post really is. Works on unencrypted single-archive 7z posts; prepaid block accounts are never used
Peek budget (articles per hour)live each peeked post costs a few articles (about 1-2 MB). The default 150 keeps up with the typical daily flow of these posts; 0 = off
Peek resultsnearly all of these posts currently come from a single uploader, so the daily numbers here are the early warning: if they fall to zero or locked headers appear, that uploader changed something and this source is drying up
Read names from tiny PAR2 postslive one widely used posting tool uploads fully obfuscated posts and then posts their real name inside a small PAR2 file right after the data. This fetches that small file and only accepts the name when its hashes match the post it points to, so the wall can show what the post really is. A near miss is dropped rather than guessed; prepaid block accounts are never used
Fetch budget (articles per hour)live each checked post costs a few small articles (well under 1 MB). The default 120 keeps up with the typical daily flow of these posts; 0 = off
PAR2 name resultsthese posts all come from one posting tool, so the daily numbers here are the early warning: if named falls to zero or PAR2 files stop parsing, that tool changed something and this source is drying up
Read posted NZB fileslive some uploaders post the NZB file for a release next to the release itself. This fetches those small posted files and uses the message-ids inside them to confirm or recover the real name of an obfuscated post; prepaid block accounts are never used
Read budget (articles per hour)live most posted NZB files cost a single article; a large one is capped at about 48. The default 300 keeps up with the typical daily flow of these posts; 0 = off
Scattered post mergingsome uploaders post every piece of an upload under a different random poster name and spread the pieces across several groups, so one upload arrives looking like thousands of unrelated fragments. On each scan pass this spends a moment merging fragments that clearly belong together back into one entry. Merging only makes the entry whole, so its size and timing become real; it never guesses a name
Scan nowrun a scan pass immediately; with a depth, one-off deep backfill: rescan that many recent headers per group even where already scanned (e.g. 500000)
Scan now
Max post age (days)live only index posts newer than this; 0 = no limit. Keeps the database small
Trim to the age windowlive also delete already-stored wall-visible releases once they age past the max-age window, so the index holds ~that window instead of growing forever. Off = only gate new posts. Dead junk fragments (already hidden, still incomplete after a week) are always reaped regardless of this setting
Pause while downloadinglive stop indexing entirely while a download is running. Scanning takes NNTP connections from the same account (up to 15 of 20 at the default parallelism) and its database writes compete with the download for CPU and disk. Off = keep indexing during downloads, so new posts stay visible sooner
Pause metadata lookupslive stop fetching titles, posters and cast from the metadata sites. What has already been fetched stays; rows found from now on simply keep the name they were posted under until you turn this back off. The index itself carries on scanning - this is the only setting here that touches no news provider at all
Ingest gateslive optional JSON filter on what gets indexed: kinds/years/resolutions/languages/title patterns/size, e.g. {"kinds":["tv"],"res":["1080p"],"min_size":"200M"}. Empty = index everything
Pre feedlive off unless you turn it on. Plenty of uploads are posted with the name taken out, so a scan has nothing to read. Public relay channels announce the real name next to the filename a release was posted under, which is the one open way to match the two up. Turning this on keeps a connection open to an IRC network and listens. Nothing is ever posted, no account is created, and releases named this way are marked as having been named from the feed rather than read off the post.
Relay serverlive the IRC network carrying the relay channels, as host or host:port
Relay channelslive comma-separated. Only what the channels announce is read; nothing is sent to them
Name to join underlive the nickname nzbfast uses on the relay. A few random characters are added to it so two installations never collide. Letters, digits and a little punctuation, up to 12 characters; anything else is dropped, and an empty box falls back to nzbfast. Takes effect the next time the feed connects
Announcements to keeplive how many announced names the table holds; past that, the oldest are dropped. Only names posted after an announcement can be matched by it, so keeping more only helps if you are also matching older posts. 10,000 to 5,000,000, default 250,000; a number outside that range is pulled back to the nearest end rather than refused
What it has hearda feed that quietly stops working looks exactly like one with nothing to say, so it reports both
Name by correlationlive the public announcement channels carry no filenames, so most obfuscated posts cannot be matched directly. What an announcement does pin down is when a release appeared and how big it is. This compares announcement timing and size against unnamed posts and, when they fit, suggests the real name on the Browse page. A suggestion is clearly marked, needs your click to apply, and never renames files on disk.
Apply strong matches automaticallylive a match this needs is strict: the size must agree tightly, no other announcement may fit nearly as well, and the announcement must pick this post back when checked the other way around. Applied names change only how a release is shown, they are marked as inferred, and a finished download that proves one wrong takes it back off on its own. Everything weaker stays a suggestion for you to review.
How far back to importlive the oldest announcement the import below will keep, in days. It is a limit rather than a target: the import reads only the newest couple of pages of each section, so in practice it stops well short of this. 1 to 366; default 180
Announcement historythe live feed only hears announcements from the moment it is switched on. This fetches recent announcements from a public pre database, once, so posts that are already indexed can be matched too. Runs in the background for a few minutes; progress shows here.
Import history
announcements come from predb.net, a public pre database run on one small server. Its operator asks people not to build their own database out of it, so this takes only the two newest pages of each section, at most 10 requests a minute, and stops. Running it again brings back the same announcements rather than older ones.
Check suggestions with your indexerlive off unless you turn it on. Even a strong suggestion from the matching above is still a guess from size and timing. This takes up to 24 of those guesses a day, searches the suggested name on an indexer account you already added, and fetches the matching NZB from it. The name is applied only when the message ids inside that NZB point at the very post held here, and it is then marked as proven; anything less leaves the suggestion for you to review. Each check spends one search and at most one download from that account's daily allowance, and nothing is sent anywhere else
Ask this accountlive pick one of the indexer accounts you already added; its saved address, key and daily limits are reused. There is no box for a different account here on purpose: these checks download NZB files, which indexers count against an account, so only an account whose limits are already tracked can be asked
How it is goinghow much of today's allowance is used. What the checks settle shows in the counters above: a confirmed check moves a suggestion to confirmed, a miss leaves it alone, and a day with no strong suggestions spends nothing
Parity scoreboardlive off unless you turn it on. Once a day this asks an indexer you already have an account with for its newest releases, then scores our own index against the answer: do we have each post, do we show the same name, and how far behind were we. The table below is the result. One small request a day for each category you tick below, on your own account, and nothing is ever sent anywhere else
Measure againstlive pick one of the indexer accounts you already added, and its saved address and key are reused - nothing to type twice, and a new key entered there carries over here. Or choose to enter a different account below, for a reference you do not otherwise search
Reference indexerlive the base address of the indexer to measure against, like https://api.example.org. Address only: anything with a ? in it is refused, so a pasted key can never ride along into a log. The key has its own box below
Its API keylive your key from that indexer's account page. It is stored, never shown again, and only ever sent to the indexer it belongs to
What to measurelive one request a day per ticked category, so untick the ones you do not care about to spend less of your indexer's daily allowance. Anything unticked is simply not measured - the table says so, and reads nothing into the silence
Films
TV shows
Music
Books
Spot-check the estimatelive a post uploaded with its name taken out can only be matched by size and timing, which is a guess. This checks up to 5 of those guesses exactly each day by fetching their NZBs from the reference, which spends up to 5 of that account's daily downloads. The result is the error bar under the table. Off unless you can spare the downloads
How it is goingwhat the last daily sample did. A run that hit trouble says so here rather than pretending nothing happened
Category Named the same Have, roughly Behind by
OMDb keylive optional: richer movie metadata on the wall (exact matches, cast, posters, IMDb ids) and ~4× faster movie enrichment. Free tier is 1,000 lookups/day. Empty = fully keyless
Get a free OMDb keyonly needs an email address: we submit the signup for you; OMDb emails you the key with an activation link. Or do it yourself at omdbapi.com/apikey.aspx
Request key
Hide adult titleslive on by default. Titles filed as adult are left out of the wall and the release list, whether the name came from a header scan or a spot. This is not the same control as the "Include adult" tick on the Browse page: that one only opens up the raw Spots list there, and it does not change what the wall shows
TMDB keylive optional: uses TMDB for wall titles, posters and cast, and gives "Work out what a hidden film is" its second source. Empty is the normal setup and nothing is lost - metadata still comes from TVmaze and Wikidata, with no key at all. TMDB does not grant API access to Usenet tools, so this is for a key you already hold. Stored here and never shown again; a key already in your config file or TMDB_API_KEY still works and this box wins over both
Wall metadataclear every cached title/poster and re-download fresh; indexed releases are untouched
Refresh all metadata
Preferred versionlive when one film or episode has been posted several times, releases matching these float to the top of its list and get a “best match” mark. Nothing is ever hidden: release names leave tags out all the time, so this only changes the order. Leave any of them on “no preference” to ignore that one
no preference
2160p 1080p
720p 576p
480p
no preference
Dolby Vision HDR10+
HDR10 HDR
HLG
no preference
Dolby Atmos TrueHD
DTS-X DTS-HD
DTS DD+
AC3 FLAC
AAC Opus
MP3
no preference
AV1 x265 / HEVC
x264 / AVC VC-1
XviD DivX
Remember what was searched forlive on by default. Counts the searches made here and through the Sonarr/Radarr feed so the list below can say what people asked for and did not get. One row per distinct query, not a log of every keystroke. It stays on this machine, is never looked up anywhere and is never sent anywhere. Turning it off also forgets everything already recorded
Searches that found nothingwhat was asked for and not answered, most asked first. This is the list to work from when deciding which groups to scan or how far back to backfill. A query that stops appearing here is a gap the scanner has filled. Nothing acts on it by itself
Searched for Asked from Times Last asked
Forget recorded searchesempties the list above and leaves the recording switched on
Forget them
Stored indexthe database is kept while the indexer is off, so turning it back on picks up where it stopped instead of rescanning. Delete it if you want the disk space back now
Delete the index database…
Spotnet spots
Scan spotslive on by default. Spotnet is a public feed where people announce what they have posted and sign it with their own key. Each spot carries the real title and the NZB, so it names releases a header scan cannot see. It works with the built-in indexer off.
What it finds: around 170 to 200 new spots a day.
Most are Dutch or Belgian, with a steady minority of English scene releases. Every spot is
checked against the signature of the person who posted it before it is stored, and one that
does not check out is thrown away.
What it is not: a replacement for an indexer
account. Spots only cover what somebody chose to announce, which is a fraction of what gets
posted.
Roughly a third of spots are filed as adult by the people
who posted them. Those are left out of Browse unless you tick Include adult there.
Spots land on the wall as named cards next to
everything else you index, each carrying a spot badge so it is always clear where the
name came from. Browse also keeps a raw Spots list, which is where adult spots stay
unless you ask for them. Downloading one fetches the NZB it points at and queues it like any
other download.
Spot groupslive comma-separated. free.pt is the one active Spotnet group; there is rarely a reason to change this
Backfill articleslive how far back to read on the first pass. Later passes carry on from where the last one stopped, so this is paid once
History per passlive articles of older Spotnet history to read each pass, on top of the new ones. The feed goes back to 2011 and the walk stops by itself once it reaches the start, so this is temporary work with a lasting result. 0 turns it off
Spots to open per passlive opening a spot fetches the NZB behind it and turns it into a card, so this is the part that costs traffic. Newest spots go first, so a deep backlog never holds up today's. 0 turns it off
Database
Deleting releases frees space inside the database file, but the file itself only gets smaller once it is compacted, and a compact waits for a moment when nothing is downloading or scanning. So the size above can sit still for a while after a cleanup. The size limit is measured against what is actually stored, not against the space waiting to be reclaimed.
Size limitlive how big the index is allowed to get, e.g. 20G. Empty or 0 = no limit. On its own this deletes nothing: the switch below is what acts on it
Delete releases to stay under itlive off unless you turn it on. With it on, releases are deleted as the index grows past the limit, in the order below; they come back only if a later scan finds them again
What goes firstthe default ladder spends the least useful entries first, so a full index loses dead fragments long before it loses anything you would search for
junk and incomplete posts, then oldest, then largest
oldest posts first
newest posts first
largest releases first
smallest releases first
Never delete finished contentlimits what a cleanup may touch at all. With a scope set, a limit the allowed rows cannot satisfy stops short and says so, rather than reaching into real releases
no: anything can go, in the order above
yes: only junk and incomplete posts may be deleted
strictest: only junk posts may be deleted
only incomplete posts may be deleted
What can be deletedclear a box to protect that kind: those releases are never deleted to save space. Everything ticked = anything can go
Movies
TV
Software
Everything else
Cleanup headroom (%)how far below the limit a cleanup empties, so the very next scan does not trigger another one. 10 means it deletes down to 90% of the limit; 0 stops exactly at it
Apply the limit nowrun one pass immediately instead of waiting for the index to reach the limit
Delete down to the limit…
Preview a cleanupcounts what a cleanup would delete - to the size in the Shrink box below if you typed one, otherwise to the size limit - and deletes nothing
What would go?
Shrink toa one-off: delete releases until the index fits the size you type. It does not change the size limit above, and like the limit it leaves the file to be compacted once nothing is downloading or scanning
Shrink…
Compact indexreclaim disk space freed by retention pruning (rewrites the database file). Runs only when no download or scan is active
Compact now
Wipe indexdelete the whole index database (releases, titles, artwork) and rescan from scratch: the fix for db corruption
Wipe index database…
Remote access · phone & away-from-home
This dashboard's addresswhat to type into a browser on this machine, and what to bookmark there. Other machines on your network want one of the addresses below instead.
Copy
No API key is set: anyone on your network can control nzbfast at these addresses. Set one in Security below.
Point your phone's camera at a code, or type the address - same Wi-Fi works immediately.
For access from anywhere, the painless answer is Tailscale (free, no router changes):
install it on this machine and your phone, and a "works from anywhere" code appears above
automatically. Remote-control apps work too: add nzbfast as a SABnzbd server (this
address + your API key) or an NZBGet server (any username, API key as the password).
Avoid raw port-forwarding - the dashboard is plain HTTP; if you must, always set an API key.
Interface
Install as an appgives nzbfast its own window and its own icon in your dock or taskbar, with no tab strip or address bar around it. It is still this daemon on this machine: nothing is uploaded, and nothing extra is downloaded. The window is tied to the address you are on, so if you ever change the daemon's port, install it again from the new one.
Install as an app
Languagehow this browser shows nzbfast: "System" follows your device language; stored in this browser
System default
Default language (this daemon)live for embedded webviews and browsers that haven't chosen: "Auto" follows each device's language
Auto (device language)
Speed unitslive how every speed is shown: megabytes (MB/s, the download-manager norm) or megabits (Mb/s, how ISPs quote line speeds). File sizes stay in bytes either way. Applies to every device viewing this daemon.
Bytes - MB/s
Bits - Mb/s
History rowslive how many finished downloads the History card lists before you expand it with the ▤ button; drag the card's bottom edge to make the list scroll instead. Applies to every device viewing this daemon.
Colour History nameslive green for completed, red for failed. Off leaves the names plain - the coloured dot and the row's details still say which is which
Colour the codec chiplive tints the resolution/codec chip: violet for AV1, HEVC and VP9, blue for H.264, nothing for the older formats. Off leaves it plain - the chip still spells the codec out either way, and a chip whose bytes do not match its name stays amber
Colour the archive chiplive tints the chip describing what unpacking took: violet for encrypted, blue when there was no compression to undo or nothing had to land on disk first. Off leaves it plain - the chip still says the same thing in words
Check a file while it downloadslive each download's details can be read out of the video file itself while it arrives: resolution, codecs, audio languages, subtitles, chapters. It is how you catch a release that is the wrong cut, the wrong language or upscaled, before the rest of it downloads. "Details and a player" also offers the file in this page for the formats your browser opens; anything it cannot open still opens in your own player, and nothing is ever converted. Off stops the file being read at all.
Off
Details only
Details and a player
Desktop notificationsa system notification when a download completes or fails; the browser will ask permission
Provider re-sort intervalseconds between re-ordering the Providers list by live speed (rows slide to their new spot); default 10, 0 keeps the configured order; stored in this browser
Ask where each download goesadding an .nzb from this page opens a small panel first: which category it belongs to (that is the folder it ends up in), what priority, and the archive password if you already know it needs one. Off adds straight away with the usual settings, the way it always did. Downloads sent by Sonarr, Radarr, an RSS feed or the watch folder are never asked about. Stored in this browser
Drop zoneswhere the two targets sit when you drag a file onto the page, and which of them gets the room. Stored in this browser
Side by side
Top and bottom
Equal halves
Bigger: Add to queue
Bigger: Test file
Show me
Speed distribution barsthe bar chart under the throughput graph, showing how much time you spend at each speed. Useful for spotting a line that never reaches its peak, noise if you just want the live rate. Stored in this browser
Compact modetighten every dashboard card so all the figures fit in a small window: same numbers, less padding. Individual cards can be compacted on their own with the density button in the card header; stored in this browser
Dashboard cardswhich cards the dashboard shows, how tightly each one is packed, and the order they run in. Works the same by touch, mouse or keyboard, and is stored in this browser. On a desktop the same three things are on each card itself: drag its handle to move it, and the two buttons beside the handle compact or hide it
Dashboard layoutthe mode that labels every card's move, resize, compact and hide controls, and the button that forgets this browser's hidden cards, card order and chart sizes
Customise layout
Reset layout
Your own CSScreate this file and it loads after the built-in styles, so your rules win without needing !important. Reload a page to see a change; an upgrade replaces the dashboard but never your file.
Securityopen to your network
API keylive Sonarr, Radarr, NZB360 and anything else that connects to nzbfast needs this. Show it to copy it across, or create a new one (then paste the new one into those apps). Typing your own here replaces it; leaving it blank keeps the current one
Show
Create new
NZB keylive add-only key: may submit NZBs and pass connection tests, but not see or change anything else
Show
Create new
Browser extensionslive which web pages a browser will let read this API. * is the default and matches SABnzbd, so extensions like NZB Unity and NZBDonkey work with no setup - your API key is still needed on every request. To keep it tighter, list the origins you allow instead (https://example.com), separated by commas. Empty sends no header at all, which blocks every extension
Settings backupone file holding every setting, your servers (passwords included) and both keys - keep it somewhere private. Restoring it on a fresh install brings everything back
Download backup
Restore from backup…
Portapplies after restart
Listen onapplies after restart which address the dashboard and API answer on. 0.0.0.0 is the default and answers on every network this machine is on, which is what a NAS, a container or any headless box needs. 127.0.0.1 answers on this machine only, so nothing else on your network can reach it even with the key - pair that with a reverse proxy or a VPN. Careful: an address this machine does not have stops the next start from coming up at all, and the only way back is to fix it in settings.json by hand
HTTPS certificateapplies after restart serve the dashboard and API over HTTPS: point this at a PEM certificate file (a chain works too) and the row below at its private key, then restart. Leave both empty for plain HTTP. A reverse proxy or a VPN like Tailscale also works and needs nothing here - the manual's security section compares the options
HTTPS private keyapplies after restart the PEM private key that belongs to the certificate above. With both rows set, the next restart answers on https instead of http
Log
everything
app, without the indexer
indexer only
Export
Refresh
show the daemon's recent output
Run state
Restart nzbfastapplies the settings above that need a restart. In-progress downloads stop and resume by themselves from where they got to.
Restart now
Stop nzbfastshuts the engine down. Downloads resume where they got to when it starts again.
Stop now