From IndieWeb

A permashortlink (abbreviated PSL) is a URL using a short-domain that expands to a permalink; on the IndieWeb, PSLs use personal short domains to expand to the same person's personal domain, thus minimizing the fragility often associated with shortlinks.


There are several reasons to create and maintain permashortlinks.

  • More reliable in email (some mail programs truncate/break URLs >70 chars)
  • Quicker to recall / copy due to size in IM, browser screenshots, print, images, etc [1]
  • Less effort to manually enter - The easier to read and type-in, the more folks visit the URL.

Older reasons that apply less or not at all nowadays:

  • Content limits on POSSE destinations, where providing a permashortlink at the end saves space over a full permalink, thus allowing you to POSSE more of your content.

See also:


Here is a simple way to setup permashortlinks:

  • Get a personal short-domain
  • Set it up to redirect to your personal domain
  • Setup short path handling on your personal domain to expand and redirect to your permalinks.

IndieWeb Examples

Ordered roughly by when deployed.


Tantek ร‡elik uses Falcon running on with algorithmic permashortlinks POSSEd since 2010-01-26. Example:

Summary description:

This is sufficient to expand to:

  • or
  • respectively, where:
    • YYYY = year
    • DDD = day of the year (see related: )
    • t or b = again a literal 't' or 'b'
    • n = nth post of that type that day
    • and that's sufficient to retrieve the post from storage, including slug text which follows the "...n/" in the permalink URL

For more details and background/thinking, see the interview/article:

Michael Owens

Template:mowens uses Whistler on as of 2014-07-08.

Whistler is a Node.js module that implements a flexible version of the Whistle algorithm (by Tantek at for shortening, expanding, and explaining links using NewBase60.

Whistler and the NewBase60 Node.js modules are both available on NPM and GitHub:

Marty McGuire

Marty McGuire uses algorithmic permashortlinks, handled by a Python Flask application since April 2016.

Summary Description:

  • Each post on Marty's site has a permalink URL (or a redirect) based on the date and time it was published. They are of the form:
  • Permashortlinks are of the form where:
    • DDD = NewBase60 epoch days. This is expanded to /YYYY/MM/DD/
    • TTT = NewBase60 seconds in the day. This is expanded to /HHMMSS/
  • Example: expands to:

The source code for handling the redirects is available here.

Maxwell Joslyn

Maxwell Joslyn implemented version 1 of a permalink URL shortener on 2020-12-21. It lives at Right now it handles only the simplest use case: straight redirects from short domain to full domain.


  • There are a mishmash of permalink forms on his website, including /yyyy/mm/dd/slug, /slug, and /poems/slug.
  • Version 1 of Maxwell's shortener simply converts "" to the full "" domain and redirects the request with the same path.
  • Being so simple, the entirety of the implementation was setting up DNS records and writing a couple lines of server config to capture and pass on the path after "".

Silo Examples

Aaron Parecki 2009-12-08 I'm noticing everyone has their own URL shortener now.[2] E.g. silos:


Flickr: ->

Build It With Me

Build It With Me: ->

See Also