Windows Hard Link | ESSENTIAL × 2026 |

echo Hello > original.txt mklink /H link.txt original.txt type link.txt # Output: Hello echo World >> original.txt type link.txt # Output: Hello World /H is the crucial flag—without it, mklink creates a symbolic link by default. New-Item -ItemType HardLink -Path "C:\links\link.txt" -Target "C:\data\original.txt" Or with the shorter alias:

(Get-Item "link.txt").LinkType # Output: HardLink In File Explorer, hard links appear as normal files—there's no special icon or overlay. This is both a feature (no clutter) and a danger (easy to forget they're linked). 1. Deduplication Without Deduplication Features You have the same large ISO file needed in three different project folders. Instead of using 6 GB, create hard links:

A hard link doesn't point to a path —it points directly to the raw data on disk. That data has no location except "wherever Windows put it." Junction points are volume-mounted directory links (only for folders, only local drives). They behave like symlinks for folders but have fewer features. Hard links don't work on folders at all in Windows (NTFS supports them, but Windows restricts creation for safety). Creating Hard Links on Windows Windows provides two built-in ways: mklink (Command Prompt) and New-Item (PowerShell). Using Command Prompt (Run as Administrator for some operations, but not strictly required for files) mklink /H LinkName TargetFile Example: windows hard link

Workaround: Use directory junctions or symlinks with mklink /D or mklink /J . Hard links cannot span drives (C:\ to D:). Each volume maintains its own file reference table. For cross-volume needs, use symbolic links. ❌ The Deletion Trap This is the most common hard link mistake:

ni link.txt -ItemType HardLink -Target original.txt To confirm you've created a hard link (and not a copy or symlink), check the link count : echo Hello > original

This isn't a shortcut, and it's not a copy. It's something far more powerful—and far more confusing if you don't understand how it works.

mklink /H "C:\LegacyApp\config.ini" "D:\SharedConfig\config.ini" Now the legacy app and your modern tool share the same config. When using WSL, files stored in \\wsl$\ are actually on a virtual filesystem. Hard links don't work across the Linux/Windows boundary, but within a Windows NTFS drive, hard links are fully supported. Useful for deduplicating build artifacts between WSL and native Windows tools. Critical Limitations and Dangers ❌ No Directories Windows explicitly blocks creating hard links to directories (NTFS supports them, but Windows disables it to prevent infinite recursion and other filesystem nightmares). That data has no location except "wherever Windows put it

Every normal file you create is actually a hard link already—it's just that there's only one link to that data. When you create a second hard link, you're telling Windows: "This data should also appear at this other path."