In modern software engineering, web development, and digital media archiving, maintaining identical copies of multi-gigabyte files across multiple directory paths can rapidly deplete local storage capacity. While shortcuts and symbolic links provide pointers to original files, certain legacy applications, automated compilers, and backup scripts fail to follow soft pointers correctly. In the Windows New Technology File System (NTFS), Hard Links provide an elegant, native solution. Understanding how to create and manage NTFS hard links in Windows 11 using the fsutil hardlink command allows administrators and power users to reference the exact same underlying file data across different folder locations without consuming a single additional byte of disk space.
Unlike shortcuts (which are independent .lnk binary files) or symbolic links (which store a string path to a target), a hard link creates an additional directory entry in the Master File Table (MFT) pointing directly to the file’s existing data clusters. Modifying the file through any linked path updates the content across all references simultaneously. This technical tutorial outlines the filesystem architecture of hard links, demonstrates the command-line syntax for creating and querying links with fsutil, explains deletion and reference-counting mechanics, and addresses common limitations.
Comparing Hard Links, Symbolic Links, and Directory Junctions
To choose the correct linking mechanism for your file management workflow, it is essential to distinguish between the three primary link types supported by NTFS in Windows 11:
| Feature / Attribute | Hard Link (fsutil hardlink) |
Symbolic Link (mklink) |
Junction Point (mklink /J) |
|---|---|---|---|
| Target Support | Files only (Cannot link folders/directories). | Both files and folders. | Folders/directories only. |
| Volume Scope | Strictly intra-volume (Target and link must be on the same drive letter, e.g., C: to C:). |
Cross-volume and remote network shares supported. | Cross-volume local drives (e.g., C: to D:). |
| Extra Disk Space Used | Zero bytes (Shares the original data allocation clusters). | Minimal (Few bytes for path string). | Zero bytes (NTFS reparse point). |
| Target Deletion Effect | File content remains intact until the last remaining hard link is deleted. | Link breaks immediately (Dangling pointer). | Junction breaks immediately. |
| Administrative Rights | Standard user permissions (if you have write access to the target directory). | Requires Administrator privileges or Developer Mode enabled. | Standard user permissions. |
Creating NTFS Hard Links via fsutil in Windows 11
Windows provides a dedicated administrative utility—fsutil—with built-in hard link subcommands. Follow these steps to generate a native hard link:
- Press the Windows Key, type
cmdorTerminal. - Right-click the result and select Run as administrator (or launch an elevated PowerShell terminal).
- Use the following command syntax to create the link:
fsutil hardlink create <NewLinkPath> <ExistingFilePath>
For example, if you have a 10 GB virtual machine disk or database file located at C:\Data\Database.vhd and you wish to reference it inside your development workspace at C:\Projects\Test\Database.vhd without duplicating the 10 GB disk usage:
fsutil hardlink create "C:\Projects\Test\Database.vhd" "C:\Data\Database.vhd"
Upon successful execution, the console returns a confirmation:
Hardlink created for C:\Projects\Test\Database.vhd <<===>> C:\Data\Database.vhd
Both files now share the exact same MFT record and data clusters on the drive. If you inspect File Explorer properties, both files will display a size of 10 GB, but your drive’s free space will not decrease.
Querying and Listing All Existing Hard Links for a File
One challenge of working with hard links is that standard File Explorer does not visually indicate whether a file has multiple directory links. You can use fsutil hardlink list to discover every directory entry pointing to that specific file’s MFT record:
fsutil hardlink list "C:\Data\Database.vhd"
The console prints every active path associated with that file:
\Data\Database.vhd
\Projects\Test\Database.vhd
This allows administrators to perform security and storage audits, ensuring unneeded directory references are tracked accurately.
Understanding Hard Link Deletion and Reference Counting
A frequent question among users is: “What happens if I delete the original file?”
In NTFS architecture, every file record maintains an internal reference counter that tracks the number of active directory hard links. When you delete a hard link in File Explorer or via the command line (del "C:\Data\Database.vhd"):
- Windows decrements the file’s MFT link count by 1.
- The file’s physical data clusters on the SSD or HDD are not marked as free space.
- The remaining link (
C:\Projects\Test\Database.vhd) remains completely valid and accessible. - Only when the final remaining hard link is deleted does NTFS decrement the reference count to 0, marking the data clusters as available for overwriting.
Alternative Native Method: Using the mklink Command
In addition to fsutil, the built-in Windows Command Prompt shell features the mklink command. When invoked with the /H parameter, it produces an identical NTFS hard link:
mklink /H "C:\Backup\file.txt" "C:\Original\file.txt"
Both mklink /H and fsutil hardlink create call the underlying Win32 API function CreateHardLinkW. However, fsutil provides the additional advantage of the list subcommand to audit existing references.
Troubleshooting Hard Link Creation Errors
If link creation fails, verify your target files against these common NTFS limitations:
- “The system cannot move the file to a different disk drive”: You attempted to link across different partition letters (e.g., from
C:\toD:\). NTFS hard links can only reference files within the same filesystem volume because MFT record pointers are volume-specific. Use a Symbolic Link (mklink) if linking across different drives. - “Access is denied”: Ensure that your user account has read permissions on the existing file and write permissions on the directory where the new link is being generated.
- Maximum Link Count Reached: The NTFS specification enforces a hard architectural limit of 1,024 hard links per individual file. Attempting to create link number 1,025 will return an operating system error.
By using the fsutil hardlink utility in Windows 11, you can deduplicate large static assets, establish flexible build environments, and save substantial gigabytes of solid-state storage without compromising application compatibility.