Neatbo.

Pack a portable local playlist

Bind local M3U references to selected originals, preserve repeated tracks and metadata, and download a complete relative-path ZIP with SHA256 reports.

Browser-local processingInputLocal extended M3U/M3U8 and selected mediaOutputPortable ZIP and complete reference SHA256 JSON/CSVUp to 20 MiB per file · File limit: 1010
  1. 1Add input
  2. 2Adjust settings
  3. 3Get your result

Tool input and files are processed in this browser without being uploaded.

Your input

Inputs are kept temporarily in this tab when switching tools. Refreshing or closing clears them; large results may need to be regenerated.

⌘ / Ctrl + Enter to run

or drag and drop them here

Files stay on this device. Your originals stay unchanged.

Up to 20 MiB per file · File limit: 1010

    Options

    Complete the required options first. You can keep the defaults for the rest.

    [[originalPath,selectedFilename],…]; paths remain inert. Every non-bare reference requires a pair, and every pair must be used. UTF-8 JSON ≤ 1 MiB.

    Preparing the tool…

    Before you start

    Select UTF-8 extended M3U/M3U8 playlists and every referenced media original. Bare filenames match exactly. For a path or local file URI, provide an explicit pair linking that original literal to one selected filename. The complete package copies referenced originals once and preserves every playlist occurrence.

    How to use this tool

    1. Select the playlists and all referenced media originals in one local batch.
    2. Enter binding pairs such as [["C:\Music\track.wav","track.wav"]]; leave [] only for exact bare selected filenames.
    3. Create the package and review references, repeated tracks, source hashes and unused selections.
    4. Download ZIP and complete JSON/CSV. Extract the entire package together before testing it in the intended player.

    Supported inputs and limits

    1–10 UTF-8 extended M3U/M3U8 files, each ≤ 1 MiB; 1–1,000 selected media originals, each ≤ 20 MiB; combined selected bytes ≤ 80 MiB. All limits apply together. Files ending in .m3u or .m3u8 are classified as playlists, regardless of MIME type.

    At most 10,000 ordered references, 200,000 physical playlist lines, 4,096 UTF-16 units per reference path or metadata line, and 512 UTF-16 units per selected basename. Up to 10,000 explicit binding pairs and 1 MiB of UTF-8 binding JSON. Duplicate exact selected basenames, duplicate or unused bindings, and missing targets reject the entire batch.

    Only #EXTM3U, #EXTINF and ordinary comments are supported. HLS, unknown #EXT directives, remote URLs, nested playlists and unbound non-bare paths are refused. A file URI may have no host or localhost; no query, fragment, credentials or remote authority is accepted. Nothing is fetched or executed.

    Complete JSON and formula-protected CSV together must fit 10 MiB. ZIP has a protective 96 MiB guard, dominated by the source and bounded rewrite limits; a legal 96 MiB package is not separately promised. The preview shows at most 200 rows and 2,000 UTF-16 units per cell; downloads retain every record. CSV formula-leading cells gain an apostrophe, while JSON retains exact original values.

    Media bytes are copied without decoding. A suffix is retained only as a generated package extension; it does not establish file authenticity, playback support, device compatibility or correct original path identity. Original disk files are never modified.

    Worked example

    Example input

    first.m3u8 and second.m3u8, 曲一.wav, 曲二.wav and unused.wav
    Example options
    {"bindings":"[[\"C:\\\\Music\\\\曲一.wav\", \"曲一.wav\"], [\"file:///Music/%E6%9B%B2%E4%BA%8C.wav\", \"曲二.wav\"]]"}

    Example output

    Three ordered references include a repeated first track. The ZIP contains two rewritten playlists and two byte-identical media copies; unused.wav is fully recorded but not copied.

    When something does not work

    Correct unsupported directives, missing originals, ambiguous names, bindings or the stated budget, then rerun. Cancellation discards the batch result; select the same originals to recover without modifying them.

    Frequently asked questions

    Will the tool find music on my disk from a playlist path?

    You must select the actual files. Non-bare paths require an explicit binding; a matching basename alone never proves that an absolute or relative path identifies the selected original.

    Does one repeated track get copied repeatedly?

    Every playlist occurrence remains in order, but the selected original is copied only once. Different playlists may reference the same generated media path.

    Can it convert WPL or validate playback?

    This profile accepts UTF-8 extended M3U/M3U8 only. It copies opaque media bytes and does not decode media, export WPL or guarantee a device can play the output.

    Documentation & further reading

    Related tools