Extraer URLs de un texto
Saca todas las URLs http/https de cualquier bloque de texto a un array JSON sin duplicados
Texto
URLs
¿Qué es el extractor de URLs?
Tienes un hilo de correo de 200 líneas, un export de un canal de Slack, un archivo de log, una transcripción de soporte al cliente o unas notas en markdown — y quieres todas las URLs que menciona, en orden, sin duplicados, listas para pegar en otro sitio. Quizá estás auditando qué enlaces pulsó un cliente. Quizá estás peinando un documento en busca de referencias salientes antes de publicarlo. Quizá estás pasando las URLs a un crawler. Sea lo que sea, no te apetece scrollear y copiar y pegar 40 veces. Suelta el texto en el panel izquierdo y el panel derecho te devuelve un array JSON con todas las URLs que encontró.
La extracción se basa en un regex sencillo que casa http:// y https:// seguido de cualquier secuencia de caracteres no blancos. Cada coincidencia se recorta de la puntuación final que casi nunca forma parte de una URL (punto, coma, punto y coma, paréntesis o corchete de cierre — esas cositas que aparecen cuando una frase termina con un enlace) y se valida con el constructor URL. Si el constructor la acepta, es real; si lanza, se descarta. Los duplicados se eliminan preservando el orden de aparición — gana la primera vez. El planteamiento se alinea con lo que el WHATWG URL Standard llama "URL parsing" y con cómo los regex de JavaScript suelen detectar URLs.
La salida es un array JSON de strings, en el mismo orden en que aparecieron las URLs. Si no había ninguna URL en el texto, recibes [] — array vacío, sin error, sin toast. Todo se ejecuta en tu navegador. No se sube nada, no se loguea nada. El RFC 3986 es la spec subyacente sobre lo que cuenta como URL válida, y el constructor URL la implementa.
Cómo usar el extractor
Tres pasos. Cada uno se corresponde con un botón de esta página.
Pega el texto o carga el ejemplo
Suelta tu texto en el panel izquierdo — el cuerpo de un correo, un archivo de log, una transcripción, un artículo, lo que sea. Pulsa Ejemplo para cargar un caso realista: una nota interna del equipo con cuatro URLs salpicadas. Entrada de ejemplo:
Hola equipo — revisad el pedido en https://api.shop.example.com/v1/orders/ORD-1001
y echad también un ojo al panel https://admin.shop.example.com/dashboard?tab=orders.
La cliente (Ava Chen) escribió por http://support.shop.example.com/tickets/T-4521 — ved también la documentación en https://docs.shop.example.com/api/orders.El extractor solo coge URLs <code>http://</code> y <code>https://</code>. Los dominios sueltos como <code>shop.example.com</code> sin esquema se ignoran (son ambiguos — pueden ser un hostname, un nombre de archivo o simplemente texto).
Lee el array de URLs
El panel derecho muestra un array JSON de URLs en orden de aparición, con los duplicados eliminados. La puntuación final que venía de la frase de alrededor se quita. Cada URL se valida con el constructor URL — todo lo malformado se descarta sin avisar, así que el array solo contiene URLs reales y parseables.
Copia o descarga
Pulsa Copiar para mandar el JSON al portapapeles, o Descargar para guardarlo como archivo .json. Minificar compacta el array en una sola línea por si lo necesitas para una entrada de log. Usa Limpiar en la entrada para empezar con un texto nuevo.
Cuándo lo vas a usar de verdad
Auditar tickets de soporte al cliente
Un cliente pega un hilo largo de correos en un ticket. El agente (Marco Rivera) necesita saber todas las URLs a las que está haciendo referencia. Suelta el cuerpo del correo aquí, te llevas el array, abres cada una. Te ahorra el dolor de ojos del scroll y el riesgo de saltarte alguna.
Crawlear un export de Slack o Discord
Has exportado un canal y quieres pasar todos los recursos enlazados por tu link checker o tu bot de archivado. El export es JSON o HTML, pero las URLs vienen mezcladas con texto, emojis y metadatos. Pega todo aquí y tienes una lista de URLs limpia lista para un fetch() en bucle.
Auditoría de enlaces antes de publicar posts y docs
Priya Patel está a punto de publicar un post de 4.000 palabras y quiere comprobar que todos los enlaces salientes siguen funcionando. Pega el markdown fuente, te llevas el array de URLs, las pasas por un checker. Las recomendaciones de Google sobre rastreo de enlaces dan por hecho que tus enlaces funcionan — los rotos hacen daño al ranking.
Sacar URLs de logs estructurados
Los logs de aplicación a menudo llevan URLs metidas en mensajes de error, trazas de petición o campos de referrer. Si estás investigando un incidente y necesitas ver todas las URLs que pasaron por una ventana de 5 minutos, pega el trozo de log y deduplica. Muchas veces esa lista deduplicada es la forma más rápida de detectar la URL rara que disparó la cascada.
Preguntas frecuentes
¿Coge ftp:// o mailto: u otros esquemas?
No — solo http:// y https://. Los enlaces web son lo que la gente suele querer decir con "extraer URLs", y el regex es a propósito estricto para evitar falsos positivos. Si necesitas otros esquemas, el WHATWG URL Standard los soporta pero la detección se vuelve más imprecisa (las direcciones mailto: pueden parecer texto, ftp: ya casi no se usa). Abre una petición si tienes el caso de uso real.
¿Cómo trata los enlaces de markdown como [texto](https://example.com)?
Bien. El regex encuentra https://example.com dentro de los paréntesis y el recorte de puntuación final se carga el paréntesis de cierre. Así sacas la URL pelada de markdown, BBCode, HTML <a href> y la mayoría de sintaxis sin necesitar parsing específico para cada formato.
¿Los duplicados se conservan o se quitan?
Se quitan, conservando el orden de la primera aparición. Si tu texto menciona https://shop.example.com tres veces, aparece una vez en la salida, en la posición de la primera. La deduplicación es un filtro Set sencillo — mira MDN sobre Set.
¿Y las URLs con caracteres raros — pipes, corchetes, paréntesis?
Los pipes (|) y los corchetes son válidos en URLs pero raros en URLs reales, así que el regex los pilla mientras no estén precedidos por un espacio. Los corchetes y paréntesis de cierre justo al final del match se recortan porque es mucho más probable que sean puntuación que parte de la URL. Si tienes una URL real que termina en ), el constructor URL la aceptará igualmente — pero tendrías que poner un espacio detrás en el texto para que el paréntesis de cierre se quede pegado.
¿Hay un límite de tamaño?
Sí — 1 MB. Eso son unas cuantas miles de páginas de texto, más que suficiente para cualquier hilo de correo, transcripción o trozo de log que vayas a pegar. Si tienes un archivo de varios megas, divídelo en trozos o pásale antes grep/ripgrep en la línea de comandos.
¿Funciona offline?
Sí. Todo se ejecuta en tu navegador — la coincidencia con el regex, la validación de la URL, la deduplicación. El único tráfico de red es la carga inicial de la página. Una vez abierta, puedes desconectar y la herramienta sigue funcionando. El constructor URL viene de serie en cualquier navegador moderno según la URL API.
Otras herramientas de URL y texto
Extraer es una operación. Esto es lo que pega de forma natural con ella: