VYBE Open format
Open source, MIT license

The .vybe format is open.

A .vybe file is a whole song in one small file: the audio, the cover, the credits for everyone who made it, the lyrics with their sections, a waveform and the musical facts players need. Any app, website or tool can now read, play and create it, for free.

Version 1.1.0. Reader, player element, browser converter and command line tool. No dependencies. New in 1.1: full credits and lyrics by section.

No .vybe file yet? Make one from any song.

Why one file

Music usually travels as an audio file plus a pile of other things: a cover in another folder, lyrics on a website, BPM in a spreadsheet. A .vybe file keeps all of it together.

Credits and lyrics inside

Every artist, featured artist, writer, producer, singer and engineer, plus the label, year and copyright. Lyrics keep their parts (Intro, Verse, Hook, Bridge) and can play in time.

Waveform ready

A 2000 point waveform is built in, so players draw it instantly without decoding the audio.

Several codecs

Opus for modern browsers and Android, AAC for iOS, MP3 when needed. Players pick the one they can play.

Preview built in

A short clip of the best part, with fades, ready for cards, feeds and stories.

Music facts included

BPM, key and Camelot, loudness in LUFS, energy, sections, the drop and VYBE moods, measured when the file is made.

Small and fast

Usually a fraction of the size of a WAV. The index fits in the first bytes, so apps fetch only the parts they need.

What is inside

A short header, an index with one entry per chunk, then the chunks. Every chunk has a CRC32 checksum. Apps ignore chunk types they do not know, so the format can grow without breaking anyone.

VYBE magic, version, chunk count 12 bytes
index type, flags, offset, length, CRC 28 bytes each
META JSON metadata always first
PEAK waveform 2000 bytes
ARTW cover art webp or jpeg
POPS preview clip Opus
AOPS full song Opus
AAAC full song AAC
ChunkHolds
METATitle, artists, credits by role, label, year, copyright, BPM, key, loudness, VYBEs, lyrics with sections, license and more, as JSON. Required. See song information.
ARTWCover image, up to 1400 px.
AOPS / POPSFull song and preview, Ogg Opus, 48 kHz.
AAAC / PAACFull song and preview, AAC-LC (ADTS).
AMP3 / PMP3Full song and preview, MP3.
PEAKWaveform, 2000 values from 0 to 255.
SIGNSignature added by the VYBE server. Other apps keep it as is.

Quick start

Pick the way you work. The full API is in the README inside the kit.

Play a .vybe file with one tag
<script src="vybe-format/src/vybe-file.js"></script>

<vybe-file src="song.vybe"></vybe-file>
<vybe-file src="song.vybe" preview theme="dark"></vybe-file>
<vybe-file src="song.vybe" details></vybe-file>   <!-- with credits and lyrics -->

<script>
  // Or play a file the visitor picked
  document.querySelector('vybe-file').file = input.files[0];
</script>

What is in the kit

  • vybe.js: reader and writer for browsers, workers and Node.
  • vybe-file.js: the <vybe-file> player element, light and dark, keyboard friendly, with an optional credits and lyrics area.
  • vybe-info.js: the song information model: reads credits and lyrics from tags, file names and lyric files, and finds the song sections.
  • vybe-audio.js: picks the best stream for the browser and hands you playable URLs.
  • encode.js, analyze.js, worker.js: the converter that runs in the browser, with BPM, key, loudness and VYBE analysis.
  • bin/vybe.mjs: command line tool to inspect, verify, extract, convert and edit the song info.
  • SPEC.md, README.md and examples.

Free to use

The code is MIT licensed: use it in free or paid apps, change it, ship it. The VYBE name and logo are not part of the license, but you are welcome to say your app "reads .vybe files".

Music for your app

Want songs from VYBE artists inside your product, with streaming links and all of the above filled in?

VYBE Library API for partner apps