Most people asking TrueNAS vs Unraid already own the drives. They have a 4 TB from an old desktop, a pair of 8 TB drives bought on sale and a 12 TB still in the box, and they want one operating system that turns that pile into a NAS without throwing half the space away. Which one wins depends on how mismatched those drives are and how much you care about silent corruption.
I put both on the same Proxmox host with the same deliberately mismatched disks and ran what matters for a home or small-office NAS. I measured usable capacity from mixed drive sizes, what adding one disk later costs, and what happens when a disk quietly returns bad data. I also timed a Jellyfin install from the app catalog, checked license cost and boot drive options, and looked at whether either one runs as a Proxmox VM. That last question produced the most useful finding in the whole test, and it wasn’t the one I expected.
Ran both on one Proxmox host in October 2026 (TrueNAS 25.10.7 and Unraid 7.3.2). TrueNAS went through every storage test; Unraid installed and booted fine, then refused to license inside the VM, which I cover in section 7.
TrueNAS vs Unraid: the short answer
Pick Unraid if your drives are mixed sizes, you want to add one disk at a time forever, and the box is mostly a media library plus Docker apps. Pick TrueNAS if the data is irreplaceable (family photos, business files), your drives are matched or you’ll buy them matched, and you want the filesystem itself to find and fix corruption. TrueNAS costs nothing. Unraid costs $49 to $249 once, depending on drive count and how long you want updates.
| What you care about | TrueNAS Community Edition | Unraid |
|---|---|---|
| Storage model | ZFS pools (RAIDZ1/2/3, mirrors), data striped across disks | Parity array: each file lives whole on one disk, 1 or 2 parity disks |
| Mixed drive sizes | Every disk in a vdev counts as the smallest one | Every data disk counts at full size; parity must be the largest |
| Usable space from 2×20 GB + 2×40 GB (lab) | 55.6 GiB measured (RAIDZ1) | About 80 GiB raw, computed (40 GB parity) |
| Add one disk later | RAIDZ expansion works, but a bigger disk still counts as the smallest | Any disk up to the parity size, full capacity |
| Silent corruption (bit rot) | Detected and repaired from parity on read and scrub (tested) | XFS array disks have no data checksums; parity check can’t tell which file is wrong |
| Apps | Official catalog (Docker Compose based) | Community Apps, 10,000+ apps and plugins |
| Boot device | Any SSD or NVMe, mirrored boot optional | USB flash or, since the 7.3.x line, internal SSD/NVMe |
| Price | Free | $49 Starter (6 devices), $109 Unleashed, $249 Lifetime |
| Runs as a Proxmox VM | Yes, installed and ran every test | Boots, but won’t license on a virtual TPM (ENOFLASH3) |
1. How I tested both
Both NAS VMs got the same spec: 4 vCPUs passed through from an Intel Core i7-1165G7, 8 GB of RAM, UEFI firmware with Secure Boot off, a 32 GB boot disk and the same four data disks. The data disks were two 20 GB and two 40 GB virtual drives on a Samsung 980 NVMe. Each one was capped at 150 MB/s and 200 IOPS so it behaves closer to a 7200 rpm hard drive than to flash. The mixed sizes are the point. That’s what a real “I already own these drives” build looks like, scaled down so tests finish in minutes.
For TrueNAS I built a RAIDZ1 pool on all four disks, filled it with 20 GB of random files and recorded an MD5 for each. Then I corrupted one disk underneath ZFS, scrubbed, expanded the pool by one disk and installed Jellyfin from the app catalog. For Unraid I used the new ISO installer, set up internal boot and walked the onboarding wizard. After that it stopped at licensing, as section 7 explains. So the Unraid capacity numbers below are computed from Unraid’s documented parity rules rather than measured, and I say so wherever that applies.
I also dropped one test: SMB throughput. The host is shared with other lab VMs, and the same TrueNAS share gave 238, 72 and 66 MB/s sequential writes on three back-to-back runs. Numbers that swing that much aren’t worth publishing. Without an Unraid run on the same host at the same time they’d compare nothing, so the speed discussion in section 2 comes from Unraid’s own figures and from how each design writes data.
2. Mixed drives: where the space goes
This is the difference that decides it for most homelabs. ZFS treats every disk in a vdev as if it were the size of the smallest one. I gave TrueNAS 120 GB of raw disk, two 20 GB and two 40 GB, and it created the RAIDZ1 pool in 10 seconds without complaint. The resulting pool had 79 GB of raw space and 55.6 GiB usable, because both 40 GB disks were treated as 20 GB. The Storage Dashboard flags any vdev like this with an orange “Mixed Capacity” warning on the VDEVs card (you can see it in section 3).
Unraid’s array works the other way around. The parity disk has to be at least as large as the biggest data disk, and every data disk then counts at its full size. With one 40 GB disk as parity and 40 + 20 + 20 GB as data, the same four drives give roughly 80 GiB before filesystem overhead. Even after XFS takes its cut, that’s roughly 40% more usable space than TrueNAS gave from identical hardware. It’s computed from the rule, not measured on my array, but the rule is simple enough that the math holds.
You can claw some of it back on TrueNAS by pairing the drives into two mirrors (20+20 and 40+40), which works out to about 58 GiB usable once ZFS reserves its slop space (computed, not built). That is still well short of Unraid, and mirrors cost you half your raw space from then on. The honest TrueNAS answer to mixed drives is “buy matched drives”. If you’re doing that anyway, the capacity gap disappears. Our NAS hard drive picks cover which models are sensibly priced right now, and the CMR vs SMR breakdown explains why shingled drives and ZFS resilvers don’t mix.
There’s a speed trade-off hiding in the same design choice. ZFS stripes data across every disk, so large reads and writes scale with the number of drives. Unraid stores each file whole on one disk, so a read runs at the speed of that one drive. Writes to the parity array in the default read/modify/write mode are slow: Unraid’s own documentation quotes 20 to 40 MB/s for that mode and 40 to 120 MB/s with turbo write. That’s why nearly every Unraid build adds an SSD cache pool, which absorbs writes and moves them to the array overnight.
3. Adding one disk later
For years this was the classic argument for Unraid, because ZFS couldn’t grow a RAIDZ vdev one disk at a time. TrueNAS can now, and I tested it with data on the pool. I added a fifth virtual disk, 40 GB, and extended the RAIDZ1 vdev from four to five disks. ZFS rewrote 27.5 GB of existing data in 5 minutes 45 seconds, the pool stayed online the whole time, and all 20 test files still matched their checksums afterwards:

