Si tu proveedor IPTV te ha enviado un acceso Xtream (servidor, usuario, contraseña) pero el reproductor que quieres usar solo admite una URL M3U —o al revés—, no estás atascado. Las dos cosas son lo mismo. Por debajo, un acceso Xtream es una forma ordenada de escribir todo lo que ya contiene una URL M3U.

Esta guía explica la conversión en ambos sentidos, qué hay que vigilar y cómo hacerlo sin teclear tus credenciales en ningún sitio donde un desconocido pueda leerlas. El conversor Xtream ↔ URL M3U de este sitio hace la conversión enteramente en tu navegador: detrás de esa página no hay ningún endpoint de servidor.

Tres fichas etiquetadas —servidor, usuario, contraseña— en la parte de arriba, con pulsos de color cayendo hasta las partes correspondientes de la fórmula de URL de get.php en la parte de abajo.

La URL M3U es una plantilla fija; un acceso Xtream son simplemente las tres credenciales encajadas en ella.

Por qué surge la conversión

El mismo proveedor casi siempre admite ambos formatos, pero el reproductor que te toque instalar solo te pedirá uno. Las apps difieren en algunos puntos concretos:

  • Reproductores de la vieja escuela que solo aceptan M3U (VLC, apps básicas de smart TV, decodificadores IPTV dedicados) admiten una sola URL. No saben nada de los endpoints de la API de Xtream; descargan un archivo de lista plano y reproducen las transmisiones desde él.
  • Reproductores con soporte Xtream (la mayoría de apps IPTV modernas, incluida Klipa) prefieren el trío de credenciales. Lo usan para descargar la lista de canales en directo, la biblioteca VOD, el catálogo de series y la EPG como documentos separados: mejor categorización, refresco dinámico y secciones bajo demanda que la exportación M3U no puede representar.

Si tu proveedor te ha dado uno y el reproductor quiere el otro, convertirlo es cuestión de 30 segundos. No tienes que pedirle al proveedor "el otro formato": ya te está dando los dos, simplemente en una forma.

La fórmula de Xtream a M3U

Todo proveedor Xtream usa la misma plantilla de URL. Una vez la conoces, puedes construir la URL M3U a mano a partir de las credenciales:

http://<servidor>:<puerto>/get.php?username=<USUARIO>&password=<CONTRASEÑA>&type=m3u_plus&output=mpegts

Tres ejemplos concretos, con las credenciales servidor: http://server.example:8080, usuario: ABC, contraseña: XYZ:

M3U:        http://server.example:8080/get.php?username=ABC&password=XYZ&type=m3u_plus&output=mpegts
EPG:        http://server.example:8080/xmltv.php?username=ABC&password=XYZ
player_api: http://server.example:8080/player_api.php?username=ABC&password=XYZ

Las piezas:

  • get.php es el endpoint de la lista. Siempre se llama get.php: aquí no hay una convención específica por proveedor.
  • type=m3u_plus pide el formato M3U extendido, que incluye logos de canal y nombres de grupo. type=m3u a secas también funciona, pero produce una lista más pobre; casi siempre quieres m3u_plus.
  • output=mpegts pide transmisiones que se reproducen en MPEG-TS en bruto. La otra opción habitual es output=hls, que produce URLs HLS (.m3u8), útiles para navegadores y algunos dispositivos Apple, menos universales en decodificadores de TV. Si tu reproductor es quisquilloso, cambiar output es lo primero que hay que probar.
  • xmltv.php es el endpoint de la EPG. Mismas credenciales, documento aparte. La mayoría de reproductores piden esta URL en otro campo ("URL de EPG" o "URL XMLTV").
  • player_api.php es la API JSON. Los reproductores que "hablan Xtream de forma nativa" la usan para obtener los árboles de directos, VOD y series, y los logos de canal.

El reverso: extraer credenciales de una URL M3U

Dada una URL M3U que tenga la forma de la fórmula anterior, puedes leer los tres campos Xtream directamente:

http://server.example:8080/get.php?username=ABC&password=XYZ&type=m3u_plus
                                            └────┘          └────┘
                                           usuario        contraseña
  • Servidor es todo lo que va antes de la primera barra tras el host: http://server.example:8080. Quita /get.php y todo lo que venga después.
  • Usuario es el valor del parámetro de consulta username.
  • Contraseña es el valor del parámetro de consulta password.

Si falta algún parámetro, la URL no está en el formato estándar de Xtream. Algunos proveedores entregan URLs M3U sencillas que no llevan credenciales dentro: típicamente listas estáticas o basadas en token, donde la propia URL es el secreto. De esas no hay nada que extraer; simplemente usa la URL tal cual en cualquier reproductor que admita M3U.

Pegas habituales

Hay un puñado de detalles que despistan a la gente con regularidad.

Codificación de caracteres especiales en la URL

Si tu contraseña contiene caracteres como &, =, +, #, % o /, hay que codificarlos con porcentaje dentro de la URL. Un & literal en mitad de la contraseña rompe el parseo de la URL: el reproductor trataría todo lo que viene detrás como otro parámetro de consulta.

La mayoría de paneles de control de los proveedores lo hacen por ti. Si construyes la URL a mano y tu contraseña tiene algún carácter raro, pasa la contraseña antes por cualquier herramienta de "URL encode". O sáltatelo del todo y deja que el conversor en el navegador lo haga por ti.

El puerto

