User guide — all chapters
The composer
Tap + and you get a title field and a blank page. Type. The body is plain text with light formatting. There are no blocks to drag and no panels to open before you can start a sentence.
- Everything saves itself. Your title and body are written about two seconds after you stop typing, and so is everything in Details. Save (⌘S) writes it all at once and reads Saved for a moment, but you rarely need it.
- Cancel on a brand-new post offers to discard it. It means it: the draft and its photos are deleted.
- Preview shows the post as it will appear on your site, in your theme. Web links in the preview open in your browser, so the preview stays where it is.
- The composer shows a word count. It counts words as a reader would, so a placed photo isn’t one.
- A post’s Status, draft or published, is in Details on every device, and the Save button reads Save Draft while a post is a draft. Drafts are never published. Post details has the rest.
Once a list holds more than ten posts, a filter field appears at its top. Type a word and the list narrows to posts whose title or text contains it.
Formatting
A formatting bar holds the controls; on iPhone and iPad it sits above the keyboard. Each applies to the selection or, apart from Link, to what you type next if nothing is selected.
| Control | What it does |
|---|---|
| Bold · Italic | Emphasis. Both can apply at once. ⌘B and ⌘I do the same on a Mac, or an iPad with a keyboard. |
| Link | Select some text first. It asks for a web address, or lets you choose Link to a Post…. Select linked text and press it again to remove the link. ⌘K. |
| Heading 2 · Heading 3 | Turn every line the selection touches into a heading. Tap again to turn it back. Return at the end of a heading starts an ordinary paragraph. |
| Quote | Makes the touched lines a block quote. |
| Aa | More formatting: Code, Strikethrough, Divider, Footnote, Read More Break, Table of Contents and Text Size. |
A post’s title is the page’s one main heading, so headings in the body start a level below it.
Footnotes, dividers and breaks
- Footnote puts a numbered mark where the cursor is and a line at the foot of the post for its text. Footnotes are numbered for you in the order they are first mentioned, gathered at the foot of the published post, and each links back to its place.
- Divider adds a horizontal line between sections.
- Read More Break marks where the post’s excerpt ends. Your home page and archives show the post down to there, whole, and then “Read more”. Feeds carry the whole post, and use the words above the break as its summary. It is the same `
` that Hugo and WordPress use, so imported posts keep theirs.
- Table of Contents puts an outline of the post’s headings where the cursor is, each linking to its section. Useful for long posts.
Lists as you type
Start a line with - for a bulleted list or 1. for a numbered one. Press Return and the next item starts for you, with numbered lists counting on. Press Return on an empty item and the list ends. Long items wrap neatly under their own text.
Markdown, if you want it
Underneath, a post is plain text with a small, familiar subset of Markdown. You can type it instead of using the bar.
**bold**,*italic*and***both***~~struck through~~and`code`[text](https://example.com)for a link. A bare web address is linked for you.##for a heading and###for a smaller one. Typed at the start of a line, they turn into headings as you write.>for a quote, which also converts as you type-,*or+for a bulleted list, and1.for a numbered one---on its own line for a divider[^1]for a footnote mark, and[^1]: the noteon a line of its own for its text- Three backticks on a line to open a code block, and three more to close it
\*,\~and\\when you want a literal asterisk, tilde or backslash
Formatting you apply from the bar shows styled as you write. List markers, dividers, footnotes and code blocks stay as you typed them in the editor, and render properly in the preview and on the published page. Nothing is lost when you edit a post again later.
Code in colour
Name the language after a code block’s opening backticks, such as ```swift, and the block is coloured when your site is built: keywords, strings, comments and numbers, in tints of your theme’s own text colour, so it suits light and dark themes alike. No script is added to your site to do it. A block with no language looks as it always did.
Selfish knows Swift, JavaScript and TypeScript, Python, Ruby, Go, Rust, Java, Kotlin, C, C++, Objective-C, C#, PHP, shell, SQL, JSON, YAML, TOML and INI, Dockerfile, HTML and XML, CSS, and diffs.
Links to your other posts
Select some text, tap the link button and choose Link to a Post…. Pick from the site’s posts and pages; a search field narrows them by title.
The link is kept by the post, not by its address, so it follows the post if you change its slug. A link to a draft shows as plain text on your site until that post is published, so a reader never meets a dead link. Exports write these links as links between the Markdown files, and restoring or duplicating a site keeps them.
Paste
Paste does the sensible thing with what is on the clipboard.
- A web address pasted over selected text makes that text a link.
- Text copied from a web page or Google Docs keeps its bold, italic, links, headings, lists, code and crossed-out words. Text from Pages or Notes keeps its bold, italic, links, code and crossed-out words.
- Several lines of code copied from a code editor become a code block. A single line becomes inline code.
- Markdown shows formatted straight away.
- A copied photo is added to the post, resized and stripped of its location like any other.
On the Mac, anything else pastes as plain text, so formatting the post couldn’t keep never appears and then vanishes.
Find and replace, and text size
Find and replace is in the composer: Edit → Find (⌘F) on the Mac, and Find in the edit menu that pops up over the text on iPhone and iPad.
Aa → Text Size makes the editor’s text bigger or smaller. On the Mac it is View → Make Text Bigger (⌘+) and Make Text Smaller (⌘−). On iPhone and iPad the editor also follows the system’s text size. Only how the editor looks changes. Your site doesn’t.
Notes
Leave a post’s title empty and it is a note: short, as on a social feed.
- Its page has no empty heading.
- Your home page shows it whole, with its date as the link.
- Feeds carry it without a title.
- A new note’s address is when you wrote it, like
posts/2026-10-02-0930.html.
Wherever something needs a name for it, such as the browser tab, the archive and the app’s own lists, Selfish uses its opening words. The composer’s preview shows a note under an “Untitled” heading that its published page doesn’t have.
Earlier versions
Details → History → Earlier Versions… lists versions of the post. This device keeps one when you open a post, every ten minutes while you write, and when you close it, up to a hundred for each post.
Open one to read it, and choose Restore This Version to bring it back. What is there now is kept as a version first, so a restore can be undone. Versions stay on the device you wrote on. They don’t sync, and they are never published.
Suggestions, written on your device
Where Apple Intelligence is switched on, Details offers Suggest beside the description and the tags. It writes a description for search results and link previews, and picks which of the site’s existing tags fit the post. Apple’s on-device model does the work. Nothing about the post leaves your device, and you can change whatever it suggests.
Where Apple Intelligence isn’t available, the buttons simply aren’t shown.
On the Mac: a post in its own window
Choose Open in New Window from a post’s menu, or File → Open in New Window (⌘O) for the selected post, to write in one window while you look things up in another. A post is only ever open in one editor, so the main window shows where it is rather than a second copy.