Microsoft Blocks 'CON' File Names in Windows to Protect Legacy Code

Why You Can't Name A File CON In Windows — Tom Scott

Tom Scott

Microsoft retains decades-old MS-DOS device file restrictions in Windows because breaking backwards compatibility risks crashing mission-critical enterprise software built in the 1980s.

AI-assisted summary of Why You Can't Name A File CON In Windows — original source. Check the original for full context.

Source published:

Key ideas

  • Windows operating systems block users from naming files or folders 'CON' (or variations like 'con.txt'), a restriction applying to a blacklist of legacy terms including AUX, PRN, NUL, COM0-9, and LPT0-9. (0:00)
  • The restriction originates in 1980s MS-DOS device files, which let applications interact with hardware peripherals via standard file write commands intercepted by device drivers rather than disk storage. (1:29)
  • Because early MS-DOS lacked subdirectories, device filenames were reserved globally across the entire operating system, a architectural rule that persisted when hierarchical folder trees were introduced. (1:29)
  • Microsoft deliberately maintains this restriction and other historical quirks—such as Excel's intentional replication of a 1900 leap year bug—to ensure decades-old enterprise software continues to run without breaking. (4:19)

Detailed notes

## Background Published on YouTube on April 20, 2020, by educational creator Tom Scott, this video explores why modern Windows systems refuse to let users name files or folders 'CON'. According to the description, the short answer to this curious quirk is 'backwards compatibility,' while the video itself unpacks the full historical context behind that choice.

## TL;DR Tom Scott explains that the prohibition against naming files or folders 'CON' in Windows stems from MS-DOS device files, which acted as direct bridges between software and hardware peripherals like consoles and printers. Because these reserved names were applied globally in early DOS, Windows continues to block them across every directory to maintain strict backwards compatibility for legacy software. Scott illustrates how this commitment to compatibility extends to preserving decades-old bugs—such as Lotus 1-2-3's 1900 leap year error in Microsoft Excel—to avoid breaking vintage documents and enterprise tools. The video contrasts Microsoft's deeply conservative preservation philosophy with Apple's rapid forced obsolescence, framing the reserved names as a testament to the balance between technological innovation and familiarity.

## Atmosphere & style Filmed against a lockdown-era green screen, the presentation carries Tom Scott's trademark blend of energetic, conversational clarity and engaging technical breakdown. Scott grounds an obscure, frustrating computing quirk in relatable metaphors, shifting smoothly from lighthearted trivia to philosophical reflections on software evolution. The vibe feels both intimate and informative, giving viewers an accessible look beneath the modern user interface into the unseen architectural history of personal computing.

## Bulletin - [00:00](https://www.youtube.com/watch?v=bC6tngl0PTI&t=0s) Windows operating systems block users from naming files or folders 'CON' (or variations like 'con.txt'), a restriction applying to a blacklist of legacy terms including AUX, PRN, NUL, COM0-9, and LPT0-9. - [01:29](https://www.youtube.com/watch?v=bC6tngl0PTI&t=89s) The restriction originates in 1980s MS-DOS device files, which let applications interact with hardware peripherals via standard file write commands intercepted by device drivers rather than disk storage. - [01:29](https://www.youtube.com/watch?v=bC6tngl0PTI&t=89s) Because early MS-DOS lacked subdirectories, device filenames were reserved globally across the entire operating system, a architectural rule that persisted when hierarchical folder trees were introduced. - [04:19](https://www.youtube.com/watch?v=bC6tngl0PTI&t=259s) Microsoft deliberately maintains this restriction and other historical quirks—such as Excel's intentional replication of a 1900 leap year bug—to ensure decades-old enterprise software continues to run without breaking.

