M3U Converter: to JSON, to CSV, and back
Upload a file or paste its contents, pick the output, download the result.
Drag & drop a file here, or click to browse
Supported formats: .m3u, .m3u8, .txt
Why move a playlist out of M3U
M3U is a decent transport format and a poor working one. No schema. No types. No way to query it. The moment you want to sort by group, diff two versions of a playlist file, or feed a channel list into code, you want it as something else entirely.
Conversion goes both ways. Out, to work on the data. Back, to get a playlist file that IPTV players will actually accept, which matters because a JSON array is a perfectly good way to hold channel data and a completely useless thing to hand to a set-top box that has only ever understood one format and is not about to learn another.
What converts to what
Six paths. The round trip is lossless in each direction:
- M3U to JSON: an array of objects, one per channel, ready to
JSON.parseand iterate. - M3U to CSV: one row per channel, openable in any spreadsheet without a plugin.
- JSON to M3U: back to a playlist, with the
#EXTM3Uheader and#EXTINFlines rebuilt. - CSV to M3U: the same, for anyone who would rather edit in a spreadsheet than in code.
- M3U8 to M3U: identical structure, and the encoding promise is the only thing that changes.
- JSON to CSV: skip the playlist entirely when you just want the data in a spreadsheet.
How the fields map
Five fields survive in both directions. Their names differ by format, so the mapping is written out here rather than left to be guessed at by anyone who has to debug it later, and the tvg-logo and group-title attributes are the two that most often catch people out, because the JSON names are shorter than the M3U ones and nothing warns you when a typo silently drops a column:
tvg-nameor the display title becomesname, and the CSV columnName.- The stream address becomes
url, and the columnURL. group-titlebecomesgroup, and the columnGroup.tvg-logobecomeslogo, and the columnLogo.tvg-idbecomesepgId, and the columnEPG ID.- Anything the M3U carried that is not one of these five is preserved verbatim on the round trip.
Editing in a spreadsheet
This is the workflow most people actually want. Export to CSV. Open it. Sort by group, find the forty entries with no logo, fix them in a single column, save, convert back. The same edit by hand in a text file is an afternoon, and you will miss three of them.
Commas and quotes inside values are escaped on the way out, so a channel called News, Live does not silently become two columns. Large files stay in the browser. Nothing is uploaded, which matters more than it sounds when the playlist is somebody's paid subscription.
M3U is one of several playlist formats
Worth knowing what you have before converting it. M3U and M3U8 are the same format, the second simply promising UTF-8, and both are what IPTV and HLS use. PLS is the older INI-style file that internet radio still leans on. XSPF is the XML one, rare outside a few desktop players.
This converter handles M3U and M3U8, in and out. Nothing else. If what you have is PLS or XSPF you will need to get it to M3U elsewhere first, and once it is M3U the playlist editor and the rest of the M3U tools all apply.
What it will not do
- It does not transcode video. A playlist is a list of addresses. Converting the list changes nothing about the streams it points at.
- It does not test whether the addresses work. That is the stream checker.
- It does not read PLS or XSPF. Convert those to M3U first, then come back.
Frequently Asked Questions
What data is preserved during conversion?
All standard M3U fields are preserved: channel name, stream URL, group title, logo URL, and EPG/TVG ID. The JSON and CSV outputs use clear, standardized column/field names for easy processing.
Can I edit the CSV in a spreadsheet and convert back?
Yes! That's one of the primary use cases. Convert M3U to CSV, open it in Excel or Google Sheets, make your edits (rename channels, reorganize groups, delete rows), save as CSV, then use this tool to convert it back to M3U format.
What JSON structure is used?
The JSON output is an array of objects, each with fields: name, url, group, logo, and epgId. Example: [{"name": "BBC One", "url": "https://...", "group": "UK", "logo": "", "epgId": ""}]
Are special characters handled correctly in CSV export?
Yes. Channel names and URLs containing commas, quotes, or newlines are properly escaped and quoted following the RFC 4180 CSV standard. The output is compatible with Excel, Google Sheets, LibreOffice, and all standard CSV parsers.
Can I convert playlists with thousands of channels?
Yes. The converter processes large playlists efficiently in your browser. Playlists with 5,000+ channels convert in seconds. The JSON and CSV outputs maintain the same channel order as the original M3U file.
Related Tools
You might also find these tools useful: