WriteFreely

Minimalist federated blogging platform

Social Networks ★ 5.3k stars Easy setup AGPL-3.0

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

WriteFreelyGhostHugo
NatureWriting platformPublishing platformStatic generator
RAM256 MB1 GB with MySQL0 at runtime
ThemesCSS onlyFull theme systemFull theme system
CommentsNoNativeVia Isso or similar
FederationNativeSince 2024, betaNo
Newsletter, members, paywallNoYesNo
Writing experienceBest of the threeGoodText 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