## Key takeaways - [00:00](https://www.youtube.com/watch?v=bC6tngl0PTI&t=0s) Modern versions of Windows refuse to allow users to create or rename any file or folder to 'CON', regardless of file extensions like .txt or .jpg. - [00:00](https://www.youtube.com/watch?v=bC6tngl0PTI&t=0s) 'CON' is part of an entire blacklist of reserved device names in Windows, which also includes AUX, PRN, LST, NUL, COM0 through COM9, and LPT0 through LPT9. - [01:29](https://www.youtube.com/watch?v=bC6tngl0PTI&t=89s) MS-DOS introduced device files as an architectural shortcut so developers could interact with peripherals using standard file reading and writing routines rather than writing custom hardware code. - [01:29](https://www.youtube.com/watch?v=bC6tngl0PTI&t=89s) Device drivers intercepted data sent to reserved device files, directing output to physical hardware like keyboards, displays, or printers while bypassing storage disks entirely. - [01:29](https://www.youtube.com/watch?v=bC6tngl0PTI&t=89s) In MS-DOS, redirecting output from the command line—such as 'dir > LPT1'—streamed directory listings directly through the parallel port driver to print onto physical paper. - [01:29](https://www.youtube.com/watch?v=bC6tngl0PTI&t=89s) Early MS-DOS lacked subdirectories and stored all files in a single flat structure, requiring device names to be permanently reserved across the entire system. - [01:29](https://www.youtube.com/watch?v=bC6tngl0PTI&t=89s) When hierarchical folders were later introduced, device files had to remain accessible from any folder location, permanently cementing the name reservation throughout the filesystem. - [01:29](https://www.youtube.com/watch?v=bC6tngl0PTI&t=89s) Modern Windows maintains a direct architectural lineage back to MS-DOS, still harboring legacy components such as the 1992 Windows 3.1 file selection dialog box. - [04:19](https://www.youtube.com/watch?v=bC6tngl0PTI&t=259s) Backwards compatibility varies by industry: gaming console manufacturers often abandon older physical media compatibility due to shifting hardware architectures and the commercial appeal of remasters. - [04:19](https://www.youtube.com/watch?v=bC6tngl0PTI&t=259s) True backwards compatibility often requires preserving bugs; Microsoft Excel deliberately emulates a Lotus 1-2-3 calculation error that incorrectly treats 1900 as a leap year. - [06:01](https://www.youtube.com/watch?v=bC6tngl0PTI&t=361s) Microsoft built its enterprise market dominance on backwards compatibility, guaranteeing that proprietary corporate tools and legacy documents function indefinitely across operating system upgrades. - [06:01](https://www.youtube.com/watch?v=bC6tngl0PTI&t=361s) While Apple frequently enforces planned obsolescence by retiring software architectures and hardware ports, Microsoft's conservative model preserves digital history at the cost of carrying decades-old quirks.

## Detailed walkthrough ### [00:00](https://www.youtube.com/watch?v=bC6tngl0PTI&t=0s) The Mystery of Naming a File CON in Windows

Filming under lockdown in April 2020, Tom Scott explains that he would normally be recording at the Centre for Computing History in Cambridge, but has instead been forced to make do with a green screen. While a green screen theoretically allows any backdrop, shifting the style too drastically risks alienating viewers: people naturally crave an exact blend of novelty and familiarity. This balance between holding onto the familiar and adopting the new leads directly into a bizarre, longstanding quirk of modern computing: Windows 10 will not permit anyone to name a file or folder "Con".

Anyone on a Windows machine can verify this restriction immediately. Opening File Explorer and trying to create a folder named `CON` (or saving an image as `con.jpg` or a document as `con.txt`) results in an immediate refusal from the operating system. While "Con" is a recognizable given name—often short for Cornelius, Conrad, Connor, or Konstantinos—Windows users are entirely unable to label a photograph after someone with that name. As Tom points out, "Con" is only one member of an entire blacklist of forbidden terms embedded within the operating system.

- Forbidden names in Windows include: `CON`, `AUX`, `PRN`, `LST`, `NUL`, `COM0` through `COM9`, and `LPT0` through `LPT9`. - The prohibition applies universally to folders, files, and filenames bearing extensions like `.txt` or `.jpg`. - The roots of this behavior trace back directly to MS-DOS in the 1980s, which itself inherited the concept from earlier operating systems.

---

