Since octothorpes use basic markup, there are as many ways to create octothorpes as there are to make webpages. This site also contains some utilities to make writing Octothorpes easier, based on common patterns in use on many other platforms.

Here’s how this site does it

This site is built in Jekyll, so the methods shown below are implemented as a Jekyll plugin, but they can easily be reproduced in the language or platform of your choice.

This page covers how to manually write octothorpes. Of course, you can do it automatically as well. Check out the Tags page for more.

Oofing Octothorpes

Octothorping is easy. All you have to do is type


and it’ll get parsed into an octothorpe.

The octothorpes below were written with this syntax and automatically oofed:



Including the # distinguishes it from a backlink.

Backlinks are a central part of the Octothorpes protocol, so it’s important to make them easy to use. Like many static site generators, pages on this site are written in markdown, so the plugin offers various options for quickly making a backlink without breaking the flow of writing.

In all of these examples, Page ID can be the filename, title, or alias of the page addressed.

Option 1: [[Page ID]]

If you don’t need a special label for your backlink, you can just surround your page’s identifier in double brackets. This resolves to: "<a href='https://demo.ideastore.devpage.url' rel='octo:octothorpes'>Page ID</a>"

Option 2: [Text label][Page ID]

This option lets you create a backlink with a text label. This resolves to "<a href='https://demo.ideastore.devpage.url' rel='octo:octothorpes'>Text Label</a>"

Alternate: – You can get the same result typing [[ Text Label | Page ID]]

These patterns are common across multiple platforms, including Obsidan and Wikipedia. Inspiration for the plugin came from Maxime Vaillancourt’s digital garden template

Check out the backlinks page for more.

Looking forward

As the project matures, we plan to provide some dev tools that will contain similar text parsers within the core Octothorpes codebase. However, the basic implementation of octothorpes will always be based in standard markup. Platforms can roll their own tools if they want to provide shorthand methods.