A clean, Markdown-based publishing platform made for writers. Write together and build a community. https://writefreely.org
  • JavaScript 74%
  • Go 17.3%
  • Go Template 6.6%
  • Less 1.7%
  • Makefile 0.2%
  • Other 0.1%
Find a file
Matt Baer 76f2ad034d
Merge commit from fork
Advisory fix 1
2026-07-07 15:36:05 -04:00
.github Bump docker/login-action from 4.2.0 to 4.3.0 2026-07-02 22:22:24 +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 Change copyright notices to Musing Studio LLC 2022-11-10 23:49:16 -05:00
config Add missing import in config.go 2026-06-30 18:24:59 -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 Merge pull request #1647 from writefreely/markdown-preview 2026-04-09 16:19:48 -04:00
mailer Run goimports on project 2026-01-22 15:07:13 -05: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 Run goimports on project 2026-01-22 15:07:13 -05: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 Add Markdown preview to Plain Text editor 2026-04-05 10:57:03 -04:00
templates Fix missing user nav on blog Customize page 2026-06-30 20:52:26 -04: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 Add missing permission check on Subscribers / Followers list 2026-06-30 17:10:10 -04:00
account_import.go chore: remove refs to deprecated io/ioutil 2023-07-10 17:55:04 +08: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 Fix admin/user pagination 2024-12-09 05:22:21 +00:00
app.go Limit password to bcrypt's 72 bytes on the backend 2026-05-15 19:22:18 -04: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 Merge pull request #1253 from writefreely/masto-author 2025-08-25 16:09:13 -04: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 pull request #1623 from writefreely/export-improvements 2026-07-03 19:08:09 -04: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 Move Email Subscription shortcode into constant 2026-04-05 10:47:20 -04: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 Bump golang.org/x/net from 0.55.0 to 0.56.0 2026-07-01 22:22:51 +00:00
go.sum Bump golang.org/x/net from 0.55.0 to 0.56.0 2026-07-01 22:22:51 +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 Merge pull request #483 from writefreely/log-gone-user-out 2022-11-14 23:45:33 -05: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 Fix darwin arm64 packaging in make release 2025-08-25 16:46:39 -04:00
monetization.go Run goimports on project 2026-01-22 15:07:13 -05:00
nodeinfo.go Run goimports on project 2026-01-22 15:07:13 -05:00
oauth.go chore: remove refs to deprecated io/ioutil 2023-07-10 17:55:04 +08:00
oauth_generic.go Run goimports on project 2026-01-22 15:07:13 -05: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 Re-add ossl_legacy.cnf 2023-09-21 16:07:09 -04: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 Merge pull request #1647 from writefreely/markdown-preview 2026-04-09 16:19:48 -04:00
postrender_test.go Change copyright notices to Musing Studio LLC 2022-11-10 23:49:16 -05:00
posts.go Merge pull request #1646 from writefreely/email-shortcodes 2026-04-08 17:37: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 Document MariaDB support in README 2026-05-16 11:25:32 +03:00
request.go Correctly respond to application/ld+json requests 2023-09-21 16:16:57 -04:00
routes.go Redirect /read/feed to correct /read/feed/ URL 2025-11-17 19:44:24 -05: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
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
templates.go Add fieldName when constructing SmtpMessage + go fmt 2025-01-25 12:57:53 +01:00
unregisteredusers.go Prevent signups via /auth/signup with closed registrations 2026-06-30 20:17:57 -04: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 Merge branch 'develop' into letters 2023-01-08 11:49:57 -05:00
webfinger.go chore: remove refs to deprecated io/ioutil 2023-07-10 17:55:04 +08:00

 

WriteFreely


Latest release Go Report Card 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.