[01:29](https://www.youtube.com/watch?v=bC6tngl0PTI&t=89s) Device Files, Drivers, and the MS-DOS Legacy

The origin of these blocked names lies in MS-DOS "device files," an architectural shortcut designed to let software interact with computer hardware—printers, keyboards, and auxiliary ports—without custom code for every peripheral. Rather than burdening every application developer with writing low-level hardware routines, the operating system relied on a device driver to handle the machinery. Programmers simply recycled their standard file reading and writing routines. Saving data into a reserved device file bypassed the storage disk entirely; the corresponding device driver intercepted the stream and did the heavy lifting. When hardware manufacturers released updated printers with complex new features, they bundled a new driver, ensuring older applications continued functioning untouched.

```mermaid flowchart TD accTitle: Routing of Standard Files versus Device Files in DOS accDescr: Diagram showing normal files saving to disk while reserved filenames are intercepted by device drivers.

subgraph UserAction ["User Command or Software Output"] CMD["Write File Command"] end

subgraph OSCheck ["DOS / Windows Path Handling"] CHECK{"Is Filename Reserved?<br>(CON, LPT1, etc.)"} end

subgraph Destinations ["Target Destination"] DISK[("Hard Disk / Storage")] DRIVER["Device Driver"] HARDWARE["Hardware Peripheral<br>(Console, Printer, COM Port)"] end

CMD --> CHECK CHECK -->|"Standard Name (e.g., report.txt)"| DISK CHECK -->|"Reserved Name (e.g., LPT1, CON)"| DRIVER DRIVER --> HARDWARE ```

This interaction worked directly from the command line. Entering `dir` displayed a directory listing on the screen; adding an angle bracket redirected that output to a file. Typing `dir > LPT1` instructed the system to bypass the hard drive and stream the directory text directly through the parallel port driver labeled LPT1, instantly printing the listing onto paper. Consequently, these names had to be permanently reserved to avoid collisions. Because early iterations of MS-DOS lacked subdirectories and dumped all files into a single flat heap, reserved names were protected globally. When hierarchical directories and folder structures were eventually introduced, the device files had to remain accessible from anywhere, permanently reserving those names across every folder on the system.

- `CON` represented the "console" (the display and keyboard interface). - `LPT1` targeted the parallel port typically hooked to a physical printer. - Windows 10 retains a direct lineage back through 1990s MS-DOS: hidden within modern Windows releases, one can still locate the Windows 3.1 file selection dialog box from 1992.

---

[04:19](https://www.youtube.com/watch?v=bC6tngl0PTI&t=259s) Backwards Compatibility, Console Gaming, and the 1900 Leap Year Bug

The persistence of these ancient reserved terms stems from backwards compatibility—the operating principle that upgrading a computer should not force an owner to trash existing peripherals or software. Tom observes that while the idea makes sense in theory, “The trouble is that different companies have very different definitions of ‘within reason’.” In console video gaming, backwards compatibility is fleeting. A modern PlayStation 4 will not play a physical PlayStation 1 disc because internal hardware has radically diverged. Achieving compatibility requires software emulation—either translating system calls on the fly or spinning up a virtual PlayStation in memory—which offers poor economic incentive when publishers can instead sell remastered editions of older titles.

Furthermore, backwards compatibility demands emulating quirks and outright flaws. Tom points out: “And if you want to emulate an earlier system, you'll need to emulate everything. Even the bugs.” A prime example is Microsoft Excel, which to this day treats February 29, 1900, as a valid date. While turn-of-the-century leap years must be divisible by 400 to count, Excel’s 1987 launch rival, Lotus 1-2-3, contained a bug that erroneously recognized 1900 as a leap year. Excel deliberately duplicated the glitch so spreadsheets could transition over seamlessly. Decades later, that calculation error remains part of Excel's formal specification, preserved to prevent breaking legacy financial spreadsheets across the globe.

---

[06:01](https://www.youtube.com/watch?v=bC6tngl0PTI&t=361s) The Philosophy of Compatibility: Microsoft vs. Apple

Microsoft built its enterprise empire around the promise of backwards compatibility. Corporate clients remain loyal to Windows precisely because operating system updates rarely disrupt established workflows; a Microsoft Word document generated three decades ago can still be opened in the latest version today. If an enterprise depends on proprietary software whose original vendor collapsed in the 1980s, and that software relies on polling a virtual device file named `CON`, Windows guarantees it still runs. Microsoft refuses to free up the filename `CON` because doing so could silently crash a mission-critical tool.

By contrast, companies like Apple lean heavily toward forced obsolescence and swift innovation, abandoning old paradigms by terminating legacy software support on macOS, locking older phones out of new apps, or physically stripping out hardware features like the headphone jack. Navigating technology requires striking a delicate compromise: changing nothing causes users to grow bored and leave, while changing everything breaks user habits and causes them to abandon the platform in frustration. While nobody expects a modern iPhone to accept punch cards, Tom concludes that Microsoft's conservative commitment to legacy preservation ensures our digital history and vintage documents remain accessible long after the original machines have vanished.

## Notable quotes > [04:19](https://www.youtube.com/watch?v=bC6tngl0PTI&t=259s) And if you want to emulate an earlier system, you'll need to emulate everything. Even the bugs. — Tom Scott

## Mentioned Apple, Centre for Computing History, Lotus 1-2-3, Microsoft, Microsoft Excel, Microsoft Word, MS-DOS, PlayStation 1, PlayStation 4, Sean Elliott, Tom Scott, Windows, Windows 10, Windows 3.1

## Video description The short answer is "backwards compatibility". The long answer is... well, it's the rest of this video.

MORE BASICS: https://www.youtube.com/playlist?list=PL96C35uN7xGLLeET0dOWaKHkAlPsrkcha

Written with Sean Elliott https://twitter.com/SeanMElliott/ Graphics by Willow Marler https://wmad.co.uk Audio mix by Graham Haerther https://haerther.net/

🟥 MORE FROM TOM: https://www.tomscott.com/ (you can find contact details and social links there too) ❓ LATERAL, free weekly podcast: https://lateralcast.com/ https://youtube.com/lateralcast/ 👥 THE TECHNICAL DIFFICULTIES: https://youtube.com/techdif

[Source](https://www.youtube.com/watch?v=bC6tngl0PTI)

中文简报

微软在Windows中禁用“CON”文件名以保护旧版代码 微软在Windows中保留了数十年前的MS-DOS设备文件限制,因为破坏向后兼容性可能会导致建于20世纪80年代的关键任务型企业软件崩溃。 Tom Scott解释道,Windows中禁止将文件或文件夹命名为“CON”的做法源于MS-DOS设备文件,这些文件曾充当软件与控制台、打印机等硬件外设之间的直接桥梁。由于早期DOS全局应用了这些保留名称,Windows至今仍在每个目录中阻止使用它们,以维持对旧版软件的严格向后兼容性。Scott指出,这种对兼容性的坚守甚至延伸到了保留数十年历史的软件缺陷——例如Microsoft Excel中对Lotus 1-2-3的1900年闰年错误的刻意保留——从而避免破坏老式文档和企业工具。视频将微软极为保守的保留理念与苹果快速的强制淘汰策略进行了对比,认为这些保留名称体现了技术创新与用户习惯之间的平衡。 Windows操作系统禁止用户将文件或文件夹命名为“CON”(或“con.txt”等变体),该限制适用于包含AUX、PRN、NUL、COM0-9以及LPT0-9在内的旧版术语黑名单。 (0:00) 这一限制起源于20世纪80年代的MS-DOS设备文件,该机制允许应用程序通过标准文件写入命令与硬件外设交互,相关操作由设备驱动程序拦截而非写入磁盘存储。 (1:29) 由于早期的MS-DOS没有子目录,设备文件名在整个操作系统中全局保留,这一架构规则在引入分层文件夹树后依然得以沿用。 (1:29) 微软刻意保留了这一限制及其他历史遗留特性——例如Excel特意复现1900年闰年错误——以确保运行数十年的企业软件能继续正常工作而不崩溃。 (4:19)

Source quotes

[4:19] Tom Scott: And if you want to emulate an earlier system, you'll need to emulate everything. Even the bugs.

Original transcript

[0:00] Normally, when I film these videos, [0:01] I’m at the Centre for Computing History in Cambridge. [0:04] Unfortunately, it is April 2020 as I record this, [0:07] and times being as they are, [0:08] I have to make do with a green-screen. [0:10] But why simulate that same location? [0:12] I could be anywhere with this, right? [0:14] Well, first, this would have been a great subject to film at the computer museum. [0:17] But also: if I change things too much, it’ll break the style, [0:20] and people don’t like change. [0:22] Actually, that’s not true: [0:24] people like just the right combination of novelty and familiarity. [0:29] On that note: did you know that you can’t name a file “Con” in Windows 10? [0:34] ...I promise that’s related. [0:39] If you’re running a Windows machine, try it right now. [0:41] Go to File Explorer, create a new folder, call it “Con”. C-O-N. [0:44] The system is not going to let you do it. [0:46] You also can’t name a text file “con.txt” or an image “con.jpg”. [0:50] Con is a first name, not a common English one, [0:52] but it’s a variant of Cornelius, Conrad, Connor, Konstantinos. [0:55] There are a good few people who go by the name Con. [0:59] So if you’re trying to save a photo of one of them [1:00] using their name on Windows, you can’t. [1:03] In fact, the system won't let you call a file or folder [1:06] CON, AUX, PRN, LST, COM0 through COM9, LPT0 through LPT9, or NUL. [1:11] And the reason for that goes back to MS-DOS, [1:14] one of the old white-text-on-a-black-screen command-lines [1:17] that were just how computers worked back in the 80s. [1:20] Actually, it goes back a bit further than that, [1:22] because all the versions of DOS were copying the idea from other places, [1:27] but let’s not go too deep into history. [1:29] In MS-DOS, Microsoft’s version of DOS, [1:32] all those little words are the names of “device files”. [1:36] They were a quick and clever way of letting programs on a computer interface with other stuff: [1:40] printers, keyboards, basically anything that you can plug in. [1:44] Rather than every program having to understand how to talk to every possible device, [1:48] that job was given to a “device driver”. [1:51] And that device driver… [1:53] drove the device. [1:55] So programmers didn’t have to worry about how every single type of printer worked. [1:59] Instead, they could reuse code that they already had for reading and writing files. [2:03] They’d just save whatever they wanted to print to the right “device file”; [2:07] it wouldn’t actually get written to disk, [2:09] instead the device driver would pick it up from there and do all the heavy lifting. [2:13] But the programmer didn’t have to care about how any of that worked: [2:17] as far as they were concerned, [2:19] they could just save a file and something else would deal with it. [2:22] And eventually, that meant that if a new printer came out [2:25] with a new, complicated, shiny feature on it... [2:27] the manufacturer would bundle a new driver with it. [2:31] All the old programs would still work, [2:33] they could just save stuff to the device file, same as they always did, [2:36] and the driver would deal with the messy real-world stuff. [2:39] And if you wanted a really, really basic way of using those device files, [2:43] you could do it with the command line itself. [2:46] If you typed in “dir”, you’d get a listing on screen of [2:49] whatever files were in the current directory or folder. [2:52] "D-i-r". They were called different things back then. [2:55] Add a redirect symbol, that angle bracket, [2:57] and instead of the listing going to the screen, it’d be saved to a file. [3:01] But if you tried to save it to a file called LPT1, [3:04] the system would spot that file name, and instead of going to the hard disk, [3:07] your listing would be sent to the device driver for the parallel port, [3:11] the one that was labelled LPT1 on the back of your computer. [3:14] The place where you probably have a printer plugged in. [3:17] So even knowing nothing about how the parallel port or printer worked, [3:21] you could just... print. [3:23] The side effect of that was: those file names were reserved. [3:26] You could not create a file called LPT1. [3:28] Or CON, which was short for “console”. [3:31] If you tried, you’d end up sending stuff to a printer or something instead. [3:34] Oh, and the really early versions of MS-DOS actually didn’t have the concept of directories, [3:40] or folders, as we now call them, [3:41] everything was just in one big heap of files. [3:44] When directories were added in, [3:46] those device file names still had to work everywhere, [3:49] which meant those file names had to be blocked everywhere too. [3:53] Same with con.txt, because file extensions were stored differently back then. [3:57] And there is a direct line from thirty-year-old MS-DOS to Windows 10. [4:02] Each version has built on the one before. [4:04] If you know where to look, [4:05] you can still find the Windows 3.1 file selection box from '92 in Windows 10 today, [4:10] and Windows 3.1 ran on top of MS-DOS. [4:13] Now, there aren’t many Windows 10 PCs out there with parallel ports: [4:17] but I bet there’s a few somewhere. [4:19] And Microsoft chooses to support them, [4:21] because of “backwards compatibility”. [4:23] Backwards compatibility means that you shouldn’t have to buy a new printer [4:26] just because you’ve got a new computer. [4:29] New stuff should also support old stuff, within reason. [4:34] The trouble is that different companies have very different definitions of “within reason”. [4:40] Video gamers are used to the idea of backwards compatibility: [4:43] sometimes games for older consoles will still work on modern ones. [4:46] But usually, it doesn’t last too long: [4:49] you can't play a Playstation 1 game on a Playstation 4. [4:51] At least, not by putting the disk in and expecting it to work. [4:54] The internal parts are so different that the designers would have to emulate the old system: [4:57] write a piece of software that translates between the old game and the new console, [5:01] changing the command calls on the fly, [5:02] or even just create an entire virtual Playstation 1 that sits in memory. [5:07] It can be done. [5:09] But the economic argument for backwards compatibility in games isn’t great: [5:12] if you support old games, [5:14] does that mean people won’t buy as many new ones? [5:16] Couldn't you just sell them a remastered version instead? [5:20] And if you want to emulate an earlier system, [5:22] you'll need to emulate everything. [5:25] Even the bugs. [5:26] To this day, Microsoft Excel thinks that the 29th of February, 1900 is a real day. [5:31] It isn’t. 1900 was not a leap year, [5:33] turn-of-the-century leap years are only leap years if they’re divisible by 400. [5:36] But when Excel first came out, in '87, [5:39] it was competing with a program called Lotus 1-2-3, [5:41] and that program had a bug where it got that leap year wrong. [5:44] So Excel copied that bug, for backwards compatibility. [5:47] And more than three decades later, that’s still the case, [5:50] it’s in the formal specifications, [5:51] it still gets that wrong because if Microsoft changes that buggy behaviour now, [5:56] they might silently break some really critical spreadsheet somewhere in the world. [6:01] Microsoft has always been the company of Backwards Compatibility. [6:04] It’s built into almost everything they do, [6:07] it’s part of the deal of why a lot of companies stick with Windows: [6:11] they will not need to change their workflow. [6:13] You can still open a Microsoft Word document from thirty years ago in the current version. [6:18] There are going to be folks out there, somewhere, [6:20] who still need to use a very old bit of software or hardware, [6:24] the sort of thing where the company that made it went bust decades ago, and for that to work, [6:30] it needs to read from a magical device file called CON. [6:32] So Microsoft, to this day, doesn’t let you save a file with that name. [6:36] Because it might break something. [6:38] It won’t last forever, of course. [6:39] At some stage, old systems do become too difficult or expensive to keep supporting. [6:44] Or maybe there's a direction that the company is trying to push their products in. [6:49] Mac and Apple users will know that all too well; [6:52] new versions of Mac OS often just don’t run old programs. [6:55] New apps, even simple ones, aren’t allowed on older phones. [6:58] Headphone jacks get removed. [7:00] People like a mixture of novelty and familiarity. [7:03] If you change nothing, people get bored and move on to something else. [7:07] If you change everything, people hate it, it breaks their workflow, [7:11] and they move on to something else. [7:13] Backwards compatibility, with reason, helps to find that balance. [7:17] So yes, I couldn’t film this video in the actual Centre for Computing History. [7:21] But, at least for a while, [7:23] I don’t have to go to an actual museum to run old applications and games. [7:27] Catalogues of software and the documents created with them can still be read, [7:31] even if the exact combination of hardware they were designed for isn’t available. [7:35] No-one’s expecting your iPhone to read punch cards, but sometimes, [7:39] a little backwards compatibility can be a good thing.