WriteFreely
Minimalist federated blogging platform
WriteFreely is a free, open-source, federated blogging platform written in Go. It focuses on distraction-free writing and publishes posts that can federate with the fediverse.
Key features
- Distraction-free writing
- ActivityPub federation
- Multiple blogs per user
- Markdown support
Pros & cons
Strengths
- Clean minimalist design
- Lightweight to host
Trade-offs
- Few social features
- Sparse theming options
WriteFreely replaces
Last reviewed Sep 13, 2026 · 832 words
WriteFreely is not a blog engine with fewer features; it is a different thing that happens to publish posts. There are no themes worth the name, no plugins, no comments and no page builder. What you get is a text box, Markdown, a page that loads in under 100 ms, and a fediverse handle so that people on Mastodon can follow your blog and see each post in their timeline. If you want a site, run Ghost or Hugo. If you want to write and be read, with the least possible software between the two, WriteFreely is a 256 MB Go binary at 5,243 GitHub stars that has been doing exactly that since 2018.
Single-user or multi-user is the first fork in the road
The config file, config.ini, is generated interactively:
writefreely config start
writefreely keys generate
writefreely db init
The first command asks the question that shapes everything: single-user mode gives you one blog at the root of the domain with a login page and nothing else, while multi-user mode gives you an instance where people register, each gets up to N blogs, and the front page becomes a reader feed of public posts. Single-user is the personal blog. Multi-user is a small writing community, a family, or a club, and it comes with moderation you now own. Both are AGPL-3.0 and both run identically; the difference is single_user = true under [app]. The Docker image and the bare binary read the same file, and the binary listens on port 8080 by default. Create the admin account with the CLI's user-creation command before opening the port; on a multi-user instance also decide whether open_registration is true, because the default lets anyone sign up.
What federation actually does
Set federation = true, serve over HTTPS (ActivityPub will not work without it), and each blog becomes an actor at @blogname@yourdomain. When someone on Mastodon or Akkoma follows it, new posts arrive in their home timeline as full text, not links. Replies from the fediverse do not appear on your blog, since there are no comments; they exist on the follower's server as replies to the post. Boosts and favourites are counted if you turn on federated stats, which I do not, because the point of the tool is to not watch numbers. Federation is also how a reader on Lemmy or Pixelfed can subscribe without RSS, though RSS is there too at /feed/.
The reason to care is reach without a platform. A blog on Medium has readers because Medium puts it in front of people; a static site has readers only if you promote it. A federated blog gets followed like an account, and a good post gets boosted like a toot. It is a small audience mechanism, but it is one you own.
Database and theming, and how little of each there is
SQLite is the default and correct for a single blog; MySQL is supported for multi-user instances that grow. Backups are the writefreely.db file plus config.ini and the keys directory, and the last one matters because it holds the signing keys other servers know your blog by; lose it and your federated identity is gone. Theming is custom CSS per blog and a choice of a serif or sans-serif base. That is the whole list. People who need a custom layout, a landing page or a newsletter form have chosen the wrong tool, and the catalogue's "sparse theming options" is being polite.
Against Ghost and Hugo
| WriteFreely | Ghost | Hugo | |
|---|---|---|---|
| Nature | Writing platform | Publishing platform | Static generator |
| RAM | 256 MB | 1 GB with MySQL | 0 at runtime |
| Themes | CSS only | Full theme system | Full theme system |
| Comments | No | Native | Via Isso or similar |
| Federation | Native | Since 2024, beta | No |
| Newsletter, members, paywall | No | Yes | No |
| Writing experience | Best of the three | Good | Text editor |
Ghost is the bigger project and the safer pick for anyone with any ambition beyond writing, and it now has its own ActivityPub work, so the federation gap is narrowing. Hugo is for people who like build steps. WriteFreely holds the middle: a running server, but one with nothing to configure once it is up. The social category and the blogging category hold the neighbours on each side.
What I'd do
Single-user mode, SQLite, federation on, behind Caddy for the certificate, at a domain that will still be yours in 10 years, because your fediverse handle is tied to it. Back up the database, the config and the keys directory together. Write. If in six months you want members, comments or a design, migrate to Ghost; the posts export as plain text and nothing is lost. If you are still just writing, WriteFreely is the least software that has ever stood between a paragraph and a reader, and it is the one I keep coming back to.
Compare WriteFreely
9 head-to-head comparisons.
Similar social networks apps
Mastodon
Social NetworksDecentralized open-source microblogging server
Replaces Twitter, X
Discourse
Social NetworksModern open-source community discussion platform
Replaces phpBB, Reddit
Invidious
Social NetworksAlternative front-end to YouTube
Replaces YouTube
NodeBB
Social NetworksNode.js powered forum with real-time updates
Replaces phpBB, Discourse
Lemmy
Social NetworksFederated link aggregator and forum
Replaces Reddit
Nitter
Social NetworksAlternative front-end for Twitter that respects your privacy
Replaces X