WriteFreely
WriteFreely handles writing software for starting a minimalist, federated blog — or an entire community as a self-hosted solution.
Self-hosted blogging, honestly reviewed. No engagement metrics, no platform lock-in — just words on your server.
TL;DR
- What it is: Open-source (AGPL-3.0) blogging platform built around a distraction-free Markdown editor, with ActivityPub federation so your posts can be followed from Mastodon [README][website].
- Who it’s for: Individual writers and small communities who want a clean publishing environment without engagement-bait mechanics, social platform lock-in, or per-seat SaaS pricing [1][2].
- Cost savings: Substack Pro and Ghost(Pro) Starter run $9–$25/mo and up. WriteFreely self-hosted runs on a VPS with 1 vCPU and 1GB RAM — roughly €5–8/mo — with no per-subscriber or per-post fees [2].
- Key strength: Genuinely minimal. No notifications feed, no likes, no claps, no algorithm pushing you to post more. You write. Readers read. That’s the entire product [website][1].
- Key weakness: The AGPL-3.0 license matters if you plan to embed or modify it commercially. The editor has almost no formatting toolbar. Federation works but is narrower than Ghost or Plume on ActivityPub capabilities. And at 5,105 GitHub stars, this is a smaller community than Ghost (48K+) — which means fewer plugins, fewer community guides, fewer people to ask when something breaks.
What is WriteFreely
WriteFreely is a blogging platform written in Go. It deploys as a single binary, runs on anything from a Raspberry Pi to a proper VPS, and uses either SQLite (for simple setups) or MySQL/MariaDB (for multi-user communities). You get a plain, auto-saving Markdown editor, the ability to run multiple blogs from one account, and ActivityPub federation so that anyone on Mastodon, Pleroma, or other ActivityPub-compatible platforms can follow your blog as if it were a social account [README][website].
The project was created by the same team behind Write.as, which is the commercial managed version. That relationship matters: WriteFreely is the open-source engine, Write.as is the hosted service built on top of it. The official hosting options at Write.as fund continued development of the open-source core [README].
At the time of this review, WriteFreely sits at 5,105 GitHub stars — modest by open-source standards, but the platform has a decade of production history. The team claims it powers more than 550,000 blogs on Write.as, which is a meaningful signal for stability [website]. Across the federated network, public trackers showed roughly 900 active WriteFreely instances and ~446,000 accounts on reporting servers as of early 2025 [2].
The positioning is specific and deliberately narrow: this is not a replacement for WordPress, Ghost, or a full CMS. It’s a replacement for writing-focused platforms like Medium, Substack, or Bear Blog where the platform’s interests eventually start competing with yours — pushing you toward their discovery features, their payment processing, their subscriber list.
Why people choose it
The common thread across people who land on WriteFreely is distrust of publishing platforms that use your content to build their own audiences. The specific complaints: Substack’s recommendation engine surfaces you until it doesn’t. Medium’s paywall split has shifted several times. Ghost is solid but adds friction for solo writers who don’t run newsletters. Blogger and WordPress.com have decades of accrued complexity [1][2].
WriteFreely’s answer is radical subtraction. There is no news feed, no notifications panel, no likes or bookmarks visible to authors, no engagement dashboard. The editor opens full-screen. You write. You publish. Readers can find you via ActivityPub or direct URL, and subscribe via RSS [website][1].
Federation is the real differentiator here against non-federated alternatives. When federation is enabled, your blog becomes a fediverse actor. Anyone on Mastodon can follow your blog’s account and get new posts in their home feed. They can boost (repost) your articles. They can reply to posts and those replies appear as comments on some WriteFreely setups [README][website]. This gives you distribution through existing social infrastructure without requiring your readers to join anything new.
Privacy-forward by default is the other selling point that appears consistently. WriteFreely collects minimal data. There’s no tracking pixel, no embedded analytics, no A/B testing of your headlines. Writers can run multiple blogs under one account — different pen names or purposes — without those associations being publicly exposed [README]. For journalists, pseudonymous writers, or anyone writing about sensitive topics, this matters practically.
The Go binary. This sounds like a technical detail until you’ve tried to install Ghost (Node.js, npm, MySQL, PM2, nginx — four moving parts that can all break) or WordPress (PHP-FPM, MySQL, nginx/Apache, plugin compatibility hell). WriteFreely deploys as a static binary. Download it, run it, it works [website][2]. One reviewer’s setup guide covers the full bare-metal path in a few paragraphs because there genuinely isn’t more to it [2].
Features
Writing experience:
- Plain, distraction-free editor with auto-save [README][website]
- Markdown formatting (headers, bold, italic, links, code blocks) [website/features]
- HTML also supported [website/features]
- Drafts — posts can be saved without publishing [README]
- Multiple blogs from a single account [README][website]
- Hashtag categorization for posts [README]
- Pinned posts become static pages (About, Contact, etc.) [README]
Federation and distribution:
- ActivityPub support — blogs appear as followable accounts on Mastodon and Pleroma [README][website]
- RSS feeds for every blog [1]
- OAuth 2.0 for bringing in users from external platforms [README]
Community / multi-user:
- Open or invite-only registration [1]
- Customizable community policies [1]
- Admin controls for multi-user instances [1]
- “Reader” view showing posts from all community members [README screenshots]
Internationalization:
- UI localized in 20+ languages [README]
- First-class support for non-Latin scripts and right-to-left languages [README]
SEO:
- SEO-friendly URLs [1]
- Metadata handled at the platform level
Infrastructure:
- Docker-ready (official images at
ghcr.io/writefreely/writefreely) [README] - SQLite for small/single-user or MySQL/MariaDB for larger communities [README][2]
- Runs on 1 vCPU, 1GB RAM for small sites [2]
- Available in Arch User Repository and Nanos Repository [README]
What’s absent is equally defining: no built-in image hosting, no comments system (relying on fediverse replies instead), no analytics dashboard, no plugin system, no theme marketplace, no newsletter/email-sending functionality.
Pricing: SaaS vs self-hosted math
Self-hosted (open source, AGPL-3.0):
- Software: $0 [README]
- VPS: €5–8/mo for 1 vCPU/2GB RAM (e.g., Hetzner Cloud) [2]
- Domain: ~$10–20/year [2]
- Storage/backups: €1–5/mo optional [2]
- Email relay (for password resets): small, Postmark commonly used [2]
- Total: roughly €7–15/mo all-in for a small community
Managed WriteFreely hosting (WriteFreely.host — official):
- Village: $10/mo (up to 100 blogs) [2]
- Town: $20/mo (200 blogs) [2]
- City: $30/mo (300 blogs) [2]
- Individual writers → pointed to Write.as
Write.as (official hosted platform):
- Pro: from $6/mo for an individual writer [2]
Cloud68.co (EU-based managed hosting):
- Starter: €49/mo (up to 15 writers) [1]
- Enterprise: on-demand pricing [1]
K&T Host (independent provider):
- From $3.75/mo [2]
For comparison:
- Ghost(Pro) Starter: $9/mo (paid annually), Substack takes 10% of paid subscriptions, Medium Partner Program has shifted payout structure multiple times
- Self-hosting Ghost costs similarly to WriteFreely on infrastructure but requires more RAM (Ghost recommends 1GB minimum and performs better with 2GB+) and the Node.js stack adds complexity
The math for a small writing community:
A 10-writer community on WriteFreely self-hosted: €5–8/mo VPS + €1–2/mo domain amortized = under €10/mo total. The same community on Cloud68.co managed: €49/mo Starter. The managed option costs 5x more but you get EU data center guarantees, admin hands-off operation, and proper backup SLAs [1][2]. For a solo writer running a personal blog, self-hosting on a shared VPS makes obvious financial sense. For a small nonprofit or editorial team that doesn’t have a sysadmin, the managed tiers are priced reasonably compared to proprietary alternatives.
Deployment reality check
The Go binary story holds up in practice [2]. A bare-metal install path:
- Provision a Linux VPS (1 vCPU, 1GB RAM is fine for small sites; 2GB safer) [2]
- Download the prebuilt binary for your architecture
- Run
writefreely config startandwritefreely keys generate - Choose SQLite (simpler, fine for under ~100 users) or MySQL/MariaDB [2]
- Initialize the database, start the binary, create your admin account
- Put Caddy or nginx in front for HTTPS (Let’s Encrypt handles the cert)
- Set up a systemd service for auto-start on boot
The Docker path is also documented — official images exist, and community Compose files handle app + MySQL + reverse proxy together [2][README].
What can go wrong:
Email configuration is a known friction point. Early versions (v0.15 and prior) only supported Mailgun for transactional email (password resets, invitations). More recent versions added SMTP configuration, but which options are available depends on your version — check the docs for the specific release you’re installing [2].
The AGPL-3.0 license has real implications. If you modify WriteFreely and run it as a service for others, AGPL requires you to publish those modifications. For a personal blog or internal company tool, this rarely matters. For an agency building client sites or a SaaS embedding it, you need to either keep your modifications open-source or negotiate a commercial license with the Write.as team.
Federation setup requires an additional step — enabling it in config and ensuring your reverse proxy handles ActivityPub’s /.well-known/ endpoints correctly. It’s not complicated but it’s not automatic.
Realistic time estimates:
- Technical user following the docs: 30–60 minutes to a running instance
- Non-technical founder following a community guide: 2–4 hours including domain and HTTPS
- No Linux experience at all: hire someone for a one-time setup, or use managed hosting
Pros and Cons
Pros
- Genuinely minimal. The entire platform philosophy is “get out of your way.” No notifications, no feeds, no engagement metrics for writers. The closest thing to this in the managed world is Bear Blog, which has a smaller feature set [website][1].
- Federation without configuration complexity. ActivityPub support means your readers can follow you from Mastodon without anyone creating a WriteFreely account. Real distribution through existing infrastructure [README][website].
- Lightweight infrastructure. Go binary on 1GB RAM is achievable. Ghost, WordPress, and even some static site generators with build pipelines demand more [website][2].
- Privacy-forward by design. Minimal data collection, multiple pen names from one account, no tracking built in [README].
- Decade of production history. 550,000+ blogs on Write.as, 900+ independent instances — this isn’t an abandoned experiment [website][2].
- 20+ languages with RTL support. Genuinely international, not an afterthought [README].
- Managed hosting options exist. If self-hosting is a blocker, there are official and third-party managed options at reasonable prices [1][2].
Cons
- AGPL-3.0, not MIT. The copyleft terms matter for any commercial or embedded use. This is a real restriction compared to MIT-licensed alternatives [README].
- 5,105 stars is modest. The community is smaller than Ghost (48K+ stars) or WordPress. Fewer plugins, fewer guides, fewer people to ask. If something breaks in an unusual way, you might be debugging alone.
- No plugin or theme system. You can customize CSS, but WriteFreely has nothing like Ghost’s theme marketplace or WordPress’s plugin ecosystem. What you see is largely what you get [website].
- No built-in image hosting. You’ll need an external service (write.as offers it; everyone else uses S3, Cloudflare R2, or a CDN) for post images.
- No email newsletter. WriteFreely has RSS and ActivityPub. It does not send email newsletters. If email distribution matters for your writing, this is a category miss — Ghost’s newsletter functionality is unmatched in open-source [website].
- Editor is very plain. The distraction-free design cuts both ways. There’s no toolbar, no drag-and-drop media, no inline image embedding without Markdown [website/features].
- Limited third-party reviews. The platform is mature but under-reviewed. Outside of managed hosting provider pages and a handful of technical blogs, there’s little independent analysis to draw on — which itself signals a smaller adoption surface than competitors.
Who should use this / who shouldn’t
Use WriteFreely if:
- You want a personal or small-community blog that federates with Mastodon out of the box, without building a social media strategy around it.
- You’re done with platforms that treat your content as engagement material and you want a clean reading/writing experience above all else.
- You have basic Linux skills (or are willing to follow a guide once) and a $6/mo VPS budget.
- You’re writing under a pen name or on a sensitive topic and the privacy-by-design approach matters to you.
- You want the managed option without ceding data to US infrastructure — Cloud68.co’s EU-hosted WriteFreely is a real option [1].
Skip WriteFreely (use Ghost instead) if:
- You want to monetize your writing through paid memberships and newsletter subscriptions. Ghost has this built in; WriteFreely doesn’t.
- You need a theme marketplace, custom templates, and a proper editorial workflow with multiple roles (editor, contributor, author).
- You want analytics beyond “post was published.”
Skip WriteFreely (stay on Substack) if:
- Distribution through Substack’s recommendation network is actively driving your subscriber growth and you’d lose that cold-start advantage.
- You don’t want to manage any infrastructure and can’t justify even managed hosting costs.
Skip WriteFreely (use WordPress) if:
- You need plugins — e-commerce, SEO optimization, membership gating, forums, event calendars. WriteFreely has none of this.
Skip WriteFreely (use Plume) if:
- You want ActivityPub federation with more social features (comments, likes as fediverse interactions, richer profiles). Plume is WriteFreely’s more socially-featured cousin in the ActivityPub writing space.
Alternatives worth considering
- Ghost — the strongest alternative for serious writers. Newsletter, membership, paid subscriptions, themes, analytics. Open source (MIT) core. Much heavier to self-host (Node.js, more RAM). Managed Ghost(Pro) from $9/mo. The tool if you’re building an audience business, not just publishing.
- WordPress — still powers ~43% of the web. Plugin ecosystem is unmatched. Self-hosting is well-documented. Complexity is real; the maintenance burden grows with every plugin you add.
- Plume — ActivityPub-first blog platform. More social features than WriteFreely (articles as fediverse objects with proper interactions). Smaller community, less polished.
- Micro.blog — hosted, minimal, ActivityPub-connected. $5/mo managed, no self-hosting. Good for short-form microblogging that also connects to Mastodon. Less suitable for longer essays.
- Bear Blog — even more minimal than WriteFreely. No federation, no community features. $9/year managed only. For the purist solo blogger who values simplicity above all else.
- Mataroa — focused purely on writing, with email newsletter built in and minimal design. Managed-only at €9/year. Federation not supported.
- Hashnode — developer-focused blogging, free, no self-hosting. Good for technical writing if you’re in the dev community ecosystem.
The honest comparison tree: if federation to Mastodon matters → WriteFreely or Plume. If newsletters and monetization matter → Ghost. If you just want clean hosted writing with no infrastructure → Bear Blog or Mataroa.
Bottom line
WriteFreely is exactly what it says on the box: a minimalist, federated blogging platform made for writers. It doesn’t try to become a marketing platform, a community tool, or a monetization engine. That narrowness is its strength and its limitation. The federation via ActivityPub is genuinely useful — your blog becomes a first-class citizen of the fediverse without asking your readers to change how they follow content. The Go binary deployment is as clean as server-side software gets. And for a solo writer or a small community who wants to get off Substack or Medium without dealing with Ghost’s heavier stack, the infrastructure math is compelling: under €10/mo all-in on a Hetzner VPS versus $9–25/mo managed with far fewer controls.
The ceiling is also real: no newsletters, no themes, no plugins, no image hosting, a smaller community than Ghost or WordPress, and the AGPL-3.0 license to navigate if you have commercial plans. If you’ve already decided you need any of those things, WriteFreely isn’t the tool. But if you haven’t — if you just want a clean place to write that federates with the social web and doesn’t cost what proprietary platforms charge — it’s worth 30 minutes on a VPS to find out.
Sources
- Cloud68.co — WriteFreely Managed Hosting page (managed hosting plans, features list, EU pricing). https://cloud68.co/managed-hosting/writefreely
- Rost Glukhov — “Writefreely Federated Blogging Platform - selfhosting vs managed costs” (October 2025, glukhov.org). https://www.glukhov.org/post/2025/10/writefreely-selfhosting-vs-managed-costs/
Primary sources:
- GitHub repository and README: https://github.com/writefreely/writefreely (5,105 stars, AGPL-3.0)
- Official website: https://writefreely.org
- Features page: https://writefreely.org/features/
- About page: https://writefreely.org/about
Replaces
Related Content Management Tools
View all 124 →Strapi
72KThe leading open-source headless CMS — design content models, generate REST and GraphQL APIs instantly, and manage content for any frontend framework.
Ghost
52KProfessional publishing platform with built-in newsletters, memberships, and paid subscriptions. Used by Platformer, 404Media, The Browser, and thousands more.
Payload CMS
41KPayload is a Next.js-native headless CMS and application framework that gives developers full TypeScript control over content management with zero vendor lock-in.
Reactive Resume
36KA free and open-source resume builder that simplifies the process of creating, updating, and sharing your resume.
Directus
35KBuilt for developers who need more than a CMS. Manage complex content, handle digital assets, and control permissions through an intuitive Studio.
WordPress
21KThe world's most widely used content management system powering blogs, business sites, and e-commerce stores.