Writer Guide
- Writing Posts
- Additional Blogs
- Autosave
- Creating a Static Page
- Custom CSS
- Display Format
- Drafts
- Excerpt
- Federation
- Following a blog
- Hashtags
- Publicity
- Scheduling Posts
Writing Posts
Learn how to do more than publish plain text in this guide for writers.
Adding a title
Titles on WriteFreely are optional, but easy to add by including them in the body of your post.
Option 1. Explicitly add a title by starting your post with a Markdown header. That is, type a hash symbol (#), a space, and then your title. The title will show up as a large heading.
# Title of my Post
By starting a line with the hash symbol (#) and a space immediately
after it, Write.as knows that you wanted to use the following text on
that line ("Title of my Post") as the true title of your post.
Now, not only will "Title of my Post" show up in the browser's title
bar, but it will also show in big letters at the top of this post's page.
Option 2. Write it on the first line, separated from the rest of the content. The title will show up the same size as the rest of the post.
Title of my Post
Content begins here, which was started after the blank line above. Since
there was a blank line, "Title" will be the title of the post that shows
up in the top of the browser window. But since we didn't go out of our
way to indicate that was our title, it will also display normally with
the rest of the text on the post itself.
Formatting text - Markdown
You can format text on WriteFreely with a special kind of syntax called Markdown, which uses special characters to indicate bold, italic, and other text. If you've used Markdown before, you'll be right at home here.
Headers
# This is the biggest header (h1)
## This is still a big header (h2)
### This is a smaller header (h3)
###### This is the smallest header you can make (h6)
This is the biggest header (h1)
This is still a big header (h2)
This is a smaller header (h3)
This is the smallest header you can make (h6)
Emphasis
*This is italic*
_This is italic, too_
**This is bold**
__This is bold, too__
_Here's some **emphatic** text._
This is italic This is italic, too
This is bold This is bold, too
Here's some emphatic text.
Lists
Bulleted:
* Hello
* Goodbye
* Ciao
* Au revoir
* Auf Wiedersehen
* Arrivederci
- Hello
- Goodbye
- Ciao
- Au revoir
- Auf Wiedersehen
- Arrivederci
Numbered:
1. First, this
2. Then that
3. Lastly, this
1. First this
1. Then a second thing
1. Finally a third thing
1. And so on
- First, this
- Then that
-
Lastly, this
-
First this
-
Then a second thing
-
Finally a third thing
-
And so on
Images

Links
https://writefreely.org
[A user guide](https://writefreely.org/docs)
https://writefreely.org A user guide
Link to your email by putting mailto:
in front of it:
[Contact me](mailto:hello@example.com)
Quotes
> Wherever you go,
> there you are.
Wherever you go, there you are.
Inline Code
Download the command-line client and run `./writeas new`
Download the command-line client and run ./writeas new
Syntax-highlighted Code Blocks
```go package main import "fmt" func main() { fmt.Println("Hello, world") } ```
package main
import "fmt"
func main() {
fmt.Println("Hello, world")
}
Format Text - HTML
Text
<h1>Header</h1>
<h2>Header</h2>
<h3>Header</h3>
<h4>Header</h4>
<p>Text</p>
<ul>
<li>List Item 1</li>
<li>List Item 2</li>
<li>List Item 3</li>
</ul>
<ol>
<li>List Item</li>
<li>List Item</li>
<li>List Item</li>
</ol>
<blockquote>This is a blockquote.</blockquote>
Header
Header
Header
Header
Text
- List Item 1
- List Item 2
- List Item 3
- List Item
- List Item
- List Item
This is a blockquote.
<strong>Bold</strong>
<em>Italics</em>
<u>Underline</u>
<span style="color:red">Style</span>
<a href="https://write.as">Link</a>
Bold
Italics
Underline
Style
Subtitle in the box
This paragraph is also inside the box...
Video
<video src="https://cdn.glitch.com/db7ab5d8-dd97-466b-8180-676147e8fc40%2FUsing%20Write.as%20Themes.mp4?" controls></video>
Iframe
<iframe width="560" height="315" src="https://www.youtube.com/embed/HJT8yYf-XPs" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
Audio
<audio src="https://cdn.glitch.com/db7ab5d8-dd97-466b-8180-676147e8fc40%2F%2333%20-%20Reflection%2014%20about.mp3" controls></audio>
Image
<img src="https://i.snap.as/2HKPL0c.png" />
Additional Blogs
WriteFreely makes it easy to publish multiple blogs from a single account, so you can separate your writing by audience or topic, and express yourself more freely.
Prerequisites
First, your admin will need to configure your instance for multiple blogs (where max_blogs
is either 0
or greater than 1
). If you're unable to create a blog with the instructions below, talk to your admin about increasing this limit.
Getting Started
Note: If there is no “New blog” link here, you've reached the limit of blogs you can create under one account. Talk to your admin about expanding that limit.
Enter the title or slug you want for your blog, and click the Create button. A slug will contain only lowercase letters, numbers, and hyphens, and will comprise the URL of this new blog (e.g. https://example.com/myblog/
). A title can contain any combination of letters, numbers, and symbols, but will automatically be converted into a friendly slug.
Once you click Create, the new blog will appear on your Blogs page. Now you can publish to it!
Blog relationships
Each WriteFreely blog is publicly detached from its owner, meaning readers won't know that the same author owns any two blogs, by default. This enables writers to maintain separate real-name and pseudonymous blogs, blogs for personal and professional life, or simply different blogs for different topics.
Privacy
This design offers writers a highly convenient way to maintain multiple personas with reliable privacy from readers. However, it does not offer complete privacy from your instance admin, who can see the association between your blogs just as you can. If you need more assurance that this association won't be known, it's important that you either trust you admin with this information or take additional steps to protect yourself, such as creating multiple accounts.
Autosave
The WriteFreely editor automatically saves your writing, so if you leave without saving, you'll pick up where you left off when you come back.
Writing automatically saves to the device you're writing on and works even with a spotty internet connection, so you'll always have access to your draft from the same device and browser that you started it on.
Creating a Static Page
You can permanently pin any WriteFreely blog post to your blog's navigation bar (like an “About” or “Contact” page) by following these steps:
- Publish a post to your blog
- Go to your blog home page by clicking your blog name in the top-left corner
- Hover over the post
- Click Pin
That's it! You'll see a link to that post from every page on your blog.
Here's what it looks like in practice:
Types of Static Pages
Now that we know how pinning works, we can create static pages. But what kind of static pages should be on your blog? Much like a table of contents or index for a book, static pages act as a frame of reference for your blog. With that in mind, let's examine four static pages you could create
About
Your readers could be asking themselves, “What is this blog about?” This is the static page where people can learn more about the “what” and “who” of your blog. Be as specific or vague as you'd like – it is your blog. Choose who you want to be and what you want your blog to be about.
Contact
Once people learn more about you and your blog, perhaps they want to get in touch – to leave positive feedback or make a suggestion. How can they do that? This is the page where you can list the ways people can contact you, everything from an email address to a contact form.
Social
This blog is just one part of your online presence. Where can others find you? Link to your social media, your videos, your code repos, anywhere else where readers can find you on the web.
Subscribe
Someone enjoys your blog and wants to subscribe to it. Create a static page that gives them the ways they can do that. WriteFreely already provides built-in methods for subscription:
- Provide a link to your RSS feed (simply add /feed to your blog's url).
- Share your blog's Fediverse handle so that people can follow your blog from Mastodon
Custom CSS
If you can write CSS, you can customize the appearance of your WriteFreely blog.
Getting Started
All you need to do is go to the Customize settings of your blog. Scroll down to “Custom CSS” and customize your blog from there.
The following stylesheet shows a few basic selectors you'll need in order to customize certain elements. You can just grab the selectors (e.g. #blog-title a
) for your stylesheet — the properties are only there to illustrate what you can do.
/* Entire page background */
body {
background-color: #efefef;
}
/* Blog header on index and post pages */
#blog-title a {
color: #fff;
background-color: #7a629d;
}
#blog-title a:hover {
color: #eee;
background-color: #7a629d;
}
/* Blog header on post pages ONLY */
body#post #blog-title a {
padding: 4px 8px;
}
/* Blog description (underneath title) on index page */
header p.description {
font-style: italic;
}
/* Post titles on blog index */
.post-title {
font-weight: normal;
}
.post-title a.u-url:link, .post-title a.u-url:visited {
color: blue;
}
/* "Read more..." links */
body#collection a.read-more {
text-decoration: underline;
}
/* Links inside blog posts */
article p a {
color: #444;
text-decoration: none;
border-bottom: 2px solid orangered;
}
article p a:hover {
background-color: orangered;
color: white;
text-decoration: none;
}
Copy these entire sections verbatim, as each is a complete customization you might want to make, like centering an image.
/* Center images */
img {
display: block;
margin: 0 auto;
}
/* Disable post header fade effect */
body#post header
-moz-opacity: 1;
-khtml-opacity: 1;
-webkit-opacity: 1;
opacity: 1;
}
/* Hide post views */
header nav .views {
display: none;
}
Themes
If you want to see how you can customize beyond the basic elements of your blog, you can check out our Themes blog. Here you can find custom blogs from the WriteFreely/Write.as community whose themes you can use and remix for your own blog.
Display Format
WriteFreely gives you full control over the ordering of your posts, and whether or not your blog shows publish dates.
Overview
Blog Format
This is the classic format for a blog: latest posts first, with dates shown. It's perfect for timely writing, like updates for your friends and family or information on upcoming events.
- Order: reverse-chronological
- Dates: visible
Novel Format
This format hides publish dates and orders your posts chronologically, so visitors can read in the order you first published in. This is perfect for serial forms of writing, where each post is an individual chapter or section of a larger piece.
- Order: chronological
- Dates: hidden
Notebook Format
This format combines the ordering of a Blog with the date format of a Novel. It's made for poets and writers who regularly publish evergreen work, or people who just need a space to jot down ideas.
- Order: reverse-chronological
- Dates: hidden
Multiple Blogs
If your WriteFreely instance supports multiple blogs, you can give each one its own format and function. Your first blog might be where your professional writing lives (Blog format), the second could be the place where you record interesting quotes (Notebook format), and the third might be for your NaNoWriMo novel (Novel format).
Drafts
WriteFreely allows you to publish without a blog with “Drafts”.
Private
Drafts are only identified by an unguessable ID, essentially making them private. Unlike posts connected to a blog, they aren't publicly connected to an identity unless you make it known in the post that you wrote it. A reader can't link your draft back to you.
Sharing Drafts
While private by default, drafts can be shared with others. They can be shared by ID on (instance config value) private = false
instances.
Difference between Drafts & Blog Posts
Drafts differ from blog posts in a couple of ways.
While blog posts can include custom slugs for posts, drafts only have randomly generated ID's. Hashtags also won't render in drafts as they do in blog posts. Finally, drafts don't have the ability to include custom CSS like blog posts.
Excerpt
You can show just the beginning of your post on your blog's home page with a special shortcode. For example, if you're on the “How to Use Write.as” blog's home page, you'll see a “Read more...” link below each post.
To separate your home page excerpt from the rest of your post, simply add this shortcode into your post at the spot you want:
<!--more-->
Then, readers will see a “Read more...” link displayed in its place on your home page.
Bonus: just like the post date, the “Read more...” link will be translated into the language of your post, if it's one of the languages we support. For more information on this, check out the list of our currently supported languages.
Federation
WriteFreely supports federation via ActivityPub, a protocol spoken by popular platforms like Mastodon (an alternative to Twitter). This means that other people can directly follow your blog from the decentralized social network known as the “fediverse,” if your WriteFreely admin has enabled federation.
Finding your handle
To find your handle, go into your blog's settings. Under URL will be your blog's fediverse handle, following the format @blog@instance.com
.
Following your blog
To follow your blog, open Mastodon, Pleroma, or your other favorite ActivityPub-powered platform, and search for the fediverse handle from your settings page. (Note: you can also search for the blog URL, instead of the handle.) Finally, click the “Follow” button. This will make sure you receive future posts in your timeline, where you can then favorite or boost them to your followers.
Note about changing your username
If you change your username, a new fediverse handle will be created. This means the previous fediverse handle will stop receiving new posts. Anyone who was following your previous fediverse handle will have to follow the new one in order to receive your most recent posts.
Demo
Watch this video to see this feature in action.
ActivityPub Mentions
With federation enabled, you can mention users of Mastodon, Pleroma, and other ActivityPub platforms from your blog. To mention someone, insert @handle@their.instance
in a blog post.
Following a blog
WriteFreely supports a variety of open protocols to make it easy for people to follow your blog on the open web.
RSS
WriteFreely blogs publish RSS feeds, allowing people to follow your blog from an RSS content aggregator or reader.
Following a Blog via RSS
To access a WriteFreely blog's RSS feed, add “/feed/” to the end of the blog's URL.
https://blog.writefreely.org/feed/
You can also enter the normal blog URL into a feed reader, and most will automatically detect the RSS feed from the blog's metadata.
Following a Blog's Hashtag via RSS
If you want to filter a WriteFreely blog's content by hashtag, you can follow posts that only use those hashtags. All you need to do is add “/feed/” to the end a blog's hashtag URL.
https://blog.writefreely.org/tag:writefreely/feed/
ActivityPub
WriteFreely supports federation via ActivityPub, allowing people to follow your blog from popular platforms like Mastodon (an alternative to Twitter). Learn more about how following works with ActivityPub in the Federation guide.
Hashtags
WriteFreely lets you easily group your posts together with hashtags.
Add one at any point in your post, like #this, and it'll automatically be linked to a special page that shows all posts in the blog containing that hashtag. You can also add as many hashtags as you want to your posts, with any kind of capitalization.
Hashtags on Instance Reader
Hashtags on Fediverse
Publicity
Whether you want to keep your writing completely private, limited to a certain audience, or sent out to the world wide web, WriteFreely can help with flexible blog publicity settings.
Getting Started
If you go to your blog's Customize page, you will see a section labeled Publicity. This is where you can configure who gets to see your blog. To change, all you need to do is click the checkbox of your preferred publicity setting and then scroll down to select “Save Changes.”
Let's explore the different options provided.
Unlisted
The Unlisted setting makes your posts available only to people who have your blog's URL. This is perfect if you're concerned about future employers looking at your blog, or if you mainly distribute your posts through social media or your personal site.
Private
What if you want your blog to be a digital journal? A private space where you can write without anyone looking over your shoulder? Make your blog “Private”. This means that nobody else can read the blog but you, and only when you're logged in.
Password Protected
What if you want your blog to be read only by some people? A place for drafts that only trusted confidants could see? Make your blog “Password Protected”. This meets somewhere in-between “Unlisted” and “Private”. Only readers who have the password you set can access your blog.
Public
What if you want your blog to be part of the larger community? A place where you not only share your writing but can read the writing shared by others? Make your blog “Public”. While still sharable by link, your posts also go into the WriteFreely site's Reader, the built-in writing hub. All posts from blogs on the site that are set to “Public” will show in the Reader.
Defaults
The default publicity on A Pointless Blog is Public. You can always change the publicity setting for your blog if needed.
Multiple Blogs
Some WriteFreely sites support multiple blogs. For example, if your site supports three blogs per user, you can have these blogs coexist with distinct or overlapping publicity types. Imagine having one blog that is your daily journal (“Private”), one blog for updates that only one person in your team can read (“Password Protected”), and then another where your articles on bug fixes can live for fellow programmers (“Unlisted”).
Scheduling Posts
WriteFreely supports scheduling posts to be published at a future date.
To schedule a post from the web application:
- Publish a post as a Draft
- At the top of the page, click Edit
- Notice the new “i” icon at the top of the editor; click that
- Change the “Created” time to a date in the future, and save your settings
- Finally, go to your Drafts page
- Click “move to your blog“
Notes
- Scheduled posts are hidden from your blog until the published date has passed
- Scheduled posts won't be sent out via federation / ActivityPub (to be fixed with T567)