Skip to content

NIP-XX M3U Playlists over Nostr #1945

Open
@melvincarvalho

Description

@melvincarvalho

Spec: https://github.com/mp3url/mp3url/blob/gh-pages/NIP-XX.md

Implementation: https://mp3url.org/?nevent=nevent1qgsdqffyfecctx6f4kyhauntadhqh5hda64kjn432we9fhq6ughsjmgpp4mhxue69uhkummn9ekx7mqpzemhxue69uhhyetvv9ujumn0wd68ytnzv9hxgqgswaehxw309ahx7um5wgh8w6twv5q3gamnwvaz7tmjv4kxz7fwv3sk6atn9e5k7qpqef7qtrh387tunggweswyyc6clv0gykd867mz0yzrjdqcue25x9zsvynnrj

Create playlist: https://mp3url.org/create.html

Repeated for convenience:

NIP-XX — Sharing .m3u Playlists via Event Content

Author: Melvin Carvalho
Status: Draft
Type: Standard
Created: 2025-05-30
License: Public Domain


Abstract

This NIP proposes a convention for embedding .m3u (or .m3u8) playlist data directly in the content field of a Nostr event, enabling lightweight media playlist sharing and interoperability across Nostr clients.


Motivation

Music and media curation is a core part of internet culture. By supporting .m3u playlists in Nostr events, clients can display or play a stream of media from a user without additional protocol complexity. It enables community radio, shared mixtapes, curated video queues, and more — all within Nostr's existing event model.


Event Kind

This NIP recommends a new kind value:

  • 32100 — M3U Playlist Event (ephemeral or persistent)

Alternatively, clients MAY use a generic kind (e.g. 1) if playlists are mixed with textual commentary.


Content Format

The content field MUST contain a valid .m3u or .m3u8 text format. Clients SHOULD treat it as UTF-8. It MAY begin with #EXTM3U and include lines of metadata and media URLs.

Example

{
  "kind": 32100,
  "content": "#EXTM3U\n#EXTINF:123, Sample artist - Sample title\nhttp://www.example.com/music/sample.mp3\n#EXTINF:321, Another track\nhttps://ipfs.io/ipfs/QmExample",
  "tags": [["d", "lofi-mixtape"], ["alt", "M3U playlist"]]
}

Tags

The following tags are RECOMMENDED:

  • d (descriptor): A short name or label for the playlist.
  • alt: Human-readable description.
  • t (optional): Tags/keywords (e.g. genre).
  • u (optional): Source URL if playlist is mirrored elsewhere (e.g. NosDAV, Blossom, HTTP).

Client Behavior

Clients that support this NIP:

  • MAY detect if the content is valid .m3u and render a "Play Playlist" button or embedded player.
  • SHOULD sanitize and filter URLs before autoplaying.
  • MAY cache or prefetch media responsibly.
  • MAY provide export options to .m3u files.
  • MAY expand nevent strings.

Extensions

  • Live updates: Combine with other kinds for real-time, collaborative playlist editing.
  • IPTV: Compatible with IPTV

Security Considerations

  • Clients MUST validate and sandbox media URLs to avoid unsafe redirects or autoplay abuse.
  • Events SHOULD NOT be used to store large media files directly; only references (e.g. URLs or IPFS hashes) are recommended.
  • Respect copyright and licensing of referenced media.

Compatibility

This format is compatible with .m3u-aware players and can be exported for use in VLC, Winamp, and web-based streamers. Clients without media support will still display the raw text or a download link.


Copyright

This NIP is released into the public domain.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions