A clean, Markdown-based publishing platform made for writers. Write together and build a community. https://writefreely.org
  • JavaScript 73.3%
  • Go 18.1%
  • Go Template 6.5%
  • Less 1.7%
  • Makefile 0.2%
  • Other 0.1%
Find a file
2026-08-10 20:48:54 -07:00
.github Bump docker/login-action from 4.3.0 to 4.6.0 2026-07-29 22:22:18 +00:00
appstats move tool from gogs into appstats pkg 2019-09-13 08:22:38 -07:00
author Run goimports on project 2026-01-22 15:07:13 -05:00
cmd/writefreely Move users subcommand funcs from user.go to users.go 2026-07-18 13:51:11 -04:00
config Merge pull request #1679 from mpldr-pulls/develop 2026-08-03 14:23:15 -04:00
db Run goimports on project 2026-01-22 15:07:13 -05:00
key Change copyright notices to Musing Studio LLC 2022-11-10 23:49:16 -05:00
keys Move key generation to app from keys.sh 2018-11-11 17:52:24 -05:00
less Fix icons for Safari and small icons in Chrome 2026-08-09 22:38:45 -07:00
mailer Add tests for the mailer pkg 2026-08-09 12:52:54 -07:00
migrations Fix character set for post signature column on MySQL / MariaDB instances 2026-02-13 16:37:06 -05:00
oauth Run gofmt on files that need it 2021-06-09 14:22:13 -04:00
page Show indicator on Admin Dashboard links when update is available 2026-07-20 13:18:38 -04:00
pages Limit password to max characters supported by bcrypt in UI 2026-05-15 19:09:58 -04:00
parse Run goimports on project 2026-01-22 15:07:13 -05:00
prose Remove "Enter" copy above email sub box in editor 2026-04-02 17:45:07 -04:00
scripts spelling: modified 2023-03-05 02:44:02 -05:00
spam Run goimports on project 2026-01-22 15:07:13 -05:00
static Remove unused Material Icon font files 2026-08-09 22:39:59 -07:00
templates Merge branch 'develop' into advisory-fix-1 2026-08-10 12:46:28 -07:00
testdata Add Cache-Control header 2020-09-04 22:03:42 +02:00
.dockerignore Include .git context in Docker build for UI version number 2024-02-06 14:31:18 -06:00
.editorconfig Add editorconfig 2022-05-11 13:11:22 -04:00
.gitignore Support custom instance-level stylesheet 2022-01-31 22:18:52 -05:00
.travis.yml Bump Travis build to Go 1.13 2020-01-07 16:27:25 -05:00
account.go Fix unquoted From address and phantom recipient in mailer 2026-08-07 09:41:01 -07:00
account_import.go Fix CSRF vulnerability (GHSA-mp2f-3fq8-r9vj) on /me endpoints 2026-08-10 14:28:42 -04:00
activitypub.go Merge pull request #1437 from blacklight/fix/activitypub-payloads 2026-02-13 16:50:40 -05:00
activitypub_test.go fixes issue #100 - can't follow from pubgate 2019-05-21 07:02:35 -07:00
admin.go Show indicator on Admin Dashboard links when update is available 2026-07-20 13:18:38 -04:00
app.go Merge branch 'develop' into advisory-fix-1 2026-08-10 12:46:28 -07:00
auth.go Change copyright notices to Musing Studio LLC 2022-11-10 23:49:16 -05:00
AUTHORS.md Add @nkoehring to AUTHORS 2019-01-24 17:24:07 -05:00
cache.go Change copyright notices to Musing Studio LLC 2022-11-10 23:49:16 -05:00
collections.go Fix collection / post rendering in Chorus mode 2026-08-07 08:43:54 -07:00
CONTRIBUTING.md Update Phabricator URL in docs and PR template 2024-08-13 14:40:24 -04:00
database-lib.go Change copyright notices to Musing Studio LLC 2022-11-10 23:49:16 -05:00
database-no-sqlite.go Change copyright notices to Musing Studio LLC 2022-11-10 23:49:16 -05:00
database-sqlite.go Run goimports on project 2026-01-22 15:07:13 -05:00
database.go Merge commit from fork 2026-08-10 13:43:39 -07:00
database_activitypub.go Run goimports on project 2026-01-22 15:07:13 -05:00
database_test.go Run goimports on project 2026-01-22 15:07:13 -05:00
docker-compose.prod.yml Create Dockerfile & sample docker-compose.yml for production build 2024-09-02 12:45:55 +10:00
docker-compose.yml Update writefreely-web image 2021-02-01 12:01:49 -05:00
docker-setup.sh Improved the Docker dev workflow slightly. 2018-11-16 14:53:42 -06:00
Dockerfile Bump Docker to Go 1.25 2026-03-04 13:30:41 -05:00
Dockerfile.prod Create Dockerfile & sample docker-compose.yml for production build 2024-09-02 12:45:55 +10:00
email.go Fix unquoted From address and phantom recipient in mailer 2026-08-07 09:41:01 -07:00
errors.go Support exporting email subscribers list 2025-02-18 18:42:46 -05:00
export.go Remove redundant Collection information on posts in full export 2026-02-20 12:22:40 -05:00
feed.go Add Archive page for all blogs 2024-10-22 15:56:14 -04:00
go.mod Fix CSRF vulnerability (GHSA-mp2f-3fq8-r9vj) on /me endpoints 2026-08-10 14:28:42 -04:00
go.sum Bump github.com/writeas/web-core from 1.7.0 to 1.8.0 2026-08-03 18:00:34 +00:00
gopher.go Add Archive page for all blogs 2024-10-22 15:56:14 -04:00
handle.go Correctly respond to application/ld+json requests, part 2 2023-09-26 14:46:35 -04:00
hostmeta.go Change copyright notices to Musing Studio LLC 2022-11-10 23:49:16 -05:00
instance.go Change copyright notices to Musing Studio LLC 2022-11-10 23:49:16 -05:00
invites.go Fix CSRF vulnerability (GHSA-mp2f-3fq8-r9vj) on /me endpoints 2026-08-10 14:28:42 -04:00
jobs.go Run goimports on project 2026-01-22 15:07:13 -05:00
keys.go Run goimports on project 2026-01-22 15:07:13 -05:00
LICENSE Use AGPL 2018-10-29 10:06:45 -04:00
main_test.go Run goimports on project 2026-01-22 15:07:13 -05:00
Makefile Bump Go to 1.25 for cross-compile 2026-07-17 18:47:41 -04:00
monetization.go Run goimports on project 2026-01-22 15:07:13 -05:00
nodeinfo.go Fix nodeinfo Active User stats for SQLite-backed instances 2026-07-18 11:51:03 -04:00
oauth.go chore: remove refs to deprecated io/ioutil 2023-07-10 17:55:04 +08:00
oauth_generic.go make OAuth Adapter RFC-compliant 2026-06-21 00:51:26 +02:00
oauth_gitea.go Run goimports on project 2026-01-22 15:07:13 -05:00
oauth_gitlab.go Use consistent server User-Agent across application 2020-08-18 12:22:04 -04:00
oauth_signup.go Run goimports on project 2026-01-22 15:07:13 -05:00
oauth_slack.go Run goimports on project 2026-01-22 15:07:13 -05:00
oauth_test.go Run goimports on project 2026-01-22 15:07:13 -05:00
oauth_writeas.go Use consistent server User-Agent across application 2020-08-18 12:22:04 -04:00
ossl_legacy.cnf fix Makefile and Dockerfile to build on latest go versions 2023-01-20 11:36:11 +00:00
pad.go Redirect Draft non-owners from post edit and metadata pages 2026-06-30 17:24:04 -04:00
pages.go Run goimports on project 2026-01-22 15:07:13 -05:00
postrender.go Ensure posts never duplicate signature in ActivityPub data 2026-08-07 09:06:38 -07:00
postrender_test.go Change copyright notices to Musing Studio LLC 2022-11-10 23:49:16 -05:00
posts.go Ensure only blog owner can pin a blog's posts 2026-08-10 16:14:01 -04:00
posts_test.go Change copyright notices to Musing Studio LLC 2022-11-10 23:49:16 -05:00
read.go Redirect Reader feed with Permanent 301, not Found 302 2026-04-05 11:10:08 -04:00
README.md Remove outdated goreportcard.com badge from README 2026-08-09 14:13:09 -07:00
request.go Correctly respond to application/ld+json requests 2023-09-21 16:16:57 -04:00
routes.go Merge branch 'develop' into advisory-fix-1 2026-08-10 12:46:28 -07:00
routes_test.go Add Cache-Control header 2020-09-04 22:03:42 +02:00
schema.sql Set up migrations table on initial setup 2019-01-24 17:08:08 -05:00
SECURITY.md Update security vulnerability reporting info 2026-06-30 18:10:53 -04:00
semver.go add update checks 2019-08-29 15:30:27 -07:00
session.go Run goimports on project 2026-01-22 15:07:13 -05:00
signup_test.go Add tests around signing up 2026-08-09 12:52:21 -07:00
sitemap.go Add Archive page for all blogs 2024-10-22 15:56:14 -04:00
sqlite.sql Set up migrations table on initial setup 2019-01-24 17:08:08 -05:00
template_render_test.go Add template rendering tests for /me pages 2026-08-09 12:55:04 -07:00
templates.go Add Archive page for all blogs 2024-10-22 15:56:14 -04:00
unregisteredusers.go Return applicable error for expired invite links on /auth/signup 2026-08-09 10:10:28 -07:00
updates.go Run goimports on project 2026-01-22 15:07:13 -05:00
updates_test.go Rename ReleaseURL() to ReleaseNotesURL() 2020-02-14 16:13:54 -05:00
users.go Include admins in users list command 2026-07-18 13:57:39 -04:00
webfinger.go chore: remove refs to deprecated io/ioutil 2023-07-10 17:55:04 +08:00

 

WriteFreely


Latest release Build container image, publish as GitHub-package

 

WriteFreely is a clean, minimalist publishing platform made for writers. Start a blog, share knowledge within your organization, or build a community around the shared act of writing.

Screenshot of the Reader view of a WriteFreely instance, pen.writefree.ly.

Try the writing experience

Find an instance

Features

Made for writing

Built on a plain, auto-saving editor, WriteFreely gives you a distraction-free writing environment. Once published, your words are front and center, and easy to read.

A connected community

Start writing together, publicly or privately. Connect with other communities, whether running WriteFreely, Plume, or other ActivityPub-powered software. And bring members on board from your existing platforms, thanks to our OAuth 2.0 support.

Intuitive organization

Categorize articles with hashtags, and create static pages from normal posts by pinning them to your blog. Create draft posts and publish to multiple blogs from one account.

International

Blog elements are localized in 20+ languages, and WriteFreely includes first-class support for non-Latin and right-to-left (RTL) script languages.

Private by default

WriteFreely collects minimal data, and never publicizes more than a writer consents to. Writers can seamlessly create multiple blogs from a single account for different pen names or purposes without publicly revealing their association.

Write.as

The quickest way to deploy WriteFreely is with Write.as, a hosted service from the team behind WriteFreely. You'll get fully-managed installation, backup, upgrades, and maintenance — and directly fund our free software work ❤️

Learn more on Write.as.

Quick start

WriteFreely deploys as a static binary on any platform and architecture that Go supports. Just use our built-in SQLite support, or add a MySQL or MariaDB database, and you'll be up and running!

For common platforms, start with our pre-built binaries and head over to our installation guide to get started.

Packages

You can also find WriteFreely in these package repositories, thanks to our wonderful community!

Documentation

Read our full documentation on WriteFreely.org —️ and help us improve by contributing to the writefreely/documentation repo.

Development

Start hacking on WriteFreely with our developer setup guide. For Docker support, see our Docker guide.

Contributing

We gladly welcome contributions to WriteFreely, whether in the form of code, bug reports, feature requests, translations, or documentation improvements.

Before contributing anything, please read our Contributing Guide. It describes the correct channels for submitting contributions and any potential requirements.

License

Copyright © 2018-2026 Musing Studio LLC and contributing authors. Licensed under the AGPL.