Why Developers Still Reach for Plain Text in 2025
Every few months a new note-taking or knowledge management app launches and developers talk about it for a week. Notion, Obsidian, Roam, Logseq, Mem, Bear, Craft. Many of these are genuinely good applications. And yet a consistent thread runs through developer communities: a folder of .txt files, managed with whatever text editor happens to be open, serving as the actual working notes system.
This isn't stubbornness or nostalgia. There are real reasons plain text holds up.
It works everywhere, always
A .txt file opens on any operating system, in any text editor, in any terminal. You can read it with cat. You can search it with grep. You can edit it in Vim over an SSH connection. You can open it in Notepad on Windows. You can read it on your phone in Files app. No app to install, no format to support, no dependency to maintain.
Proprietary app formats lock your content to a platform. When Evernote struggled years ago, users scrambled to export their notes. When apps change pricing models or shut down, your data is at risk of becoming inaccessible. Plain text has none of these failure modes.
It's grep-able
This sounds like a small thing but it fundamentally changes how you interact with a large collection of notes. Need to find every note that mentions a specific project name? One command:
grep -r "ProjectName" ~/Notes/Results in milliseconds, across hundreds of files. Try doing that search across Notion pages — you're clicking around a web interface, waiting for network requests, dealing with API rate limits.
It composes with everything
Plain text files play well with every Unix tool ever written. sort, awk, sed, wc, diff — all of these work naturally on text files. You can pipe output from one into another. You can write scripts that process your notes, generate summaries, or extract patterns. This is not possible with any proprietary format without going through an API.
Git works on it perfectly
Version control for plain text files is effortless. Git diffs are human-readable, showing exactly what changed line by line. Commits are instant. You can branch your notes, roll back to a previous version of a document, and see the entire history of any file. Git was built for text, and plain text is text.
Binary formats like .docx work with Git but the diffs are useless — you see that something changed, but not what. Plain text diffs tell you everything.
It's permanent
A .txt file you create today will be readable in 50 years. The format specification is simple enough that any computer can read it. ASCII and UTF-8 are foundational standards that are not going anywhere. DOCX, on the other hand, requires Microsoft's specification and a compatible reader. Even if that reader exists in 50 years, there's no guarantee it handles old files perfectly.
The actual tradeoff
Plain text doesn't give you backlinks, bidirectional references, tables, rich embeds, or a nice graphical interface. For a personal knowledge base with hundreds of interconnected notes, something like Obsidian genuinely does things a flat folder of .txt files can't. The developers who use plain text aren't claiming it's the answer to every problem — they're recognizing it as the right tool for working notes, quick captures, logs, and content that needs to last or be processed programmatically.
Plain text isn't a workaround or a compromise. For a lot of what developers actually do day-to-day — capturing commands, logging decisions, keeping project notes, writing scripts — it's the most capable format available. The apps are great for what they're great at. A folder of .txt files is great for everything else.