IMPORTHTML / IMPORTXML — convierte HTML pegado a XLSX y explica fórmulas de Google Sheets
Pega una tabla HTML (de Ver código fuente, un email o un PDF convertido) y conviértela a XLSX, CSV, TSV, Markdown o JSON. O pega una fórmula =IMPORTHTML(...) y te la explico argumento por argumento con el glosario de errores oficiales. 100% en tu navegador. Sin upload, sin login, sin tracking.
Convierte tablas HTML pegadas a XLSX/CSV/TSV/MD/JSON y explica fórmulas IMPORTHTML/IMPORTXML. Sin login, sin servidores, sin IA. Respeta los términos de uso del sitio del que extraigas los datos.
1. Pega el HTML o sube un archivo
Funciona con tablas <table> y listas <ul>/<ol> HTML5 estándar. Soporta colspan y rowspan.
También puedes arrastrar y soltar. Solo se procesa en tu navegador.
o arrastra un archivo .html
También puedes arrastrar y soltar. Solo se procesa en tu navegador.
4 ejemplos precargados
Formato de salida
1. Pega una fórmula IMPORTHTML / IMPORTXML / IMPORTDATA / IMPORTFEED
Detecto automáticamente la función y separo los argumentos. Ejemplos abajo.
IMPORTHTML e IMPORTXML son funciones del lado servidor de Google Sheets, no del navegador. Por la política CORS (Cross-Origin Resource Sharing) de seguridad web, tu navegador no puede hacer una petición HTTP a un sitio externo en nombre de la herramienta y leer la respuesta. Para ejecutar la fórmula contra el sitio real, cópiala y pégala en Google Sheets — allí sí funciona con el proxy automático de Google. Esta herramienta te ayuda a entender la fórmula, generarla correctamente y, en el Modo A, preparar el HTML que pegarías.
Insertar ejemplo de función:
2. Fórmula explicada
3. Glosario de errores oficiales
Los 5 errores más comunes al usar IMPORTHTML/IMPORTXML, con explicación y fix concreto.
Asistente: genera la fórmula paso a paso
Rellena los campos y la fórmula se construye en vivo.
⚠ Limitaciones y honestidad técnica
Esta herramienta está diseñada para el caso "tengo HTML pegado o una fórmula Sheets que no entiendo". NO hace:
- No ejecuta IMPORTHTML contra sitios remotos. Es limitación CORS del navegador, no de la tool. Para ejecución real, pega la fórmula en Google Sheets.
- No procesa sitios con JavaScript dinámico. Solo HTML estático de "Ver código fuente". Para sitios dinámicos necesitas Puppeteer/Playwright o un SaaS de scraping.
- No sube nada a servidores nuestros. Solo Funding Choices y AdSense cargan scripts externos del CDN de Google (requisito legal). Verificable con DevTools → Network.
- No usa IA / LLM. Vanilla JS puro con DOMParser nativo y dos libs vendored (SheetJS + PapaParse).
- Máx. 50.000 filas por tabla / 5 MB HTML de entrada. Más allá, el navegador empieza a sufrir.
- Respeta los términos de uso del sitio del que extraigas datos. Esta herramienta no se hace responsable del uso que hagas de los datos extraídos.
Qué hace esta herramienta
Una herramienta 2-en-1 para usuarios de Google Sheets y Excel que necesitan traer datos web a una hoja de cálculo. El Modo A convierte HTML pegado (de Ver código fuente del navegador, de un email, de un PDF convertido a HTML) en datos limpios exportables a XLSX, CSV, TSV, Markdown o JSON. El Modo B explica y formatea las funciones oficiales de Google Sheets para importar datos web: IMPORTHTML, IMPORTXML, IMPORTDATA e IMPORTFEED. Todo el procesado ocurre en tu navegador: el HTML no se sube a ningún servidor, las fórmulas se analizan localmente con regex.
Casos de uso reales
- Analista que pega una tabla de Wikipedia a Sheets. Estás haciendo un informe sobre PIB per cápita de países UE. Vas a Ver código fuente en Wikipedia, copias la tabla HTML, la pegas en el Modo A, seleccionas índice 2 (la tabla que quieres), exportas a XLSX y abres directamente en Sheets. 30 segundos, sin instalar Python.
- Desarrollador que quiere entender por qué IMPORTHTML devuelve #ERROR!. Pegas la fórmula en el Modo B y ves argumento por argumento: URL válida (✓), query "table" (✓), índice 5. Abajo en el glosario: #ERROR! significa "el índice no existe". Vuelves al sitio, cuentas las tablas: solo hay 4. Cambias el índice a 3 y listo.
- Estudiante que necesita los datos en Excel, no en Sheets. Tu profesora pide un Excel con los 250 mejores films de IMDb. Vas a la página, copias el HTML, lo pegas aquí, exportas a XLSX y se lo envías. Sin subir nada a convertcsv.com ni similar, sin perder media hora esperando cola de uploads.
- Periodista de datos scrapeando un portal público (datos.gob.es). Estás haciendo un reportaje sobre contratos públicos. Pegas la tabla HTML, exportas a CSV con codificación UTF-8 (BOM para Excel ES), y lo abres en tu herramienta de análisis (R, pandas, OpenRefine). Cada domingo actualizas manualmente la cifra — sin scraping automatizado.
- Profesional que quiere entender XPath para IMPORTXML. Tienes una URL y sabes que quieres extraer el segundo precio de una página de e-commerce. Pegas tu fórmula en el Modo B, ves que
xpath_queryes el segundo argumento, y abajo tienes 8 ejemplos precargados para copiar y adaptar.
Cómo se usa
- Elige el Modo A (Pegar HTML) si tienes HTML pegado en el portapapeles o quieres convertir una tabla. Elige el Modo B (Explicar fórmula) si tienes una fórmula Sheets que no entiendes o quieres generar una desde cero.
- Modo A: pega HTML en el textarea, arrastra un archivo .html, o haz clic en uno de los 4 ejemplos precargados (Wikipedia, IMDb, datos.gob.es, Yahoo Finance). Ajusta las opciones (tipo, índice, cabeceras, etc.) y pulsa Parsear HTML.
- Modo A continuación: revisa la vista previa. Verás el número de filas, columnas y tablas detectadas. Si hay varias tablas, ajusta el índice 1-indexado (alineado con IMPORTHTML). Elige el formato de salida (XLSX, CSV, TSV, MD, JSON) y pulsa Exportar.
- Modo B: pega tu fórmula en el textarea o usa los chips para insertar un ejemplo. Pulsa Explicar fórmula. Verás la función detectada coloreada, los argumentos en una tabla con su descripción, y el glosario de errores comunes con fix concreto.
- Modo B continuación: si quieres generar una fórmula nueva, usa el asistente inferior: rellena URL, tipo, índice (o XPath para IMPORTXML) y la fórmula se construye en vivo. Cópiala con un click.
Por qué esta herramienta
Las alternativas gratuitas existentes — TableConvert, ConvertCSV, CodeBeautify, BeautifyTools — son todas en inglés, ninguna explica las fórmulas IMPORTHTML/IMPORTXML, y la mayoría sube el HTML al servidor. Esta herramienta es la única que combina extracción HTML pegado + explicador de fórmulas IMPORTHTML/IMPORTXML/IMPORTDATA/IMPORTFEED, con bilingüismo ES/EN nativo y procesado 100% client-side. El truco de la fórmula IMPORTHTML con data URI para HTML estático pequeño es único en el mercado.
Privacidad: El HTML pegado y las fórmulas se procesan localmente. Solo Funding Choices y AdSense cargan scripts externos (requisito legal de monetización).
Preguntas frecuentes
¿Necesito registrarme o pagar?
No. Cero registro, cero email, cero tarjeta, cero paywall, cero plan premium. La monetización es mediante donaciones voluntarias en Ko-Fi (botón en la esquina inferior derecha).
¿Por qué no ejecuta IMPORTHTML directamente contra el sitio web?
Por la política CORS (Cross-Origin Resource Sharing) de seguridad web: tu navegador no puede hacer una petición HTTP a un sitio externo en nombre de esta herramienta y leer la respuesta. IMPORTHTML funciona en Google Sheets porque allí Google actúa como proxy autorizado. Esta herramienta te ayuda a (a) entender la fórmula, (b) prepararla correctamente, y (c) si tienes el HTML, convertirlo directamente a XLSX.
¿Funciona con HTML dinámico (React, Vue, Angular)?
No. Esta herramienta procesa el HTML estático que recibes de Ver código fuente. Si el sitio renderiza con JavaScript en el navegador, ese HTML dinámico no está en el código fuente — necesitarías un headless browser (Puppeteer, Playwright) o un SaaS de scraping. Para esos casos existen alternativas como Browse AI, Apify o Instant Data Scraper (extensión Chrome), pero son verticales adyacentes con monetización de pago.
¿Qué pasa con el HTML que pego?
Se mantiene en memoria JavaScript de tu navegador, sin subirlo a ningún servidor. Puedes verificarlo abriendo DevTools → Network: verás cero peticiones con tu HTML después de pegarlo. La única excepción son Funding Choices y AdSense (requisito legal para monetizar).
¿Qué diferencia hay entre IMPORTHTML y IMPORTXML?
IMPORTHTML es de "alto nivel": extrae una tabla/lista entera por índice (1, 2, 3...) sin que tengas que escribir el selector. IMPORTXML es de "bajo nivel": necesitas escribir una expresión XPath para indicar exactamente qué elemento quieres. IMPORTHTML es más fácil para empezar; IMPORTXML es más preciso cuando necesitas un dato específico.
¿Las fórmulas generadas funcionan en Microsoft Excel?
No. IMPORTHTML, IMPORTXML, IMPORTDATA e IMPORTFEED son funciones exclusivas de Google Sheets. Excel tiene POWER QUERY y WEBSERVICE pero la sintaxis es totalmente distinta. Esta herramienta está pensada para usuarios de Sheets; si usas Excel, convierte el HTML directamente a XLSX en el Modo A.
¿Cuál es el límite de filas y de HTML?
La herramienta maneja cómodamente hasta 50.000 filas por tabla y 5 MB de HTML de entrada. Para datasets más grandes, el navegador empieza a sufrir y la alternativa correcta es un script Python (BeautifulSoup, pandas) o un SaaS server-side.
¿Qué hace el truco de la fórmula IMPORTHTML con data URI?
En lugar de pasar una URL de un sitio remoto, puedes pasar una URL data:text/html;base64,... con tu HTML incrustado. Esto permite ejecutar la fórmula IMPORTHTML contra HTML estático pequeño directamente en Sheets, sin que Google tenga que contactar ningún sitio. La limitación: el HTML debe tener menos de ~1500 caracteres por el límite de longitud de strings en Sheets.
¿Funciona offline?
Sí, tras la primera carga. El Service Worker cachea todos los assets (HTML, CSS, JS, las 2 libs vendored). Desconecta internet → la herramienta sigue funcionando 100%. Verificable con DevTools → Network → Offline.
Apoya el proyecto en Ko-Fi · Volver al directorio 1000 Herramientas Web
Cómo funciona esta herramienta: el flujo real de pegar HTML y explicarlo en el navegador
Esta herramienta combina dos flujos independientes en una sola página, ambos 100% client-side. El Modo A toma HTML pegado (de Ver código fuente del navegador, de un email, de un PDF convertido a HTML, del portapapeles tras copiar una tabla) y lo convierte en datos limpios exportables a cinco formatos: XLSX, CSV, TSV, Markdown y JSON. El Modo B toma una fórmula de Google Sheets pegada (=IMPORTHTML(...), =IMPORTXML(...), =IMPORTDATA(...) o =IMPORTFEED(...)) y la explica argumento por argumento, con un glosario de errores oficiales y un wizard que genera la fórmula en vivo.
La diferencia estructural con TableConvert, ConvertCSV, Convertio, CodeBeautify, BeautifyTools y Aspose es que absolutamente ningún byte del HTML pegado sale del navegador. Vamos a ver el flujo técnico real de cada modo.
Modo A — Flujo de pegado de HTML a XLSX/CSV/TSV/MD/JSON
Cuando el usuario pega HTML en el textarea (o arrastra un archivo .html, o hace clic en uno de los 4 ejemplos precargados: Wikipedia, IMDb, datos.gob.es, Yahoo Finance), el primer paso es parsear el HTML con DOMParser nativo del navegador. La elección de DOMParser es deliberada: es una API del navegador, sin librería externa, estable desde IE11, y maneja correctamente todas las estructuras HTML5 estándar incluyendo <thead>, <tbody>, <th>, <td>, <tr>, atributos colspan y rowspan, y la estructura completa de listas <ul>/<ol>/<li>.
El parser extrae los elementos top-level: todas las <table> si el usuario eligió "tablas", todas las <ul> y <ol> si eligió "listas", o ambos si eligió "auto (detectar)". A cada elemento se le asigna un id 1-indexado, alineado con la semántica de IMPORTHTML (que también empieza en 1). Por cada tabla, el parser recorre sus filas (<tr>) y, dentro de cada fila, sus celdas (<th> o <td>). Si la tabla tiene <thead>, la primera fila del thead se trata como cabecera.
Hay 4 opciones de limpieza que el usuario puede activar/desactivar: "Primera fila como cabecera" (trata la primera fila como nombre de columna, que se usa luego como clave en el export JSON), "Limpiar HTML interno de celdas" (extrae solo el texto con textContent en lugar de innerHTML, eliminando enlaces, imágenes, estilos), "Decodificar entidades HTML" (convierte & en &, ' en ', etc., tanto las entidades con nombre como las numéricas decimales y hexadecimales), y "Normalizar espacios en blanco" (colapsa múltiples espacios/saltos de línea en un único espacio y recorta extremos).
Una vez parseado, el preview muestra una tabla HTML con scroll vertical (max 480px de alto, 200 filas visibles máximo por rendimiento), sticky header con los nombres de columna, y stats (número total de tablas, filas agregadas). El usuario puede cambiar el índice 1-indexado con un dropdown para ver una tabla específica. Si solo hay una tabla, el dropdown queda fijo en 1.
Modo A — Export a XLSX con SheetJS
El export a XLSX es la pieza más interesante técnicamente. Lo que hacemos es:
- Construir un array-of-arrays (AoA) con las filas de la tabla seleccionada, normalizando cada celda a string.
- Crear un worksheet con
XLSX.utils.aoa_to_sheet(aoa). - Aplicar estilos a la primera fila: bold + fondo gris claro (
#FFE0E0E0en ARGB), alineado con la convención de hojas de cálculo profesionales. - Calcular ancho de columna automático: para cada columna, medir la longitud máxima de sus celdas y aplicar
wch = Math.min(maxLen + 2, 50)(ancho en caracteres, cap a 50 para evitar columnas absurdamente anchas). - Crear un workbook, añadir el worksheet con nombre "Table" o "List" según el tipo detectado, y serializar a
type: 'array'para obtener unArrayBuffer. - Envolver en un
Blobcon MIMEapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet. - Crear un
<a download>sintético, hacerclick(), y revocar el object URL tras 1 segundo.
Resultado: un XLSX válido que abre en Excel, LibreOffice Calc, Google Sheets y Numbers sin conversiones. UTF-8 limpio, sin marca de agua, sin metadatos raros, sin password. El archivo se descarga directamente sin pasar por ningún servidor. Verificable: abre DevTools → Network antes de exportar y verás que la única petición que se hace es a blob:https://... (el blob local), nunca a un servidor externo con tus datos.
Modo A — Export a CSV/TSV con PapaParse
Para CSV y TSV usamos PapaParse, una librería OSS madura (13K+ stars en GitHub) que implementa correctamente RFC 4180: comillas dobles cuando hay comas, saltos de línea o comillas dentro de celdas, escapes "" para comillas dobles dentro de celdas, y line endings CRLF. Para CSV añadimos un BOM UTF-8 al inicio para que Excel ES/EN detecte correctamente la codificación (sin BOM, Excel interpreta el CSV como Latin-1 y rompe acentos). Para TSV no añadimos BOM (Excel maneja TSV sin BOM, y un BOM en TSV confunde a OpenRefine y pandas).
El export a Markdown genera una tabla markdown estándar: cabecera entre pipes, separador | --- | --- | --- |, y cada fila entre pipes. Los caracteres pipe dentro de celdas se escapan con backslash. Saltos de línea internos se reemplazan por espacios para mantener la celda en una sola línea.
El export a JSON genera un array de objetos, donde cada objeto es una fila y las claves son los nombres de columna de la primera fila. Padding automático: filas con menos columnas que la cabecera se rellenan con string vacío. JSON pretty-printed con indent 2 para legibilidad.
Modo B — Parser de fórmulas IMPORTHTML/IMPORTXML/IMPORTDATA/IMPORTFEED
El parser de fórmulas es vanilla JS puro, sin librería externa. El algoritmo:
- Trim y, si empieza por
=, eliminar el signo igual. - Regex
/^([A-Z]+)\s*\(([\s\S]*)\)\s*$/para capturar nombre de función y cuerpo de argumentos. - Validar que la función está en la lista cerrada:
IMPORTHTML,IMPORTXML,IMPORTDATA,IMPORTFEED. Si no, error "función no soportada". - Tokenizar los argumentos con un tokenizador custom que maneja comillas dobles y simples, escapes
""para comillas dentro de strings, números con signo y punto decimal, y separadores por coma respetando espacios y comas dentro de strings. - Para cada argumento esperado (la tabla
FUNCStiene la signature esperada con sus descripciones), comparar con el argumento provisto. Marcar ✓/⚠ en una tabla. - Si hay más argumentos que los esperados (ej. usuario pasó 4 argumentos a una función de 3), marcar como "extra" en amarillo.
- Renderizar la fórmula original con highlight: nombre de función en verde ácido, strings en verde, números y referencias en azul.
El parser es robusto: maneja =importhtml(...) en minúsculas (convertimos a mayúsculas), comillas simples o dobles, espacios variables, argumentos vacíos, y números como 1, 1.5, -3.
Modo B — Wizard de generación de fórmulas
El wizard es un formulario reactivo: el usuario rellena URL, tipo (table/list/xpath), índice, XPath y locale, y la fórmula se reconstruye en vivo con un debounce de 100ms. La fórmula resultante aparece en un textarea readonly que el usuario puede copiar con un click (usando navigator.clipboard.writeText con fallback a document.execCommand('copy') para navegadores antiguos).
El wizard soporta las dos firmas principales: IMPORTHTML con (url, query, index) (query = "table" o "list"), e IMPORTXML con (url, xpath, locale?). Para IMPORTXML, el campo XPath se muestra solo si el usuario selecciona "xpath" en el tipo de extracción. Para IMPORTHTML, el campo índice es siempre visible. El campo locale aparece solo para IMPORTXML (parámetro opcional).
Truco de la fórmula IMPORTHTML con data URI
Existe un truco conocido por pocos power-users: en lugar de pasar una URL de un sitio remoto, puedes pasar una URL data:text/html;base64,... con tu HTML incrustado. Esto permite ejecutar la fórmula IMPORTHTML contra HTML estático pequeño directamente en Sheets, sin que Google tenga que contactar ningún sitio. La limitación técnica: el HTML debe tener menos de ~1500 caracteres por el límite de longitud de strings en Sheets para argumentos de fórmulas (las celdas aceptan hasta 50.000 caracteres, pero los argumentos de fórmulas están más limitados).
Esta herramienta implementa ese truco en el botón "Cross-link" del Modo A: si el HTML pegado tiene menos de 1500 caracteres, genera automáticamente =IMPORTHTML("data:text/html;base64,...", "table/list", 1) y la pega en el Modo B explicada. Si tiene más de 1500 caracteres, genera una fórmula con placeholder de URL y avisa al usuario.
Honestidad técnica: por qué NO ejecutamos IMPORTHTML
IMPORTHTML e IMPORTXML son funciones del lado servidor de Google Sheets, no del navegador. Google Sheets las ejecuta contra sus propios servidores, que hacen la petición HTTP al sitio remoto con un User-Agent específico y un proxy autorizado. Por la política CORS (Cross-Origin Resource Sharing) de seguridad web — implementada por todos los navegadores modernos desde 2009 — un script en el navegador no puede hacer una petición HTTP a un sitio externo y leer la respuesta, salvo que ese sitio envíe cabeceras Access-Control-Allow-Origin específicas. Los sitios web normales no envían esas cabeceras para todo el dominio, así que la herramienta NO PUEDE ejecutar la fórmula contra el sitio real.
Esta limitación es estructural y no se puede resolver sin un servidor proxy intermedio, lo que rompería el claim "client-side puro". Por eso esta herramienta se posiciona honestamente como preparador y explicador de fórmulas, no como ejecutor. El usuario pega el HTML manualmente o copia la fórmula a Sheets, donde sí funciona. Esta honestidad sobre CORS es el gap único que esta herramienta aborda y que el resto de competidores no mencionan.
Casos de uso prácticos, a fondo
Ejemplo 1 — Periodista de datos scrapeando contratos públicos. Marta está escribiendo un reportaje sobre contrataciones públicas en España. Va a datos.gob.es, abre Ver código fuente en la página del catálogo, copia el HTML de la tabla de datasets, lo pega aquí, selecciona la primera tabla, exporta a CSV con BOM UTF-8, y lo abre en OpenRefine para limpiar nombres de organismos y normalizar fechas. Cada domingo repite el proceso para actualizar las cifras del reportaje. Sin scraping automatizado, sin coste, sin compartir datos con ningún servidor intermedio.
Ejemplo 2 — Estudiante haciendo un trabajo de máster. Pablo necesita datos de PIB per cápita de 30 países europeos para un trabajo de máster. Va a Wikipedia, busca "Lista de países por PIB", abre Ver código fuente, copia la tabla HTML, la pega aquí, selecciona la tabla correcta (índice 3, porque las dos primeras son de sumarios), exporta a XLSX, y abre el archivo directamente en Google Sheets. Listo para citar y graficar. Sin instalar Python, sin subir el archivo a convertcsv.com.
Ejemplo 3 — Desarrollador debugging un error IMPORTHTML. Lucía lleva 2 horas intentando que =IMPORTHTML("https://example.com/data", "table", 5) funcione en Sheets. Siempre devuelve #ERROR!. Pega la fórmula en el Modo B y ve: función detectada ✓ IMPORTHTML, URL válida ✓, query "table" ✓, índice 5 ⚠. Mira el glosario de errores: #ERROR! significa "el índice no existe". Va al sitio, abre Ver código fuente, cuenta las tablas: solo hay 4. Cambia el índice a 3 y vuelve a funcionar en Sheets. Resuelto en 30 segundos.
Ejemplo 4 — Profesional de marketing analizando precios competidores. Carlos quiere monitorizar precios de 3 competidores cada lunes. Usa IMPORTXML con XPath //span[@class="price"]/text(). Pega la fórmula en el Modo B para verificar que el XPath es correcto. El wizard le ayuda a construir la fórmula exacta con la URL del competidor y el XPath. Copia la fórmula a Sheets, le funciona, y cada lunes actualiza manualmente.
Ejemplo 5 — Investigador scrapeando tablas de papers académicos. Ana está revisando literatura sobre cambio climático. Encuentra una tabla de emisiones de CO₂ por país en un paper HTML. Copia la tabla, la pega aquí, exporta a CSV, y la abre en R para hacer un análisis de regresión. Sin perder tiempo en herramientas de escritorio, sin subir nada a servidores.
Consejos y trucos
- Empieza por los ejemplos precargados. Antes de buscar tu propio HTML, prueba los 4 ejemplos (Wikipedia, IMDb, datos.gob.es, Yahoo Finance) para entender cómo la herramienta interpreta cada tipo de tabla.
- Usa la opción "Limpiar HTML interno" siempre que puedas. Extrae texto plano con textContent en lugar de innerHTML. Elimina enlaces, imágenes, estilos, y te da datos limpios para análisis.
- Para Excel ES, exporta a CSV con BOM UTF-8. Sin BOM, Excel interpreta el CSV como Latin-1 y rompe los acentos. El BOM (los 3 bytes
EF BB BFal inicio) le dice a Excel "esto es UTF-8". - El índice 1-indexado está alineado con IMPORTHTML. Si tu tabla es la 3ª del HTML, el índice es 3, no 2. Esto coincide con la convención de Google Sheets para IMPORTHTML.
- Para tablas con HTML dinámico, esta herramienta NO funciona. Necesitas un headless browser como Puppeteer o Playwright. O un SaaS de scraping como Browse AI, Apify, Instant Data Scraper (extensión Chrome).
- El truco data URI solo funciona con HTML pequeño (<1500 chars). Si tu HTML es más grande, usa IMPORTDATA con una URL pública (sube el .html a Drive o GitHub Pages primero).
- Las funciones Sheets son case-insensitive en el parser.
=importhtml(...)y=IMPORTHTML(...)se detectan igual. Pero en Google Sheets real, la convención es mayúsculas. - Cuando el HTML es muy grande (>5 MB), el navegador sufre. Para esos casos, usa BeautifulSoup en Python, pandas, o un SaaS server-side.
- IMPORTXML con XPath avanzado requiere entender la estructura del DOM. Usa Inspeccionar elemento en Chrome para ver el árbol DOM completo y construir el XPath correcto. Los 8 ejemplos precargados cubren los casos más comunes.
- El banner honesto CORS aparece solo una vez. Si lo cierras, no vuelve a aparecer. Pero siempre puedes consultar esta sección de la página si necesitas la explicación.
Limitaciones y consideraciones
Esta herramienta es un conversor de HTML pegado a datos tabulares, no un sistema de scraping automatizado. Antes de plantearte usarla para flujos complejos, conviene entender exactamente qué cubre y qué NO cubre.
Qué cubre el MVP
- Pegar HTML en textarea, o arrastrar archivo .html, o usar 4 ejemplos precargados.
- Parseo con DOMParser nativo: tablas
<table>con<thead>/<tbody>/<th>/<td>/colspan/rowspan; listas<ul>/<ol>/<li>. - Selector de tabla 1-indexado alineado con IMPORTHTML.
- 4 opciones de limpieza: cabeceras, strip HTML, decode entities, normalize whitespace.
- Export a 5 formatos: XLSX (SheetJS), CSV (PapaParse con BOM UTF-8), TSV, Markdown, JSON.
- Parser de fórmulas IMPORTHTML/IMPORTXML/IMPORTDATA/IMPORTFEED con highlight y tabla de argumentos.
- Glosario de 5 errores comunes con fix concreto (#ERROR!, #REF!, Contenido importado vacío, Could not fetch url, #NO PERMISSION / #N/A).
- Wizard para generar fórmulas en vivo con copy-to-clipboard.
- Truco de data URI para IMPORTHTML con HTML pequeño.
- Cross-link entre Modo A (HTML pegado) y Modo B (fórmula Sheets).
- Bilingüe ES/EN nativo con switch persistente.
- Funcionamiento 100% offline tras primera carga, Service Worker cache-first.
- Accesibilidad WCAG 2.1 AA: skip link, focus visible, ARIA labels, contraste, prefers-reduced-motion.
- Compliance RGPD: cero trackers propios, Funding Choices CMP con Consent Mode v2 (FIX 2026-07-01).
Qué NO cubre (queda fuera del alcance del MVP)
- Ejecución de IMPORTHTML contra sitios remotos. Es limitación CORS del navegador, no se puede resolver sin servidor proxy. Para ejecución real, pega la fórmula en Google Sheets.
- Sitios con JavaScript dinámico. Solo HTML estático de Ver código fuente. Para sitios React/Vue/Angular, necesitas Puppeteer/Playwright o SaaS server-side.
- Scraping automatizado o recurrente. No hay scheduling, no hay login, no hay proxy rotation. Para eso existen Browse AI, Apify, Octoparse (todos de pago).
- Sitios con autenticación (login). IMPORTHTML no soporta autenticación. Para eso usa IMPORTDATA con API key (Google Sheets soporta) o scripts autenticados.
- Más de 50.000 filas por tabla. Más allá, el navegador empieza a sufrir. Alternativa: script Python con pandas.
- Más de 5 MB de HTML de entrada. Más allá, el parser puede bloquear el navegador. Alternativa: BeautifulSoup con chunking.
- Edición de tablas después de exportar. La herramienta convierte, no edita. Para edición, abre el XLSX en Sheets/Excel y edita allí.
- Persistencia entre sesiones. Si cierras la pestaña, pierdes el HTML pegado (es el claim de privacidad). Si quieres guardar, exporta a XLSX/CSV antes de cerrar.
- Traducción de los datos del usuario. El toggle ES/EN cambia la UI, no traduce tus datos.
- Generación de fórmulas con AI. Vanilla JS puro, sin LLM. Si quieres "explicación inteligente", pregunta a ChatGPT con la fórmula pegada.
- Persistencia en IndexedDB. Solo localStorage para preferencias (idioma, banners vistos).
- Bookmarklet / extensión Chrome. No escala para mobile. Esta es una web app, no un bookmarklet.
- Soporte para IE11. DOMParser funciona, pero el resto (ES2020+) no. La herramienta asume navegador moderno (Chrome 90+, Edge 90+, Firefox 88+, Safari 14+).
Cuándo necesitas otra herramienta en lugar de esta
Esta herramienta cubre el caso "tengo HTML pegado o una fórmula Sheets que no entiendo". Si tu proyecto entra en alguna de las siguientes categorías, considera otra solución:
- Necesitas scraping automatizado recurrente (cada hora, cada día). Mira Apify, Octoparse, Browse AI, ScrapingBee, Thunderbit (todos SaaS de pago, $20-500/mes).
- Necesitas scraping de sitios con login. Mira Apify con sesión persistente o ScrapingBee con proxy autenticado.
- Necesitas scraping de sitios con JavaScript dinámico (React/Vue/Angular). Mira Puppeteer o Playwright (Node.js/Python), o Browse AI (no-code con render JS).
- Necesitas más de 100.000 filas. Mira pandas + BeautifulSoup en Python, o Octoparse con export a BigQuery.
- Necesitas exportar a un formato no soportado (DOCX, PDF con estilos, PPTX). Mira Convertio (subida a servidor) o un script Python.
- Necesitas manipular la fórmula con un LLM (explicación inteligente, generación de variaciones). Pega la fórmula en ChatGPT o Claude directamente (sin subir nada: copia-pega).
Para todos estos casos, busca la herramienta adecuada. Esta herramienta no compite con esas verticales: cubre el nicho de "HTML pegado → XLSX sin complicarse la vida" donde un SaaS server-side no se justifica.
Glosario rápido
- DOMParser
- API nativa del navegador que parsea HTML o XML en un Document. Soporta
text/htmlytext/xml. Estable desde IE11, sin dependencias externas. Ver MDN DOMParser. - SheetJS
- Librería OSS para generar y parsear XLSX client-side. Licencia Apache-2.0. ~700 KB minified, soporta read y write de XLSX (formato OOXML de Microsoft). Usamos solo el subset "write" (genera XLSX desde array-of-arrays). Ver docs.sheetjs.com.
- PapaParse
- Librería OSS para parser y serializer CSV/TSV. Licencia MIT. Implementa RFC 4180: comillas, escapes, separadores configurables, line endings CRLF/LF/CR. Usamos
Papa.unparse()para generar CSV/TSV desde array-of-arrays. Ver papaparse.com. - IMPORTHTML
- Función de Google Sheets que importa una tabla o lista desde una URL. Sintaxis:
IMPORTHTML(url, query, index)conquery ∈ {"table", "list"}yindex ≥ 1. Ejecutada server-side por Google. Documentación oficial: support.google.com/docs/answer/3093339. - IMPORTXML
- Función de Google Sheets que importa datos desde XML, HTML, RSS o ATOM usando XPath 1.0. Sintaxis:
IMPORTXML(url, xpath_query, locale?). Más precisa que IMPORTHTML pero requiere escribir XPath. Documentación oficial: support.google.com/docs/answer/3093342. - CORS
- Cross-Origin Resource Sharing. Política de seguridad web que restringe las peticiones HTTP cross-origin desde el navegador. Un script JS en
example.comno puede hacerfetch("https://other.com")y leer la respuesta, salvo queother.comenvíe cabecerasAccess-Control-Allow-Originespecíficas. Por eso IMPORTHTML no se puede ejecutar desde el navegador. Ver MDN CORS. - data URI
- Esquema de URL
data:[<mediatype>][;base64],<data>que permite embeber datos binarios o texto directamente en la URL. Usado aquí para el truco de IMPORTHTML con HTML estático pequeño:data:text/html;base64,PHN0eWxlPi4uLjwvc3R5bGU+.... Ver MDN data URLs. - BOM UTF-8
- Byte Order Mark para UTF-8: 3 bytes
EF BB BFal inicio de un archivo de texto. Indica al consumidor que el archivo está en UTF-8. Sin BOM, Excel ES interpreta CSV como Latin-1 y rompe acentos. Con BOM, Excel ES/EN detecta correctamente UTF-8. - Service Worker
- Script que el navegador ejecuta en segundo plano, habilitando capacidades como caché offline de la tool. Aquí se usa un patrón cache-first: precache de HTML/CSS/JS/imágenes/libs en la primera carga y respuesta desde caché en visitas posteriores, incluyendo sin conexión. Ver MDN Service Worker.
- RFC 4180
- Especificación estándar para CSV: separador coma, line ending CRLF, comillas dobles para campos con comas/saltos de línea, escape
""para comillas dobles dentro de campos. PapaParse implementa RFC 4180 correctamente. - XPath 1.0
- Lenguaje de expresión para navegar por árboles XML/HTML. Usado en IMPORTXML. Spec W3C desde 1999, estable. Ejemplos:
//h1(todos los h1),//a/@href(todos los hrefs de enlaces),//div[@class="price"]/text()(texto de divs con clase price). Ver W3C XPath 1.0. - Consent Mode v2
- Protocolo de Google para comunicar señales de consentimiento (ad_storage, ad_user_data, ad_personalization, analytics_storage) al data layer antes de cargar ads. Requerido por AdSense en EEA/UK/Suiza desde enero 2024. Funding Choices es nuestra CMP certificada por Google que señaliza automáticamente. Ver Google Ads Consent Mode.
- Funding Choices
- CMP certificada por Google (TCF v2.3) que muestra el banner de consentimiento de cookies y comunica las decisiones del usuario a AdSense vía Consent Mode v2. Es la CMP fija del proyecto 1000HW. Ver fundingchoices.google.com.
Convierte HTML pegado a XLSX/CSV/TSV/MD/JSON y explica fórmulas IMPORTHTML/IMPORTXML. Sin login, sin servidores, sin IA. Respeta los términos de uso del sitio del que extraigas datos. · Versión 1.0.0 — 2026-07-01.