Can FoxDL handle a playlist with millions of channels?

Short answer

Yes. The import is measured against a 2,000,000-channel playlist of about 485 MB: it finishes in roughly two minutes and lifts the app’s peak memory by around 9 MB, because the playlist is streamed to disk rather than read into memory, and committed in a single database transaction.

Reviewed 30 July 2026

Provider lists have grown far beyond what a naive parser survives. Reading a half-gigabyte M3U into memory on a phone is an instant crash, and loading a million rows into a list view is a frozen screen.

FoxDL avoids both. The parser reads the playlist as a stream and writes rows as it goes, the import commits in a single transaction so a half-finished list never ends up in your library, and browsing, searching and the player queue all read pages from the local database.

The numbers, from the import benchmark in the app’s own test suite: two million channels in a 485 MB playlist import in 123 seconds, peak memory rises 9 MB above baseline, the first page of the channel list draws in 4 ms, and a search across the whole list answers in 400 ms.

The long version M3U, Xtream Codes, EPG: what the words mean and which one you have M3U or Xtream, what an EPG needs to work, what causes buffering, and who can fix it.

Try it yourself

FoxDL is free to download. No account, no sign-up.

Download on the App Store