Los proveedores Xtream casi nunca corren en los puertos por defecto 80 o 443. Los habituales son 8080, 25461, 8000 o algún puerto alto al azar. El puerto forma parte de la URL del servidor, no es opcional. Si ves http://server.example/get.php?… sin puerto, o se está usando el 80 (raro) o el proveedor tiene un proxy inverso delante (también raro). La mayoría de las veces el puerto falta porque alguien copió la URL a mano y se lo dejó.

http frente a https

La mayoría de proveedores Xtream sirven por HTTP, no por HTTPS. La forma https:// suele devolver un error de certificado o un 404 porque el servidor ni siquiera tiene TLS configurado. Si te han pasado una URL de servidor con https:// y no funciona, prueba con http:// a secas. La contrapartida es que tu contraseña viaja ahora sin cifrar; por desgracia, es la norma en proveedores IPTV.

Ruta personalizada en la URL M3U

Algunos proveedores personalizan su enrutado: en lugar de /get.php verás /playlist.m3u, /m3u.php o incluso /index.php?type=m3u. Las credenciales dentro de esas URLs siguen coincidiendo con las que espera la API Xtream, así que el conversor las extraerá bien, pero la URL de la lista que usa el proveedor no es estándar. Si construyes tu propia URL M3U usando la ruta estándar /get.php, puede que el proveedor la rechace. Para estos casos, conserva la URL original que te dio el proveedor; no intentes "arreglarla".

Espacios en blanco al final de las credenciales

Al pegar desde un correo o un foro es habitual arrastrar un espacio invisible, un salto de línea o un espacio no separable al final del usuario. La API Xtream trata ABC y ABC como usuarios distintos; recibirás una respuesta de autenticación fallida idéntica a la de una contraseña incorrecta. El conversor recorta los espacios del usuario automáticamente y te avisa cuando tiene que hacerlo. Si construyes la URL a mano, pega cada campo primero en un editor de texto plano y revisa el final a ojo.

Hacer la conversión de forma segura

Varias webs ofrecen esta conversión online. La mayoría son fiables; algunas son turbias. El riesgo es claro: las credenciales que pegues en el formulario de un desconocido pueden quedar registradas, recolectadas o reutilizadas. Incluso un operador honesto y sin mala intención tiene logs de acceso.

El conversor de este sitio está construido de forma que no puede tener logs de acceso con tus credenciales, porque no hay ningún endpoint de servidor detrás. La conversión corre íntegramente en tu navegador en JavaScript. Las credenciales viven en los elementos input del DOM hasta que cierras la página; no están en la barra de direcciones, no están en localStorage y no se envían a ningún sitio. Si abres la pestaña de red del navegador durante una conversión, verás exactamente cero peticiones salientes que lleven las credenciales.

Ese es el estándar que deberías esperar de cualquier herramienta que pida credenciales IPTV. Si la interfaz de un conversor hace una petición de red al pulsar "convertir", por definición ha transmitido tus credenciales a algún sitio.

Tras convertir: verifica antes de importar

Una URL construida con éxito no implica una URL que funcione. Ambas direcciones de la conversión son transformaciones deterministas de cadenas: como transformaciones son correctas, pero no te dicen si las credenciales son válidas, si la suscripción está al día o si el servidor está disponible.

Dos comprobaciones baratas antes de importar nada:

  • Para URLs M3U, pega el resultado en el comprobador de listas M3U. Descarga la lista, la parsea y prueba los 100 primeras transmisiones. Todo en verde significa que la URL está bien; cualquier rojo te indica el modo de fallo concreto (respuesta HTML, 404, canales muertos).
  • Para credenciales Xtream, pega el trío en el comprobador de credenciales Xtream. Llama a la API desde servidor y devuelve estado de autenticación, caducidad, límites de conexiones y número de canales. Distingue "contraseña incorrecta" de "suscripción caducada" o "servidor inaccesible".

Pasar una de estas comprobaciones antes de molestarte en instalar un reproductor ahorra unos veinte minutos de depuración cuando el problema está en las credenciales en sí.

Cuando la URL M3U no contiene credenciales

Una pequeña fracción de las URLs M3U que te encontrarás no son Xtream para nada. Son listas planas alojadas en un servidor estático, o URLs portadoras de token donde el secreto está dentro de la ruta y no en la cadena de consulta:

https://server.example/playlists/9c1f4a8b3e/stream.m3u8

Aquí no hay nada que extraer: la propia URL es la credencial. Funcionan tal cual en reproductores solo-M3U. No tienen representación equivalente en Xtream porque no las genera el panel Xtream Codes; vienen de una pila IPTV distinta (más antigua). Si tu proveedor solo te dio esto y tu reproductor insiste en credenciales Xtream, es que no tiene un acceso Xtream que darte. Pregúntale al proveedor o usa un reproductor que acepte URLs M3U.

Cómo se ve esto en Klipa

Klipa acepta ambas formas en la misma biblioteca, una al lado de otra. Puedes añadir una URL M3U y un acceso Xtream del mismo proveedor como fuentes separadas; la app usa la que esté sana. Si un día la exportación M3U empieza a devolver HTML, la llamada a la API Xtream mantiene viva tu lista de canales hasta el siguiente refresco, y viceversa.

Esa es la respuesta sencilla a "¿qué formato debería usar?": los dos. Si solo eliges uno, la comparación entre Xtream y M3U cuenta cuándo conviene empezar por cada uno.