Supported File Systems for VeraCrypt Volumes: A Complete Cross-Platform Guide
VeraCrypt supports twelve filesystem types including FAT, exFAT, NTFS, ReFS, Ext2/3/4, Btrfs, HFS+, APFS, UFS, and raw volumes without filesystems, with availability varying by operating system.
VeraCrypt can create encrypted containers formatted with a variety of filesystems depending on your platform. The supported file systems for VeraCrypt volumes are defined in the source code repository veracrypt/VeraCrypt and exposed through both the graphical interface and command-line tools.
Supported Filesystems by Platform
VeraCrypt organizes filesystem support by operating system, with several universal options available across all platforms.
Universal Filesystems
These filesystems work on every supported operating system:
- None – Creates a raw encrypted volume without any filesystem formatting. Useful when you plan to format the volume manually later or use it for custom purposes.
- FAT – The most compatible option with the smallest minimum volume size of approximately 292 KiB.
- exFAT – Modern universal filesystem with a minimum volume size of approximately 424 KiB, ideal for flash drives.
Windows-Specific Filesystems
On Windows, VeraCrypt supports NTFS and ReFS, though both require additional privileges or specific versions:
- NTFS – Requires Administrator rights to format and has a minimum volume size of approximately 3 MiB.
- ReFS – Supported only on Windows 10 and later versions. The
MapFilesystemfunction insrc/FormatDLL/VeraCryptFormatSDK.cpphandles the mapping of ReFS to internal constants.
Linux Filesystems
Linux users can choose from several native filesystems, though Btrfs has specific size requirements:
- Ext2, Ext3, Ext4 – Standard Linux extended filesystems.
- Btrfs – Advanced filesystem requiring a minimum volume size of approximately 1 GiB.
macOS Filesystems
Apple users can select between legacy and modern Apple filesystems:
- Mac OS Extended (HFS+) – Legacy Apple filesystem.
- APFS – Apple File System, the modern default for macOS.
BSD Filesystems
For BSD variants including FreeBSD, OpenBSD, and NetBSD:
- UFS – Unix File System native to BSD operating systems.
Technical Implementation
The filesystem selection logic resides in several key source files within the veracrypt/VeraCrypt repository.
In src/Main/TextUserInterface.cpp, the application builds the list of supported filesystems by populating a filesystems vector that is displayed to users in the text-based wizard. The FilesystemType enum and formatting helper functions are defined in src/Core/VolumeCreator.h, which provides the core logic for applying filesystems to encrypted containers.
For Windows-specific formatting operations, src/Format/Tcformat.c implements the actual filesystem creation logic, while src/FormatDLL/VeraCryptFormatSDK.cpp contains the MapFilesystem function that converts filesystem names like "ReFS" into internal constants used by the formatting engine.
Command-line users specify filesystems via the --filesystem (or -f) option, parsed in src/Main/CommandLineInterface.h.
Creating Volumes with Specific Filesystems
You can specify any supported filesystem when creating volumes via the command line.
Creating an NTFS Volume on Windows
veracrypt --create secret_container.hc \
--size 500M \
--encryption AES \
--hash SHA-512 \
--filesystem NTFS \
--volume-type normal
Creating an Ext4 Volume on Linux
veracrypt --create linux_container.hc \
--size 2G \
--encryption Serpent \
--hash Whirlpool \
--filesystem Ext4 \
--volume-type normal
Creating a Raw Volume Without Filesystem
veracrypt --create raw_container.hc \
--size 1G \
--encryption Twofish \
--hash SHA-256 \
--filesystem none \
--volume-type normal
Mounting and Accessing
After creation, mount the volume to automatically access its filesystem:
veracrypt secret_container.hc
The filesystem mounts automatically at the default mount point (e.g., /media/veracrypt1 on Linux), allowing direct file access.
Volume Size Requirements
Each filesystem imposes specific minimum volume sizes:
- FAT: ~292 KiB (smallest option)
- exFAT: ~424 KiB
- NTFS: ~3 MiB
- Btrfs: ~1 GiB (largest minimum requirement)
Choosing a filesystem incompatible with your specified volume size results in an error during the format phase.
Summary
- VeraCrypt supports twelve filesystem types across Windows, Linux, macOS, and BSD platforms.
- FAT and exFAT provide universal compatibility with the smallest footprint (~292 KiB and ~424 KiB respectively).
- NTFS requires Administrator privileges on Windows and needs ~3 MiB minimum.
- ReFS is limited to Windows 10+ and mapped via
MapFilesysteminsrc/FormatDLL/VeraCryptFormatSDK.cpp. - Btrfs requires at least 1 GiB volume size.
- The
filesystemsvector insrc/Main/TextUserInterface.cppcontrols which options appear in the UI wizard.
Frequently Asked Questions
What is the minimum volume size for VeraCrypt filesystems?
FAT requires approximately 292 KiB, making it the smallest option. exFAT needs roughly 424 KiB, while NTFS requires about 3 MiB. Btrfs demands the most space at approximately 1 GiB minimum.
Can I use NTFS volumes on Linux or macOS?
Yes, you can mount NTFS-formatted VeraCrypt volumes on Linux and macOS using appropriate NTFS drivers (such as NTFS-3G), though you can only create NTFS volumes natively on Windows due to formatting tool availability.
What happens if I select "none" for the filesystem?
VeraCrypt creates a raw encrypted container without any filesystem structure. This is useful for advanced users who want to apply custom formatting later or use the volume for non-filesystem purposes like additional encryption layers.
Is ReFS supported on all Windows versions?
No, ReFS support is limited to Windows 10 and later versions. According to the source code in src/FormatDLL/VeraCryptFormatSDK.cpp, ReFS was added specifically for modern Windows platforms and requires appropriate Windows SDK support to format correctly.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →