Write Freely
writefreely.orgA minimalist, federated blogging platform offering a clean UI. It's free, open source, and caters to writers seeking simplicity and federation capabilities. For hosted options, visit Write.as.
- Homepage:writefreely.org
- GitHub:github.com/writeas/writefreely
- Web info:web-check.xyz/check/writefreely.org
Write Freely Source Code
Author
Description
A clean, Markdown-based publishing platform made for writers. Write together and build a community.
Homepage
https://writefreely.orgRepository
- LicenseAGPL-3.0
- Created02 Apr 17
- Primary languageGo
- Size16,535 KB
- Stars5,243
- Forks398
- Watchers5,243
Top Contributors
@thebaer (1519)
@dependabot[bot] (143)
@ngerakines (28)
@mrvdb (24)
@echoesactiii (12)
@jsoref (11)
@colin-axner (10)
@davralin (9)
@techknowlogick (8)
@gytisrepecka (8)
@vtyeh (7)
@cjeller1592 (7)
@Dak425 (6)
@snullp (5)
@koehn (5)
@pascoual (5)
@kaiyou (5)
@VV-EE (5)
@dariusk (4)
@jbgi (4)
@shleeable (4)
@Obayanju (4)
@Antolius (3)
@testwill (3)
@nkoehring (3)
@ViktorVaczi90 (2)
@sahilmulla (2)
@mnlg (2)
@clarfonthey (2)
@claabs (2)
@joyeusenoelle (2)
@leo9800 (2)
@paddatrapper (2)
@eyberg (2)
@eli-oat (2)
@mpldr (1)
@Dar13 (1)
@RJ722 (1)
@robertsilen (1)
@smazmi (1)
@sandrockcstm (1)
@freesteph (1)
@lolbinarycat (1)
@DonPiotr (1)
@lstellway (1)
@lpar (1)
@x4e (1)
@yalh76 (1)
@ilteriseroglu-ty (1)
@egon0 (1)
@heyakyra (1)
@joicemjoseph (1)
@jfarseneau-wb (1)
@isaacsu (1)
@blacklight (1)
@OddBloke (1)
@blujan (1)
@BenOvermyer (1)
@Anish-Parkhi (1)
@elkcityhazard (1)
@andi1984 (1)
@zer-far (1)
@geekgonecrazy (1)
Recent Commits
Matt Baer(28 Aug 26)
Merge pull request #1731 from writefreely/improve-missing-dir-errors Output more helpful error messages at startup
Matt Baer(28 Aug 26)
Merge pull request #1748 from writefreely/fix-signup-paths Enforce signup checks consistently across all registration paths
Matt Baer(28 Aug 26)
Merge pull request #1736 from writefreely/fix-robots-txt Support serving robots.txt on single-user instances
Matt Baer(26 Aug 26)
Merge commit from fork Prevent access to private / password-protected blogs via ActivityPub
Matt Baer(21 Aug 26)
Prevent access to private / password-protected blogs via ActivityPub This fixes GHSA-cx5r-gg25-76ph
Matt Baer(20 Aug 26)
Merge pull request #1738 from c7io-dev/fix-customize-username-shadow Fix shadowed .Username on collection customize page
Matt Baer(20 Aug 26)
Enforce signup checks consistently across all registration paths Previously, registration eligibility (closed registration, invite validity, and password-auth availability) was checked inconsistently depending on the endpoint, including /api/auth/signup, /oauth/signup, and instances with password auth disabled. Funnels all paths (web, API, OAuth) through a single canRegister() gate so the checks can't be bypassed by picking a different endpoint, and includes the invite code in the OAuth signature. Extends the invite validation from #1724 to the API and OAuth paths it didn't cover. Also adds regression tests covering each path.
Matt Baer(20 Aug 26)
Merge commit from fork Prevent SSRF via ActivityPub inbox actor/object IRI resolution
Matt Baer(20 Aug 26)
Merge commit from fork Block SSRF in webfinger RemoteLookup
Matt Baer(20 Aug 26)
Merge pull request #1730 from writefreely/fix-uppercase-usernames Normalize usernames on signups via OAuth
Matt Baer(19 Aug 26)
Merge pull request #1727 from writefreely/fix-password-protected Fix password-protected blogs not unlocking after cookie expires
Matt Baer(15 Aug 26)
Merge pull request #1729 from writefreely/fedi-image-description Include image alt text in fediverse attachment data
sNullp(12 Aug 26)
Fix shadowed .Username on collection customize page EmailCfg.Username shadows the promoted StaticPage.Username in the customize struct, so the "blog uses your username in its URL" note never rendered. Use .UserPage.Username. Co-Authored-By: Claude Opus 4.8 <[email protected]>
Matt Baer(11 Aug 26)
Support serving robots.txt on single-user instances Fixes #1427
Matt Baer(11 Aug 26)
Output friendly error when templates directories not found Fixes #757
Matt Baer(11 Aug 26)
Output friendly error when keys haven't been found
Matt Baer(11 Aug 26)
Output friendly error when no configuration file
Matt Baer(11 Aug 26)
On startup, log notification of migrations needed
Matt Baer(11 Aug 26)
Merge pull request #1712 from writefreely/dependabot/github_actions/docker/login-action-4.6.0 Bump docker/login-action from 4.3.0 to 4.6.0
Matt Baer(11 Aug 26)
Merge pull request #1714 from writefreely/dependabot/go_modules/github.com/writeas/web-core-1.8.0 Bump github.com/writeas/web-core from 1.7.0 to 1.8.0
Matt Baer(11 Aug 26)
Add tests for normalizing usernames via OAuth
Matt Baer(11 Aug 26)
Normalize usernames for signups through OAuth This ensures, for example, new users don't get created with uppercase usernames that later cause issues when we automatically redirect to lowercase equivalents, resulting in 404s. It also adds an `author.IsValidUsername` check when registering via OAuth. **Note**: this does _not_ automatically fix current users who might've ended up with a faulty username. This fixes #648 #844
Matt Baer(11 Aug 26)
Add tests for Markdown alt text extraction
Matt Baer(11 Aug 26)
Include image alt text in fediverse attachment data This parses out any alt text found in Markdown images included in a post, and adds the text as the image attachment's `name` property, so it shows up across the fediverse, as well. Fixes #698
Matt Baer(10 Aug 26)
Fix password-protected blogs not unlocking after cookie expires Previously, we would only set a new cookie to replace the older, expired one if there was absolutely no error. Instead, we now safely ignore any errors and attempt to re-set the cookie, which should fix this. Fixes #298
Matt Baer(10 Aug 26)
Revert webfinger changes The SSRF fix is already handled more robustly in other pending changes.
Matt Baer(10 Aug 26)
Prevent SSRF via ActivityPub inbox actor/object IRI resolution resolveIRI() fetched attacker-controlled actor/object IRIs from the unauthenticated federation inbox endpoint with no restriction on the destination host, allowing internal network/cloud metadata access (e.g. 169.254.169.254). Add isPublicIRI() to reject loopback, private, link-local, and unspecified addresses, and apply it in resolveIRI() (covering both the actor IRI and the response-controlled PublicKey.Owner follow-up fetch) and in webfinger.go's RemoteLookup(). Fixes GHSA-7635-vx4w-qww7.
Matt Baer(10 Aug 26)
Block SSRF in webfinger RemoteLookup RemoteLookup() built a URL straight from the domain part of an attacker-controlled handle and fetched it, letting a crafted handle (e.g. [email protected]) make the server issue requests to private IPs, loopback, link-local, and cloud metadata endpoints. Requests now go through a hardened client that validates the actually-resolved IP at dial time (so DNS rebinding can't bypass it), applied to redirects too, and rejects malformed handles up front. This fixes GHSA-wvrr-gx9p-xvxm
Matt Baer(10 Aug 26)
Merge commit from fork Ensure users can only un/pin a post that belongs to a collection they own
Matt Baer(10 Aug 26)
Merge commit from fork Always sanitize slugs on post creation
Write Freely Security
Security Advisories (2)
- mediumPatched
GHSA-cfcq-76gr-62x8Cross-User IDOR: Subscriber List Disclosure
- highPatchedCVSS 8.8
CVE-2025-24337config.ini defaults to world-readable
Write Freely Website
Website
WriteFreely
Minimalist, federated, self-hosted blogging platform.
Redirects
Does not redirect
Security Checks
All 65 security checks passed
Server Details
- IP Address185.112.146.212
- Hostnamevps-185-112-146-212.1984.is
- LocationReykjavik,Hofudborgarsvaedi,Iceland,EU
- ISP1984 ehf
- ASNAS44925
Associated Countries
SE
IS
US
Safety Score
Website marked as safe
100%
Blacklist Check
writefreely.org was found on 0 blacklists
- AntiSocial Blacklist
- Artists Against 419
- Badbitcoin
- Bambenek Consulting
- CERT Polska
- CoinBlockerLists
- CRDF
- CryptoScamDB
- EtherAddressLookup
- EtherScamDB
- Fake Website Buster
- MetaMask EthPhishing
- NABP Not Recommended Sites
- OpenPhish
- PetScams
- PhishFeed
- PhishFort
- Phishing.Database
- PhishStats
- PhishTank
- Phishunt
- RPiList Not Serious
- Scam.Directory
- SecureReload Phishing List
- Spam404
- StopGunScams
- Suspicious Hosting IP
- ThreatFox
- ThreatLog
- TweetFeed
- URLhaus
- ViriBack C2 Tracker
Website Preview
Write Freely Reviews
More Blogging Platforms
A no-nonsense, super-fast blogging platform prioritizing privacy. It strips back unnecessary features to focus on straightforward blogging. The platform is open source.
A minimalist blogging platform focused on privacy and simplicity. It's open source and eschews complex features for a straightforward writing and publishing experience.
A web frontend for XMPP, offering decentralized blogging and chatrooms. Movim is open source, integrating social and communication tools in a unified platform.
Web services over SSH, including blogging with Prose, microsites with Pages, and a pastebin with Pastes. The services use public-key cryptography by default with no browser-based tracking and minimal logging.
A quick, anonymous blogging platform by Telegram. It's designed for simplicity and speed, allowing for straightforward content publishing without registration.
About the Data: Write Freely
Edit Write Freely Data
You can edit Write Freely's entry in this section of awesome-privacy.yml by submitting a PR to our GitHub repo.
Note that some of the information shown above has been aggregated from external
sources, a list of these can be found data documentation.
Origin Data
Modify Data
API
You can access Write Freely's data programmatically via our API. Simply make a GET request to:
https://api.awesome-privacy.xyz/v1/services/write-freelyThe REST API is free, no-auth and CORS-enabled. To learn more, view the API Docs or read the API Usage Guide.
Share Write Freely
Help your friends compare Blogging Platforms, and pick privacy-respecting software and services.
Share Write Freely and Awesome Privacy with your network!