A quiet place to write.
A calm, focused place to think clearly and produce work that is truly your own. Rich formatting and publish-ready output for every kind of writing, with nothing in the way of the words.
Requires macOS 14 or later
A place for original minds
When anyone can generate a thousand fluent sentences in a moment, fluency stops being worth much. What still matters, and matters more than ever, is an original thought: something authentic that only you would have said.
Penna is a place for the people who still want to do that work. You think it through one sentence at a time, and somewhere in the second and third attempt you find out what you actually mean, and the detour turns out to be the work itself.
A quiet place to think, with help close by
Penna gives you a calm, undistracted space where writing is the only thing in front of you. Nothing pings, nudges, or pulls you away, so you can get your thoughts down clearly.
When you want it, help is close at hand: research, facts you can check, and a careful proofread, all in the margin. The one thing Penna will not do is write for you; the thinking, and the words, stay yours.
Any format you need
From a loose note to a piece ready to publish, Penna gives you the full range of formatting, rendered on the page as you type. This passage is set in the app itself, and every style below is doing the very job it describes.
Headings hold the structure
Titles and subheads give a long piece its shape, so a reader can find their way through it. Inline, you can set a phrase in bold for weight, slip into italic for emphasis, or place a link exactly where a reference belongs.
A block quote steps back from the measure and sets another voice apart from your own.
Lists keep related points in order, whether or not sequence matters:
- Bulleted points, for things that sit side by side
- Room to nest a thought inside another
- Numbered steps, when order is the point
- Followed one after the next
A run of inline code holds a term in monospace, and a fenced code block keeps a whole passage exact:
def compose(thought):
for draft in range(3):
thought = revise(thought)
return thought # the long way
Tables line facts up in rows and columns, ruled with the same single hairline as the rest of the app:
| Format | Reach for it when |
| Block quote | Another voice enters the page |
| Code block | A passage must stay exact |
| Divider | One movement ends and another begins |
A horizontal rule marks a clean break between one movement and the next, without a heading to carry it.
Yours, saved, and private
Every word is saved the instant you type it, straight to your Mac, so your work is always there and exactly as you left it.
Your documents are plain files you own, kept on your machine. Local-first and private by default: no account, no cloud copy, no analytics, no telemetry.