Just Fucking Use Plaintext.

If your data needs a proprietary UI, a license server, and a prayer to open, it’s not “organized.” It’s hostage.

✅ grepable ✅ diffable ✅ future-proof ✅ editor-agnostic ✅ boring (a compliment)
The rule:
If a text editor can’t open it, you don’t own it.

What plaintext buys you

What you’re probably using instead

A “smart” document format

It stores invisible state, breaks on export, and needs its own app. The opposite of durable.

A proprietary note-taking app

Free until it isn’t. Search works until it doesn’t. Export exists as a concept.

Binary configs

You can’t diff them. You can’t merge them. You can only fear them.

“Visual” workflows

They look nice in demos and collapse under version control.


Plaintext is not primitive

Plaintext does not mean “unsophisticated.” It means the sophistication is visible.

Examples (notice how boring this is)

Notes

# meeting-notes.md

- Decision: ship Friday
- Risk: database migration
- Owner: Alex

Follow-up next week.

Config

# app.toml
port = 8080
log_level = "info"
max_connections = 100

Data

user_id,email,created_at
42,user@example.com,2025-01-01
43,another@example.com,2025-01-02

Choose your excuse

“But it’s not user-friendly.”

Skill issue. Editors exist. GUIs can be built on top of text. You cannot build durability on top of proprietary blobs.

“But we need rich formatting.”

You need headings, lists, links, and emphasis. Markdown solved this before your app existed.

“But we’ll migrate later.”

No you won’t. You’ll discover the export is lossy and call it “technical debt.”

“But this tool is more powerful.”

If the power disappears when the app does, it was never power.

If your workflow collapses when a single app goes away, your workflow was fake.

Just fucking use plaintext.