Why Junctions and Symbolic Links Behave Differently on Windows 11
🔍 WiseChecker

Why Junctions and Symbolic Links Behave Differently on Windows 11

Quick fix: Junctions (mklink /J) work for directories only on the same volume. Symbolic links (mklink /D or /file with mklink) work cross-volume, even for files. Symlinks need Admin rights (or Developer Mode). Junctions don’t require admin. Use junction for local dir aliases, symlink for cross-drive / file targets.

Both junctions and symbolic links are reparse points on NTFS — pointers that redirect to other locations. They behave differently in scope (directories only vs files), permissions, and remote access. Pick the right one for your use case.

Symptom: Want to understand differences between junctions and symbolic links on Windows 11.
Affects: Windows 11.
Fix time: ~10 minutes to learn + use.

ADVERTISEMENT

What causes this

NTFS supports two types of directory linking:

  • Junctions (introduced in Windows 2000): pointer to directory on same volume. No admin needed.
  • Symbolic links (Windows Vista+): pointer to directory or file, cross-volume, even to network share. Admin needed (or Developer Mode).

Different scope means different use cases.

Method 1: When to use junctions

Junctions for same-volume directory linking.

  1. Create junction:
    mklink /J "C:\Apps\Steam Games" "C:\SteamLibrary"

    First path: alias to create. Second: actual location.

  2. Pros:
    • No admin rights needed.
    • Programs see junction as regular folder.
    • Backups follow junction transparently in most cases.
  3. Cons:
    • Same volume only.
    • Folders only, not files.
    • Doesn’t work for network shares.
  4. Use cases: redirect Program Files install location to another folder on same drive; alias a long path.
  5. For removing junction: rmdir "C:\Apps\Steam Games" (just like normal folder — removes junction, not target).
  6. For listing junctions: dir /AL C:\ — shows junction points.

This is the junction usage.

ADVERTISEMENT

Method 2: When to use symbolic links

Symlinks for cross-volume or file linking.

  1. Create symbolic link to directory (cross-volume):
    mklink /D "C:\Photos" "D:\PhotoStorage"

    Cross-drive. Admin needed for /D.

  2. Create symbolic link to file:
    mklink "C:\config.json" "D:\Shared\config.json"

    File-level. Admin needed.

  3. Pros:
    • Cross-volume.
    • Files and directories.
    • Can target network shares.
    • Can target relative paths.
  4. Cons:
    • Admin rights required (or Developer Mode: Settings → Privacy & security → For developers → Developer Mode).
    • Some apps don’t follow symlinks correctly.
    • Backups may treat differently.
  5. Use cases: share config files between locations; alias a folder on different drive; reorganize without moving data.
  6. For removing symlink: del "C:\config.json" (for file) or rmdir "C:\Photos" (for directory).

This is the symlink usage.

Method 3: Use Developer Mode to avoid admin for symlinks

For frequent symlink users.

  1. Open Settings → Privacy & security → For developers.
  2. Toggle Developer Mode on.
  3. Now you can create symlinks without admin (in normal command prompt).
  4. For script automation: useful in build systems, dotfile management.
  5. For npm / yarn package managers: heavy symlink users. Developer Mode helps.
  6. For checking: mklink /D "C:\test" "D:\target" as regular user. Should succeed.
  7. For PowerShell: New-Item -ItemType SymbolicLink -Path "C:\test" -Target "D:\target". Same Admin / Dev Mode requirement.
  8. For corporate-managed PCs: Developer Mode may be restricted via Group Policy.

This is the dev-friendly setup.

How to verify the fix worked

  • Junction created without admin prompt.
  • Symbolic link created with admin (or in Developer Mode).
  • dir shows links with target paths.
  • Apps access content through link as if it were local.
  • Removing link doesn’t delete target.

If none of these work

If links don’t work: FAT32 / exFAT: don’t support reparse points. NTFS only. Cross-PC network: junction can’t target network share. Use symbolic link. For specific apps: some installers don’t follow symlinks. Try junction. For Sysprep / image deployment: links can complicate. Carefully manage. For Git repos with symlinks: Git on Windows handles symlinks; enable via git config --global core.symlinks true. For chronic permission issues: take ownership of target directory before linking. For Linux subsystem (WSL): different symlink mechanism. WSL symlinks are Linux symlinks, separate from Windows symlinks.

Bottom line: Junctions (mklink /J): same-volume directories only, no admin. Symbolic links (mklink /D or for files): cross-volume, files OK, admin (or Developer Mode) needed. Pick by scope of your linking need.

ADVERTISEMENT