Fact-checked by Grok 2 weeks ago

Long filename

Long filenames (LFNs), also known as long file name support, are a file naming extension in Microsoft Windows operating systems that allow file and directory names to exceed the traditional 8.3 character limit (eight characters for the base name plus a three-character extension) originally imposed by and early file systems. Introduced with in 1995, this feature uses the VFAT (Virtual File Allocation Table) driver to enable descriptive, user-friendly names on file systems while maintaining backward compatibility with legacy applications through automatically generated 8.3 short filename aliases. LFNs are implemented by storing additional directory entries in the directory structure, where each LFN entry holds up to 13 characters (26 bytes), allowing a complete of up to 255 characters per component when multiple entries are chained together. This system supports international characters via , replacing the ASCII limitations of short filenames, and is available on file systems through the VFAT extension and natively on file systems in Windows. For compatibility, Windows generates a shortened 8.3 alias (e.g., using tildes like "LONGFI~1.TXT") for each LFN unless explicitly disabled via registry settings, ensuring older software can still access files. Over time, LFN support has evolved to address path length limitations; prior to , the overall file path was capped at MAX_PATH (260 characters, including the null terminator), but individual filename components could reach 255 characters. Starting with and continuing in , extended-length paths up to approximately 32,767 characters are possible by enabling the LongPathsEnabled registry key and using the "\?" prefix, though this requires application manifests to declare long path awareness for full functionality. Despite these advances, certain restrictions persist, such as the inability to use reserved characters (e.g., <, >, :, ", /, , |, ?, *) in names and the need for around paths containing spaces in command-line operations.

History and Development

Origins in DOS Limitations

The 8.3 filename convention in and the early restricted file names to a maximum of eight alphanumeric characters for the base name, followed by a period and up to three characters for the extension, with all characters converted to uppercase and limited to the ASCII set excluding certain reserved symbols like . " / \ [ ] : ; | = ,. This format was a direct holdover from , the operating system that emulated for compatibility, as the fixed 11-character structure (8+3) fit efficiently within 's 32-byte directory entry size, allocating 8 bytes for the name, 3 for the extension, and space for like timestamps and attributes. Introduced with 1.0 in August 1981, the file system provided basic file allocation without any support for longer or more descriptive names, reflecting its origins in Microsoft's 1977 Stand-alone Disk and adaptations for IBM's PC hardware. Over the subsequent versions, from 2.0's addition of subdirectory support in 1983 to 6.22 released in May 1994, the core filename limitations persisted unchanged, as the system evolved primarily to accommodate larger hard drives and improved compression without altering the . These constraints arose from deliberate design choices emphasizing simplicity and reliability on resource-limited early , such as 160 floppy disks, where fixed-length fields in 32-byte entries enabled quick parsing without variable-length processing or complex string handling. Compatibility with applications and avoidance of overhead in low-memory environments further reinforced the 8.3 limit, preventing issues like name collisions on media with minimal storage. For instance, a file named "PROGRAM.EXE" complied fully, but a descriptive name like "My Document File.txt" would fail due to exceeding the character limit, spaces, and multiple periods. This rigidity motivated later extensions like VFAT to enable longer names while preserving .

Introduction with VFAT in Windows 95

Windows 95, released on August 24, 1995, marked the debut of long filename support through the VFAT file system extension, enabling users to employ descriptive filenames up to 255 characters in length using Unicode characters. This capability addressed the limitations of prior DOS systems, where filenames were confined to an 8.3 format of eight characters for the base name and three for the extension. VFAT extended the existing FAT12 and FAT16 file systems without requiring a complete overhaul, allowing seamless integration into the graphical interface of Windows 95 while preserving access to legacy applications. Microsoft's development of VFAT stemmed from the need to bridge the gap between DOS-era constraints and the more intuitive file management required for modern consumer operating systems. The extension was crafted in collaboration with original equipment manufacturers (OEMs) to facilitate broad deployment on pre-installed , ensuring that VFAT could handle the growing complexity of file naming in a environment. By storing long names in hidden directory entries marked with specific attributes, VFAT maintained , automatically generating short 8.3 aliases for files with extended names. Among the key innovations, VFAT permitted the use of spaces within filenames, preserved the case of lowercase letters, and allowed multiple extensions separated by periods, enhancing for everyday tasks like document organization. These features were initially rolled out in the original release and further refined in subsequent updates, such as OEM Service Release 2 in 1996, which expanded capabilities overall. Adoption extended to environments with into , released in September 1994, where VFAT provided FAT-based long filename support to align with upcoming compatibility needs.

Technical Implementation

LFN Directory Entry Structure

In the VFAT file system, long filenames (LFNs) are stored using one or more specialized 32-byte entries that precede the corresponding 8.3 short filename (SFN) entry in the . Each LFN entry accommodates up to 13 characters, allowing a maximum length of 255 characters across up to 20 consecutive entries. These entries are identified by a specific attribute value and include a for verifying integrity against the associated SFN. The ordinal field at offset 0 (1 byte) serves as a sequence number, with values ranging from 0x01 to 0x14 for non-terminal entries and 0x41 to 0x54 for the terminal entry (where bit 6 is set to indicate the end of the LFN chain). The first entry in the chain (lowest ordinal) corresponds to the beginning of the filename, while the terminal entry immediately precedes the SFN entry in the directory order, with subsequent entries appearing in reverse numerical order upward from there. Unused directory slots are filled with 0xFF to distinguish them from valid entries. The character data is stored in UCS-2 (a precursor to UTF-16) little-endian format, divided into three segments: 5 characters (10 bytes) at offsets 1-10, 6 characters (12 bytes) at offsets 14-25, and 2 characters (4 bytes) at offsets 28-31, for a total of 13 characters per entry. The attribute byte at offset 11 is set to 0x0F (combining read-only, hidden, system, and volume label flags) to mark the entry as an LFN and hide it from legacy DOS applications. A 1-byte checksum at offset 13 ensures the LFN matches its SFN, computed from the uppercase ASCII characters of the SFN (including trailing spaces). The type byte at offset 12 and low-word cluster field at offsets 26-27 are reserved and set to 0. For deleted LFNs, the ordinal field is modified to 0xE5, mirroring the deletion marker in standard FAT entries. The following table outlines the complete LFN directory entry layout:
Offset (bytes)Size (bytes)Field NameDescription
01LDIR_OrdSequence number (1-20; bit 6 set for terminal entry).
1-1010LDIR_Name1First 5 characters (UCS-2LE).
111LDIR_AttrAttributes (always 0x0F).
121LDIR_TypeEntry type (always 0).
131LDIR_Chksum of the corresponding SFN.
14-2512LDIR_Name2Next 6 characters (UCS-2LE).
26-272LDIR_FstClusLOFirst cluster low (always 0).
28-314LDIR_Name3Last 2 characters (UCS-2LE).
This structure integrates seamlessly with the existing 32-byte FAT directory entry format, reserving no additional space beyond the chained LFN entries. When the filename exceeds 13 characters, additional entries are allocated contiguously before the SFN, with the total chain length determined by the filename size (e.g., a 20-character name requires two entries). The short filename generation process complements this by deriving an 8.3 alias stored in the trailing standard entry.

Short Filename Generation Algorithm

The short filename generation algorithm in VFAT ensures by deriving a deterministic 8.3-format alias (up to 8 characters for the base name and 3 for the extension, separated by a period) from any long filename, which can exceed these limits and include characters. This process operates on the long filename provided via the operating system's , converting it into an uppercase, ASCII-only short form while preserving the original long name in separate directory entries. The algorithm prioritizes simplicity and uniqueness within the , scanning existing short filenames case-insensitively to avoid collisions. The process begins with preprocessing the long filename: all spaces are removed, trailing periods and dots are stripped (retaining only the last meaningful period if present to delineate the extension), and invalid characters for 8.3 format—such as * ? " < > | / \ : + , ; = [ ]—are replaced with underscores (_). The filename is then folded to uppercase. If the resulting name already fits within 8.3 constraints ( ≤8 characters, extension ≤3) and contains no invalid elements, it is used directly as the short filename, padded with spaces if necessary. Otherwise, for longer names, the is truncated to the first 6 valid characters (skipping any remaining invalid or removed elements), and the extension (if present) to the first 3 characters; a followed by a sequence number (~1) is appended to the base to form the initial . For names without an extension, the entire truncated portion plus 1 serves as the 8-character . This yields a like "ABCDEF1.GHI" from a longer input. Conflict resolution ensures uniqueness by comparing the candidate short filename (case-insensitively) against all existing short filenames in the . If a match is found, the sequence number after the is incremented (e.g., ~2, ~3), and the base is re-truncated if the appended number exceeds available space (e.g., for 10, only the first 5 characters are used, resulting in "ABCDE10.GHI"). This iteration continues until a short filename is found or the directory is full, in which case the operation fails. Special cases handle edge conditions, such as long filenames with characters (above 0x7F), which may trigger an immediate ~n suffix to avoid mapping ambiguities in OEM code pages, and filenames ending in spaces or dots, which are normalized by removal. The resulting short filename is always stored in the standard 8.3 entry, linked to the long filename via a for validation. For example, the long filename "My Long File Name.txt" is processed by removing spaces to "MyLongFileName.txt", uppercased to "MYLONGFILENAME.TXT", truncated to base "MYLONG" (6 characters) plus "1" for "MYLONG1", and extension "TXT", yielding "MYLONG1.TXT". If this conflicts with an existing file, it becomes "MYLONG2.TXT", and so on. Similarly, "ReadMe.First Draft.doc" removes spaces and extra elements to "READMEFIRSTDRAFT.DOC", truncating to "README~1.DOC". This algorithm maintains a unified where long and short names coexist transparently, allowing legacy 8.3-only applications to access files without modification.

Compatibility and Limitations

Backward Compatibility with 8.3 Filenames

VFAT ensures with legacy 8.3 filenames by generating a short filename (SFN) alias for every long filename (LFN), allowing older applications to access files without modification. The SFN is derived from the LFN through and the addition of numeric tails (e.g., "~1" for uniqueness), stored in a standard directory entry that links to the LFN entries via a . This dual-naming approach enables applications to open files using the SFN, with the operating system transparently translating it to the full LFN during access. In mixed environments combining DOS and Windows applications, legacy DOS programs interact solely with SFNs, as real-mode MS-DOS lacks native LFN support and relies on 8.3 conventions. Windows applications, however, utilize the full LFNs, with the Installable File System Manager (IFSMgr) routing requests across modes (V86 for DOS, protected mode for Win32) to maintain seamless interoperability. Renaming a file via its SFN updates the associated LFN without data loss, preserving the file's integrity and the checksum linkage between entries. For pure compatibility, Windows 95 supports extensions like Interrupt 21h functions 71A0h–71Aah only within its environment, not in standalone real-mode , allowing selective disabling of LFN processing to avoid conflicts with software. Early Windows 95 releases exhibited bugs impacting SFN-LFN interactions, such as failures in short-to-file control block () conversions that mishandled wildcard translations (e.g., "*" not properly converted to "?"), leading to meta-matching errors and reduced visibility of LFNs in certain searches. These issues were mitigated in subsequent updates, enhancing overall stability.

Length and Character Restrictions

In the VFAT file system, long filenames are limited to a maximum of 255 characters per component, excluding the path separator and null terminator. The overall path length, including all components and the null terminator, is restricted to 260 characters under the Windows API's MAX_PATH constant, though extended paths up to 32,767 characters are possible with specific prefixes in modern implementations. This per-component limit ensures compatibility while allowing significantly longer names than the legacy 8.3 format. VFAT supports Unicode characters encoded in UTF-16 (initially UCS-2) for long filenames, enabling international character sets beyond basic ASCII. This capability was introduced with VFAT in and enhanced in the OSR2 release, which added FAT32 support while maintaining LFN encoding. Allowed characters include printable code points, such as letters, digits, spaces, and symbols from the current , but exclude control characters (ASCII 0-31) and the null terminator. Certain elements are prohibited to prevent conflicts with system devices and commands. Invalid characters include the path separator \, colon :, asterisk *, question mark ?, double quote ", less-than <, greater-than >, and vertical bar |. Reserved names, such as CON, PRN, AUX, NUL, COM1 through COM9, and LPT1 through LPT9, cannot be used as filenames or directory names, regardless of case or extension. Additionally, trailing spaces and periods are automatically trimmed by the Windows shell, although the underlying file system may store them if created via API calls. Unicode normalization is not enforced in VFAT long filenames, meaning equivalent characters in different normalization forms (e.g., composed vs. decomposed) may coexist as distinct names. This behavior persisted through early Windows versions and was not standardized until later file systems like introduced optional in and beyond.

Drivers and Support

VFAT LFN Drivers for Windows

In and 98, the VFAT LFN functionality relies on a set of core drivers that operate in to virtualize access to long filenames on volumes. The Manager (VMM.VXD) serves as the foundational component, handling , paging, and transitions between ring-0 and ring-3 modes while providing services essential for LFN operations, such as page attachment for shared DLLs and registration of Win32 services. Complementing this, IFSMgr.sys acts as the Manager, routing requests to appropriate drivers, managing resources for multiple file systems, and offering ring-0 file I/O services like IFSMgr_Ring0_FileIO for efficient LFN handling. The primary VFAT driver, VFAT.386, implements the virtual logic, enabling LFN support through additional long directory entries (up to 255 characters per ) and managing mounting via FS_MountVolume, disk layouts, and local for floppies and fixed disks. These drivers are loaded during system initialization via entries in , with VFAT.386 specified as a static in the Device Init phase, registered through IFSMgcRegisterMount, and configured via the registry key HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD. IFSMgr.sys initializes at order A0010000h, hooking legacy interrupts (e.g., Int 21h, 25h, 26h) to support LFN , while VMM.VXD loads subsequently at IniOrder 0xa0010100 to oversee the layer. This setup allows seamless LFN access in both Win32 and environments, with VFAT.386 using VCACHE for 4096-byte page caching and a block cache to optimize directory reads involving multiple LFN entries. Specific LFN , such as FindFirstFile, are handled through VWIN32's mapping to Int 21h functions (e.g., 716Ch for extended opens, 71xxh series with the LFN flag in ECX bit 30), enabling case-preserved Unicode filenames; additionally, flags like FILE_FLAG_POSIX_SEMANTICS in related calls (e.g., CreateFile) enforce rules for case-sensitive matching on VFAT volumes. The evolution of VFAT LFN drivers in later Windows versions shifted toward native, kernel-mode integration without reliance on DOS subsystems. Windows NT 4.0 introduced built-in VFAT support via the fastfat.sys kernel-mode driver, providing 255-character LFN compatibility on volumes ( and ), with support for partitions up to 4 , while eliminating the DOS dependency present in Windows 95/98, thus improving stability for enterprise environments. This driver handles LFN through Unicode storage and backward-compatible 8.3 aliases. Native support, including LFN compatibility, was added in and later versions without third-party extensions. In and subsequent versions, fastfat.sys evolved further as a fully kernel-mode component within the I/O Manager framework, enhancing performance through integrated caching mechanisms that mitigate the overhead of multiple entries required for LFNs—typically 1-20 extra 32-byte entries per long filename, which can increase scan times by up to 20 times compared to short filenames in dense directories. Later iterations incorporated advanced caching, such as read-ahead buffers and lazy writes, to reduce this LFN-induced overhead during file enumeration and access.

Third-Party and DOS-Specific Drivers

Third-party drivers for long filename (LFN) support emerged to extend functionality beyond Microsoft's official VFAT implementations, particularly in pure environments lacking native integration. These drivers, often implemented as terminate-and-stay-resident (TSR) programs, provide the LFN (Interrupt 21h, AH=71h) to enable applications to handle filenames up to 255 characters on s. Installation typically involves loading the driver via , such as DOSLFN, to hook into 's file system calls without requiring Windows. One prominent example is DOSLFN, a TSR driver developed initially by Henrik Haftmann in 2001 and later maintained by Jason Hood, offering full LFN API emulation for real-mode DOS versions from 4.0 onward on 386+ processors. It supports operations like directory creation (71h/39h), file finding (71h/4Eh), and renaming (71h/56h), allowing LFN-aware applications such as to access extended names while maintaining backward compatibility with 8.3 short filenames. Early versions focused on FAT12/16/32 passthrough but lacked full handling, limiting international character support until later updates. In the ecosystem, LFN extensions were integrated into the through community projects starting in 2001, enabling native support for long filenames alongside FAT32 without additional TSRs in versions like kernel 2043 and later. This -level implementation updates handling for LFN requirements, such as modified dates, and is compiled with and for broad compatibility in open-source DOS derivatives. Adoption persisted in legacy and embedded systems pre-2000, where resource constraints favored lightweight TSRs over full OS upgrades, though limitations like incomplete persisted in initial third-party releases. Drivers for alternative file systems, such as HPFS and NTFS, provided LFN passthrough in DOS by emulating VFAT-like access. For instance, HPFSDOS and HPFSA enable read-only mounting of HPFS partitions, preserving long filenames created by OS/2 while exposing them via the LFN API. Similarly, NTFS4DOS offers read/write access to NTFS volumes with LFN support in its professional edition, allowing DOS applications to interact with Windows NT/2000 files without conversion to 8.3 format. Microsoft's MS-DOS 7.0, bundled with early Windows 95, included partial LFN awareness via VFAT without extra drivers, but full real-mode functionality required these third-party extensions for standalone DOS use. For networked environments, incorporated LFN support through server-side modules like LONG.NAM, loaded on 4.11 volumes to enable clients to access extended filenames via the filename format, bridging limitations in multi-OS setups. These drivers were particularly vital in pre-2000 legacy hardware and applications, where they facilitated without migrating to Windows-dependent systems.

Usage in DOS Environments

Driver-less Real Mode LFN Commands

In the context of , the real-mode from 7.0 includes internal hooks that enable limited long filename (LFN) support for built-in commands when running in a DOS session on VFAT volumes, without requiring the explicit loading of additional drivers such as VFAT.386 in that session, as the underlying Windows environment provides the necessary LFN API extensions via interrupt 21h function AH=71h. Specific commands like with the /X option display both the LFN and the corresponding short filename (SFN), while and can operate on LFNs directly if the volume is accessible as the boot partition. This functionality relies on the presence of VFAT-formatted media and fails on non-VFAT volumes or non-boot partitions, as the support is tied to the system's primary configuration. Additionally, operations remain confined to , lacking multitasking or protected-mode features. MS-DOS 7.10, included in OSR 2 and later, continued this LFN support and added FAT32 file system compatibility. For extended functionality beyond these built-in commands, third-party TSRs like LFNDOS could be employed in pure DOS setups.

Limitations in Pure DOS Setups

In pure MS-DOS 6.22 setups, long filenames (LFNs) are entirely ignored during the boot process, with the operating system recognizing only the corresponding short filenames (SFNs) in the 8.3 format. This leads to issues such as incorrect volume label reporting in directory listings, where MS-DOS 6.22 misinterprets LFN directory entries—marked with Read-Only, , , and Volume Label attributes—as the actual volume label, rendering it unchangeable and causing display anomalies like garbage characters in place of LFN data. Moreover, disk management operations pose significant risks, as tools like may report errors such as "Volume label does not match" when attempting to remove partitions containing LFNs, while the command fails with "Cannot make directory entry" during volume label changes. These incompatibilities can result in incomplete file deletions or orphaned LFN entries if SFN-based operations are performed without LFN awareness, potentially leading to inconsistencies or over time, as non-aware utilities may overwrite or fragment LFN structures without preserving them. At the command line, early DOS versions like 6.22 provide no native mechanisms for creating, renaming, or fully accessing LFNs, confining all file operations to the restrictive 8.3 SFN format and rendering long descriptive names inaccessible or invisible. Users often resort to third-party shells such as 4DOS, which extends command-line functionality to handle LFNs when an appropriate driver is loaded, though this requires additional setup beyond standard DOS capabilities. Hardware constraints further exacerbate these limitations, as LFNs depend on VFAT-formatted volumes, which pure 6.22 cannot reliably access or create on floppy disks due to the inherent FAT12 structure and limited sector space for multiple LFN entries per file. and operating on large VFAT partitions also demands a VFAT-aware or supporting extended functions to handle drives exceeding 8 GB, as standard 6.22 lacks native LBA support and fails on non-extended FAT setups, often resulting in inaccessible or unrecognized volumes. Around the Y2K transition, third-party patches and drivers, such as updated versions of DOSLFN, emerged to retrofit LFN compatibility into legacy DOS environments, addressing both date-handling issues and filename extensions. A key milestone came with 1.3 in 2022, which integrated native LFN support directly into its kernel, replacement, and core utilities, enabling seamless creation and manipulation of long filenames without external drivers in this open-source DOS variant. As of 2025, no further major updates to this LFN feature have been introduced. While driver-less real mode LFN commands provide limited visibility into existing long names on VFAT volumes, they fall short in pure DOS setups by lacking creation or editing capabilities, underscoring the overall incompleteness of support without supplemental software.

Other Implementations

Support in Non-Windows Operating Systems

In , the VFAT filesystem , which provides full read and write support for long filenames (LFNs) on FAT volumes, has been integrated into the since the 2.0 series released in 1996. This enables seamless handling of extended filenames up to 255 characters, including support through mount options such as utf8, which interprets filenames in encoding to preserve international characters. Without proper options like iocharset or utf8, the driver may mangle or replace invalid characters to ensure compatibility with the underlying structure. macOS natively uses the Plus (HFS+), which supports long filenames exceeding 255 characters, but provides VFAT compatibility through built-in drivers for reading and writing to volumes with LFN support. This allows macOS to access Windows-formatted drives while preserving extended names, though overall path lengths in macOS are limited to approximately 1024 characters. Other operating systems have implemented varying degrees of LFN support on VFAT. ReactOS, an open-source project aiming for binary compatibility with Windows, mirrors the VFAT driver from Windows NT, providing native read/write access to long and Unicode filenames on FAT volumes. In embedded real-time operating systems like QNX Neutrino RTOS, the fs-dos.so module enables full LFN support on FAT12/16/32 volumes, creating long filenames for entries exceeding the 8.3 format or using mixed case, with a maximum length of 255 characters per the VFAT specification. FreeBSD provides VFAT support via its msdosfs kernel module, allowing read/write access to LFNs since version 5.0 in 2003, with similar Unicode handling through mount options. Android, based on Linux, supports VFAT on external storage like SD cards through the kernel's vfat module, preserving LFNs up to 255 characters with UTF-8 encoding. Unix-like systems, including variants, typically handle invalid characters (such as colons or question marks disallowed in VFAT) by stripping or replacing them during file operations on mounted FAT volumes, often using the ? character as a substitute to avoid errors. Cross-platform tools like preserve LFNs when sharing VFAT volumes over networks, mapping extended names via the protocol to ensure fidelity between Windows and Unix clients without truncation.

Evolution in Modern File Systems

The evolution of long filename support in modern file systems builds upon the foundational concepts introduced by VFAT in the , which extended the legacy 8.3 format through supplementary directory entries while maintaining . Subsequent file systems shifted toward native integration of extended names, eliminating the need for such workarounds and enhancing Unicode compatibility for global character representation. This progression addressed limitations in storage efficiency, , and path length, prioritizing seamless handling of descriptive filenames in contemporary environments. NTFS, introduced by in 1993 with , marked a significant advancement by natively supporting (UTF-16) filenames up to 255 characters per component and full paths extending to approximately 32,767 characters via extended-length path APIs. Unlike VFAT, NTFS does not require short 8.3 names, though it optionally generates them for legacy compatibility, a feature that can be disabled to reduce overhead and improve performance on volumes with many files. This design removed the fragmentation caused by VFAT's multiple LFN entries, storing names directly in the master file table (MFT) for better efficiency, while providing robust handling without mandatory , allowing applications to manage equivalence as needed. Microsoft's exFAT, released in 2006 for flash-based storage like USB drives and SD cards, further streamlined long filename support by natively accommodating up to 255 UTF-16 characters per name without any 8.3 short name legacy or supplementary entries. This eliminated VFAT's directory overhead entirely, using a simpler allocation table structure optimized for removable media, where filenames are stored in dedicated directory entries encoded in Unicode to support international characters directly. exFAT's design prioritized portability and efficiency for non-PC devices, avoiding the compatibility bloat of prior FAT variants while enabling larger file sizes and clusters. In open-source ecosystems, Linux's , introduced in 2008 as an of , supports filenames up to 255 bytes in encoding, aligning with the standard for systems and providing native multilingual character handling without VFAT-style extensions. This integration allows for efficient storage of international text, with paths limited practically by buffers (up to 4,096 characters) rather than rigid constraints, reducing the administrative burden of legacy short names. Similarly, Apple's APFS, launched in 2017 with , employs for filenames limited to 255 bytes and supports longer paths through its container-based architecture, emphasizing normalization-resistant storage to preserve application-intended forms while advancing beyond HFS+ limitations in and features. These systems collectively demonstrate a trend toward overhead-free, Unicode-native long filenames, enhancing usability across diverse platforms.

References

  1. [1]
    Naming Files, Paths, and Namespaces - Win32 apps | Microsoft Learn
    Aug 28, 2024 · To get the long file name version of a short name, use the GetLongPathName function. To get the full path to a file, use the GetFullPathName ...
  2. [2]
    Maximum Path Length Limitation - Win32 apps - Microsoft Learn
    Jul 16, 2024 · In the Windows API (with some exceptions discussed in the following paragraphs), the maximum length for a path is MAX_PATH, which is defined as 260 characters.
  3. [3]
    Overview of FAT, HPFS, and NTFS File Systems - Windows Client
    Jan 15, 2025 · FAT naming convention. FAT uses the traditional 8.3 file naming convention and all filenames must be created with the ASCII character set. The ...Missing: history | Show results with:history
  4. [4]
    Why does MS-DOS use 8.3 filenames instead of, say, 11.2 or 16.16 ...
    When I discussed years ago why operating system files tend to follow the old 8.3 file name convention, I neglected to mention why the old MS-DOS filename ...
  5. [5]
    Origin of the 8.3 file names scheme - Retrocomputing Stack Exchange
    Feb 17, 2022 · Early UNIX on PDP-11 was a little more restricted: 8 char filenames, with no special provision for an extension (so any dot would have been ...Were 9.2 file names possible in MS-DOS?Who invented file extensions in file names?More results from retrocomputing.stackexchange.com
  6. [6]
    DOS Beginnings | OS/2 Museum
    The idea behind FAT was that the complete information about file allocation on the entire disk was stored in a single structure called the File Allocation Table ...
  7. [7]
    MS-DOS 6.22 - WinWorld
    Release date: 1994; Minimum CPU: 8088; Minimum RAM: 512KB; Minimum free disk space: 5MB; User interface: Text; Platform: DOS; Download count: 1652 (587 for ...
  8. [8]
    FAT Filesystem - Elm-chan.org
    This is a documentation about FAT filesystem written based on the FAT specs, FAT32 Filesystem Specification to know how FAT filesystem works and how to manage ...Basics of FAT File System · Association of File and Cluster · Long File Name
  9. [9]
    Microsoft's Windows 95 release was 30 years ago today, the first ...
    Aug 24, 2025 · Microsoft's momentous Windows 95 operating system became available to the public on this day 30 years ago.
  10. [10]
    Random musings on the introduction of long file names on FAT
    Aug 26, 2011 · Since the new name is longer than the old name, more LFN fragments need to be used to store the entire name, and oh look isn't that nice, there ...Missing: VFAT | Show results with:VFAT
  11. [11]
    VFAT file system
    The long file name's extension (up to three characters after a ".") are transferred to the extension of the alias file name. · The first six non-space characters ...
  12. [12]
    [PDF] Inside the Windows 95 File System
    ... Windows 95 file system. The standard file systems which ship with Windows 95 include: VFAT, the virtual FAT file system; VREDIR, the Microsoft Networks ...
  13. [13]
    Windows 95 - BetaWiki
    Aug 29, 2025 · Windows 95, released in 1995, was the first major Windows 9x release, succeeding Windows 3.1. It introduced Windows Explorer, a hybrid 16/32- ...
  14. [14]
    LFN (Long Filename) Definition - TechTerms.com
    Oct 22, 2018 · LFN filenames can be up to 255 characters long, including ... Microsoft introduced long filename support with the VFAT file system in 1994.
  15. [15]
    [PDF] Long Filename Specification
    Dec 1, 2008 · Long filename (here on forth referred to as "LFN") design for Windows95 is designed to be 99% compatible with the old DOS 8.3 format.
  16. [16]
    US5758352A - Common name space for long and short filenames
    An operating system provides a common name space for both long filenames and short filenames. In this common namespace, a long filename and a short filename ...Missing: VFAT | Show results with:VFAT
  17. [17]
    Windows 95 "Friendly" Short Filenames Can Be Dangerous
    Jan 28, 1998 · Window 95 uses a scheme to map "long" filenames to "short" (old-fashioned "8.3") filenames. You can see both long and short filenames by looking a file's ...Missing: VFAT generation algorithm
  18. [18]
    File System Functionality Comparison - Win32 apps - Microsoft Learn
    Mar 26, 2023 · Limits ; Maximum file name length, 255 Unicode characters, 255 Unicode characters ; Maximum path name length, 32,760 Unicode characters with each ...Functionality · Limits
  19. [19]
    Unicode filenames in Windows vs. Mac OS X - Super User
    Nov 11, 2015 · Windows does not normalize filenames using any Unicode Normalization Form. This means you could have two filenames that look identical with ...Convert File Names into UTF - character encoding - Super UserWhat symbols can I use in FAT32 volume labels? - Super UserMore results from superuser.comMissing: VFAT LFN enforcement<|control11|><|separator|>
  20. [20]
    Using Unicode Normalization to Represent Strings - Win32 apps
    Jan 7, 2021 · Unicode normalization eliminates non-essential differences in strings, producing one binary representation. There are four forms: NFC, NFD, ...Missing: VFAT LFN enforcement
  21. [21]
    CreateFileA function (fileapi.h) - Win32 apps - Microsoft Learn
    Feb 8, 2023 · FILE_FLAG_POSIX_SEMANTICS; 0x01000000. Access will occur according to POSIX rules. This includes allowing multiple files with names, differing ...Missing: FindFirstFile LFN
  22. [22]
    adoxa/doslfn: Long file name driver for DOS. - GitHub
    Aug 16, 2025 · Provide the long file name (LFN) API for DOS programs. Requirements. DOS 4+ (tested); 386+ (assumed). Build.
  23. [23]
    DOS long file name support TSR - TU Chemnitz
    Oct 2, 2001 · This web page holds the current source and (not yet!!) executable of DOSLFN, the (IMHO) one-and-only functional Long File Name API provider for ...
  24. [24]
    LFN drivers
    Jul 25, 2025 · LFN drivers allow access to long file names under real DOS and in the DOS shells of Windows NT 4.0.Missing: Young | Show results with:Young
  25. [25]
    LFN/FAT32 support for the FreeDOS OS.
    ### Summary of LFN Support in FreeDOS
  26. [26]
    kernel - 2043.99.1 - Ibiblio
    Jun 26, 2025 · The FreeDOS Kernel (supports FAT12/FAT16/FAT32). Includes COUNTRY ... * Metadata updated for modified-date and LFN requirements. Author ...
  27. [27]
    Filesystems HOWTO: High Performance FileSystem (HPFS)
    The HPFS partition is assigned a drive letter, and can be accessed like any DOS drive.iHPFS is restricted to read-only access. This program is no longer being ...
  28. [28]
    Mount NTFS partitions using DOS device driver - Smallvoid.com
    MS DOS doesn't recognize NTFS partitions, but a device driver can enable access. NTFSDOS, NTFS Reader, and NTFS4DOS are tools to mount NTFS partitions in DOS.
  29. [29]
    Installing NetWare Client 32 for Windows 95 - Micro Focus support
    Nov 1, 1996 · You can install NetWare Client 32 for Windows 95 from diskettes, from CD-ROM, from a local hard disk, or from a NetWare server.
  30. [30]
    Filesystems HOWTO: DOS FAT 12/16/32, VFAT
    This is a FAT32 file system driver for Windows NT(R) 4.0. Once installed, any FAT32 drives present on your system will be fully accessible as native Windows NT ...
  31. [31]
    MS-DOS 7.1 (CDU) - WinWorld
    Release date: 1996; End of life date: 2001; Minimum CPU: 386 @ 15MHz; Minimum RAM: 1MB; Minimum free disk space: 10MB; User interface: Text; Platform: DOS ...
  32. [32]
    Long Filenames Cause Problems with Earlier Versions of MS-DOS
    ... MS-DOS 6.22 or earlier: - In a directory listing, the volume label is reported incorrectly. - When you try to remove a partition, Fdisk reports the following ...
  33. [33]
    DOSLFN with 4DOS? - VOGONS
    Nov 20, 2022 · I've been experimenting with 4DOS and found that it supports LFN. This is convenient, except that it only seems to work with the much older STARLFN and not ...what is the deal with long file name support in dos? - VOGONSLong File Name (LFN) support - DOSBox - VOGONSMore results from www.vogons.orgMissing: NTFS4DOS | Show results with:NTFS4DOS
  34. [34]
    Overcoming the MS-DOS 8025 MB limitation - Windows 9x/ME - MSFN
    Oct 9, 2015 · MS-DOS 6.22 has an 8,025 MB limit due to lack of INT 13h support. The Ontrack Disk Manager 9.50 ONTRACKD.SYS driver can overcome this limit.Testing MS-DOS limitations - Windows 9x/MEMS-DOS Shell Issue - Windows 9x/MEMore results from msfn.orgMissing: VFAT | Show results with:VFAT
  35. [35]
    [Freedos-user] Long filename support in FreeDOS
    Mar 18, 2021 · In FreeDOS 1.0, the COMMAND.COM replacement supports long filenames, and some of the other programs do as well, but many programs do not. So yes and no.File systems with metadata supportLFN support?More results from freedos-user.narkive.com
  36. [36]
    vfat.txt - The Linux Kernel Archives
    Long filenames are stored on disk in Unicode format, but Unix for the most part doesn't know how to deal with Unicode. By default, FAT_DEFAULT_IOCHARSET setting ...
  37. [37]
    File system formats available in Disk Utility on Mac - Apple Support
    In Disk Utility on your Mac, format disks or volumes using Apple File System (APFS), Mac OS Extended, MS-DOS (FAT), and ExFAT.Missing: LFN Carbon 9
  38. [38]
    filenames too long, how do I find them? - Apple Support Communities
    Feb 20, 2017 · The Mac operating system has support for effectively unlimited file name and file path lengths. Unfortunately Windows has a limit of only 260 characters for ...I see some files in 8.3 on my external FAT drivefile names too long - Apple Support CommunitiesMore results from discussions.apple.com
  39. [39]
    File Systems FAQ - ReactOS Wiki
    Jul 10, 2020 · ReactOS currently only supports FAT file systems including FATx(Xbox variation of FAT), BtrFS, and possibly Reiser. NTFS read-only support ...Missing: LFN mirrors
  40. [40]
  41. [41]
    fs-dos.so - QNX
    The fs-dos.so shared object lets you mount DOS filesystems (FAT12, FAT16, VFAT, and FAT32) under QNX OS. This shared object is automatically loaded by the devb ...
  42. [42]
    DOS FAT12/16/32 filesystem - QNX
    The limits for DOS FAT12/16/32 filesystems include: Filename length 255 characters. Pathname length 1024 characters, not including the mountpoint or the ...
  43. [43]
    How to deal with characters like ":" or "?" that make invalid filenames?
    Aug 1, 2016 · Use `rename` to replace invalid characters with `_` or remove them. `pax` can convert filenames during copy. `fatmv` can also rename files with ...Remove invalid characters from recursive Linux filesystemHow do I remove multiple special characters from a file?More results from unix.stackexchange.comMissing: FAT stripping
  44. [44]
    The vfat file system and Linux - OSnews
    Feb 10, 2005 · The vfat file system has been supported by Linux for years now. Still there are a lot of obstacles. I want to show, with the help of some ...
  45. [45]
    NTFS overview | Microsoft Learn
    Jun 18, 2025 · Support for extended-length paths: Many Windows API functions have Unicode versions that allow an extended-length path of approximately 32,767 ...
  46. [46]
    fsutil behavior | Microsoft Learn
    Feb 3, 2023 · When NTFS creates files in a directory, it must look up the 8.3 character-length file names that are associated with the long file names. This ...
  47. [47]
    exFAT File System Specification - Win32 apps - Microsoft Learn
    This specification describes the exFAT file system and provides all the information necessary for implementing the exFAT file system.Missing: convention | Show results with:convention
  48. [48]
    Definition of exFAT - PCMag
    (EXtended File Allocation Table) An enhanced version of the FAT file system from Microsoft that was introduced in 2006 with Windows CE and Windows Vista ...
  49. [49]
    4.3. Directory Entries — The Linux Kernel documentation
    Since file names cannot be longer than 255 bytes, the new directory entry format shortens the name_len field and uses the space for a file type flag, probably ...
  50. [50]
    Working with UTF-8 in the kernel - LWN.net
    a valid ASCII string is also valid UTF-8 ...
  51. [51]
    [PDF] Apple File System Reference
    Jun 22, 2020 · Apple File System is the default file format used on Apple platforms. Apple File System is the successor to HFS.
  52. [52]
    A brief history of APFS in honour of its fifth birthday
    Apr 1, 2022 · Born secretly on 27 March 2017, it was Apple's biggest gamble. Introduced in High Sierra, it didn't work on Fusion Drives and had other ...