The Storage Dashboard right after the fifth disk was attached shows the vdev as 5 wide with the Mixed Capacity warning, while usable space still reads 55.62 GiB because the expansion hasn’t finished:

The catch shows up in the final capacity. Usable space went from 55.6 GiB to 69.3 GiB, a gain of 13.7 GiB from a 40 GB disk. Two things eat the rest. First, the new disk counts as 20 GB, like everything else in the vdev. Second, blocks written before the expansion keep their old four-disk data-to-parity ratio, so ZFS reports less space than a freshly built five-disk vdev would show. TrueNAS documents both in its pool management guide, and rewriting old data gets some of it back over time.
On Unraid, the same 40 GB disk would add the full 40 GB, as long as it’s no bigger than the parity disk. The array has to be stopped to add it, and a new disk gets cleared before it joins, but you never lose capacity to the smallest drive. If you plan to keep adding whatever drive is cheapest that month, Unraid still grows more gracefully. If you plan to grow by buying the same size each time, TrueNAS expansion is now good enough.
4. Bit rot: what each one does when a disk lies
This is where TrueNAS earns its reputation, so I tested it the unkind way. With the VM powered off, I wrote 1 GiB of random bytes straight onto one member disk from the Proxmox host, starting 4 GiB into the disk. That is what a failing drive or a bad cable does in slow motion: the disk hands back data that isn’t what was written, and it doesn’t report an error.
dd if=/dev/urandom of=/dev/zvol/zfs-pool/vm-8850-disk-4 bs=1M seek=4096 count=1024 conv=notrunc oflag=direct
That command destroys whatever sits in that region of the disk, so run it only against a lab disk with the VM powered off, never against a disk holding data you care about. After booting TrueNAS, all 20 files still passed their MD5 check, because ZFS caught the bad blocks on read and rebuilt them from parity. zpool status showed 4 checksum errors on that one disk. A scrub then read everything, repaired 108 MB and finished in 48 seconds with 0 data errors. The corrupted disk ended with 3.20K checksum errors logged against it:

Unraid’s default array cannot do this. Array disks default to XFS, and Unraid’s docs are blunt that XFS has “no built-in redundancy” and relies on parity. Parity knows that the stripe across all disks does not add up, but it doesn’t know which disk is wrong. A parity check reports sync errors in 4 KiB blocks. In the default correcting mode it rewrites the parity to match the data, which bakes the corrupted file into your parity. You can format array disks as ZFS or Btrfs to get checksums that detect the damage, but a single-disk ZFS or Btrfs filesystem has no second copy to repair it from.
For a movie library that’s a shrug. You’d notice a broken file and download it again. For the only copy of ten years of photos, it’s the reason to choose TrueNAS, or to put that data in a ZFS pool inside Unraid (pools support RAIDZ and mirrors) rather than in the array. Our ZFS storage server build on TrueNAS covers the hardware side of doing that properly. Either way, a UPS on the NAS removes the most common cause of both unsafe shutdowns and Unraid sync errors.
5. TrueNAS vs Unraid for Plex, Jellyfin and Docker
Both run containers well now, which wasn’t true a few years ago when TrueNAS apps lived on Kubernetes. TrueNAS apps are Docker Compose stacks that the middleware manages for you. Pointing the Apps service at the pool took 16 seconds. Installing Jellyfin from the catalog took 57 seconds, and the web UI answered on port 30013 at the 64-second mark with the container using about 275 MiB:

One thing trips people up here: Jellyfin sits in the community train, not stable. The TrueNAS catalog is split into trains, and the popular media apps are community-maintained. Requesting it from the stable train fails outright, as the error section shows. In the web UI you will not hit this, because Discover Apps searches every enabled train.
Unraid’s Community Apps plugin is the bigger ecosystem. The onboarding wizard offers to install it on first boot, and Unraid lists more than 10,000 apps and plugins. Nearly every self-hosted project has an Unraid template maintained by someone, which matters more than raw numbers when you are new. For Plex or Jellyfin, the deciding factor is storage, not the app store: a media library on mismatched drives is exactly what Unraid’s array is built for. If you’re still choosing hardware, the NAS picks for Plex and self-hosting note which boxes run either OS.
6. Boot drive, license and what you pay
TrueNAS installs to an SSD or NVMe from a text installer. It asks for the target disk, warns that the disk won’t be usable for storage pools and that USB sticks are discouraged, then asks for a truenas_admin password. The install took about seven minutes including my typing:

Unraid has always booted from a USB stick, with the license tied to that stick’s GUID. The 7.3.x line changed that. It can now boot from an internal SSD, NVMe or eMMC (optionally as a two-disk ZFS mirror), and the license can live on a TPM 2.0 chip instead of the stick. The new ISO installer makes internal boot straightforward: download the OS zip from inside the installer, pick the disk, confirm. It carved its default 8 GiB ZFS boot pool out of my 32 GB disk:

After the reboot, a new onboarding wizard sets the server name, time zone, SSH, theme and starter plugins (Unraid quotes about three minutes for it). On my VM its summary screen already flagged the licensing problem that section 7 digs into:

The license tiers are Starter at $49 (up to 6 storage devices, one year of updates), Unleashed at $109 (unlimited devices, one year) and Lifetime at $249 (unlimited devices, updates for life). Starter and Unleashed keep working forever after the first year. You pay $36 a year only if you want new releases, and you can stay on patch updates for your minor version while it’s supported. Count your devices carefully on Starter: internal SSD or NVMe boot drives count toward the limit (one eMMC and one USB device are exempt), and a mirrored boot counts as two. The trial is 30 days, extendable twice by 15 days, and it needs an Unraid.net account and an internet connection at boot.
7. Running TrueNAS or Unraid on Proxmox
Plenty of people want the NAS as a VM next to everything else on a Proxmox box. TrueNAS is happy there. Everything in sections 2 to 5 ran in a Proxmox VM with no special handling beyond UEFI. For production, pass through a real HBA so ZFS talks to the disks directly instead of virtual disks. Our HBA card guide for TrueNAS covers which controllers flash to IT mode cleanly.
Unraid was the surprise. With internal boot and TPM licensing now available, I expected a virtual TPM to replace the USB stick in a VM. It does not. I attached a Proxmox vTPM 2.0, and the Unraid kernel detected it fine. But Unraid’s licensing layer left tpmGUID empty and logged ENOFLASH3:

The Registration page says “No valid license device detected”, the array slot count is stuck at none and the footer reads Array Stopped. Without a license device the array can’t start, so there’s no storage to test. Unraid’s TPM licensing FAQ answers “Can I use TPM from within an Unraid VM?” with “No, this is not supported”, and the lab confirms it: a Proxmox vTPM doesn’t license Unraid:

The working setup for Unraid on Proxmox is the same as before: pass a physical USB flash drive through to the VM (by vendor and product ID, so it survives reboots) and let Unraid license against it. You can still use internal boot and keep the stick purely as the license anchor, as long as its FAT volume label is UNRAID. Also pass through the SATA controller or an HBA so Unraid sees real disk serials and SMART data. If you are after a NAS that runs cleanly as a VM on a mini PC with no USB stick hanging off the back, TrueNAS is the easier fit.
Here’s where the Unraid VM ended up: the internal ZFS boot pool online, array slots set to none and a No License Device warning in the header:

8. RAM and boot time on the same box
Both reach the web UI in under 90 seconds and idle well under the 8 GB I gave them. I timed three cold boots each, from qm start until the web UI answered with HTTP 200 or a redirect. Memory in use was read from inside the guest 180 seconds after the UI came up. TrueNAS had its pool imported and apps stopped; Unraid had its array stopped, since it couldn’t start one:
| Measurement (median of 3) | TrueNAS | Unraid |
|---|---|---|
| Cold boot to web UI | 77.5 s | 52.3 s |
| RAM in use at idle | 1,929 MiB | 1,940 MiB |
| Of which ZFS ARC | 526 MiB | 1,172 MiB |
| Runs (s) | 77.2 / 77.5 / 81.9 | 51.6 / 52.3 / 53.1 |
Unraid boots about 25 seconds faster, and the memory use is a dead heat. The surprise is where Unraid’s memory goes: its internal boot pool is ZFS, so 1,172 MiB of the 1,940 MiB is ARC cache that the kernel hands back when something else needs it. Neither OS needs more than 8 GB for a plain file server. TrueNAS grows its ARC aggressively once a pool is busy (total memory in use reached 7.2 GiB after the scrub and expansion), which is normal ZFS behaviour and the reason more RAM still makes TrueNAS faster.
Errors from the lab and how I got past them
Three errors came up during testing. The first two are the ones people search for word for word.
Unraid: “Unregistered Flash device error (ENOFLASH3)”
Unraid found neither a license-capable USB stick nor a TPM it accepts. On bare metal, enable the firmware TPM (Intel PTT or AMD fTPM), keep Secure Boot off, then refresh the Registration page. In a Proxmox or other VM, a virtual TPM is not accepted, so pass through a physical USB flash drive labelled UNRAID and refresh again.
TrueNAS: “[ENOENT] Unable to locate ‘jellyfin’ at ‘/mnt/.ix-apps/truenas_catalog/trains/stable/jellyfin'”
This happens when you create the app from the API or CLI with the wrong train. Jellyfin, like most media apps, is in the community train. List the trains with ls /mnt/.ix-apps/truenas_catalog/trains/, then pass "train":"community", and the same call deploys it in under a minute.
Unraid installer: “The selected Unraid ZIP is version 7.3.2, but version 7.4.0 is available”
The installer compares your zip against the newest build on the release server, and that includes the 7.4 beta. For a NAS you plan to keep data on, press OK and stay on the stable zip. The warning does not block the install.