Dear devs,

This is an experiment bringing together Hugo and Internet Archive to provide a rock solid, lightweight and ethical solution to serve audio files.

The main objective is to share loads of audio files (hundreds of gigabytes are fine) without the hassle of Youtube / Dropbox / Soundcloud etc


Main features

No other requirements:

  • no database
  • no npm
  • no security update
  • no server maintainance

What makes different?

we are users, creators and devs all at the same time. So:

We care about users

  • no ads, no trackers
  • no account, no dark patterns
  • privacy friendly: VPN and Tor users welcome, no JS required
  • clean and responsive UI, mindful UX

We care about creators

  • no hassle: publish and forget – focus on what matters for you
  • upload full-quality WAVE files, automatically share WAVE, MP3 and Flac
  • no lock-in: all files & metadata are available for easy export / download.
    (both from the browser or from the CLI)
  • define a license for your content and display it next to the download button

We care about devs

It’s all simple technologies and pure flat files tracked in Git:

  • no database, no npm
  • no security update, no server maintainance
  • batch import / export (i.e upload / download)
  • automatic conversion from WAV to Flac and MP3
  • affordable for non-profits: ✨ Total running cost: $0 / month
  • built to scale, provides unlimited storage and unlimited bandwidth

As devs, we just want to code when we want to, and stay free to postpone when we have better plans

How to use:

You can embed audio files, full albums and even videos with the provided Hugo Shortcodes.

Here is a preview:

Embed an audio file

Include audio directly in Markdown with the following Shortcode:

{{< audio "" >}}

An audio player will then be displayed:

This player is performant, accessible, elegant – and fully customizable with CSS variables.

Embed full albums / folders

All audio files contained in an archive can be embedded this way:

{{< audio-archive "" >}}

File names and audio players are automatically listed:

  • L'aute jorn - Tutti - version La CDC
  • L'aute jorn - Tutti - version Passeurs et Passeuses
  • L'aute jorn - Voix 1 - version La CDC
  • L'aute jorn - Voix 2 - version La CDC

Videos work too!

Here is a demo:

{{< video "" >}}

will display:

(See the Shortcodes documentation to learn more.)

Note: so far we focused on media files hosted on Internet Archive. Youtube, Bandcamp, Soundcloud are supported too, documentation coming soon!

Let’s speed up things

Automatically generate a complete media library

So far we had to include manually each file and albums.

Let’s learn how to create, in minutes, a website collecting hundreds of audio files, videos, and PDF.

  1. Upload your files to Internet Archive
  1. List the folders to include in your library
    It’s a simple bullet list like this one:

  1. Run Hugo
cd prebuild && hugo && cd .. && hugo serve
  1. Done!

You can now browse your collection locally, automatically organized in folders like in this demo: see /audio, /videos, and /PDF.

Play around, then deploy for free on Netlify, Gitlab Pages, Github Pages, etc


How to install?

Note: the code is now being reviewed before publication.

You can join as an early tester: get access to the repo, test and discuss the future of the project!

Here is how a local install looks like:

  1. Get the code
git clone --recurse-submodules
  1. Define archive URLs in Yaml. For example:
  1. Run locally
    (Requires Hugo extended > 0.95)
cd prebuild && hugo && cd .. && hugo serve
  1. Deploy!

Deploying to Netlify works fine, Gitlab CI should not be a problem
(Note: Deploying in One-click to Netlify is on the roadmap)

How does it work under the hood?

Remember the build command? ("cd prebuild && hugo && cd .. && hugo serve")

Let’s have a closer look:
Hugo automatically runs the following steps:

  • read URLs from archives.yml
  • for each URL, fetch Internet Archive API to get a file list and JSON metadata (like in this example)
  • each file listed out there triggers the creation of a local and dedicated Markdown file
  • Markdown content is automatically generated from metadata, following a custom template
  • Markdown files are converted to HTML with Hugo – HTML templates are also fully customizable
  • Hugo then generates a complete website, with Taxonomy, Sitemap, internal search, Blog posts, and automated listings based on filetypes (examples: /audio, /video and /PDF)
Any known limitations?

Yes, here they are:

  • No social network features, like voting, following etc. Comments may be added in the future.
  • No content monetization: some platforms provide revenue based on advertisement and viewer profiling. doesn’t.
  • promotes alternatives to traditional copyright and only supports the following licenses:
What was the problem with Dropbox / Google Drive / Soundcloud?

In the past I’ve used Myspace, MegaUpload, Dropbox, Google Drive, SoundCloud and . . .

.. that was bad. Really bad.

That was bad:

  • for users: invasive cookie banners, ads, trackers, endless ToS, bloatted apps, dark patterns
  • for creators: datacenters burn and services close sometime without notice, let aside the inevitable pricing updates, automated (self)censorship, endless migrations, and data loss on the way
  • for devs: we don’t want to choose between these services and self-hosting Wordpress / Nextcloud / XYZ (which are all nice but a pain to deploy, secure, maintain, upgrade, backup, etc)
Is it magic?

No. This is possible thanks to Hugo and Internet Archive.
This series of articles by Regis Philibert was a precious spark, the book Hugo in action an awesome reference, the Hugo and communities were priceless resources along the way

Also contributed to this project: Daniel Saunders, Utkarsh Verma, Sam Potts, ajlkn and the teams and communities around Plyr

Brought to you by Yann Dumoulin ( GitlabBlogGithub )

Want to give it a try?

The code is being reviewed and will hopefully get released in June 2023.
You can already join as early tester – or receive a notification only when it’s ready:

Get in touch

You can reach me – in english or in french – at or with the following form:

2023 – Yann Dumoulin ( GitlabGithub )