≡En resumen
- El query string empieza en el «?» y termina donde empieza el fragmento «#» o la URL.
- Cada parámetro es un par clave=valor y los pares se separan con «&».
- Los valores con espacios, tildes o símbolos deben ir codificados con percent-encoding.
- Nunca pongas contraseñas, tokens ni datos personales en un query string: quedan en registros e historiales.
- En SEO, los parámetros de filtros y seguimiento pueden crear miles de URL duplicadas: contrólalos con canonical y enlazado.
01 ¿Qué es un query string?
Es una de las partes de una URL, junto al protocolo, el dominio, la ruta y el fragmento. La norma que la define es la RFC 3986, que la llama simplemente query: datos que, junto con la ruta, identifican el recurso. En la práctica, cada dato del query string es un parámetro de URL.
La forma más común de generar un query string es un formulario enviado con el método GET: el navegador toma los campos y los añade a la URL de destino.
02 Estructura y sintaxis de una cadena de consulta
| Elemento | Símbolo | Ejemplo | Función |
|---|---|---|---|
| Inicio | ? | /buscar? | Separa la ruta del query string |
| Par clave-valor | = | q=zapatillas | Asocia un nombre a un valor |
| Separador | & | q=zapatillas&talla=42 | Separa un parámetro del siguiente |
| Espacio | + o %20 | q=zapatillas+rojas | Representa un espacio en el valor |
| Carácter codificado | %XX | ciudad=M%C3%A1laga | Codifica tildes y símbolos en UTF-8 |
| Fragmento | # | ?page=2#reseñas | Marca el final del query string; no se envía al servidor |
Los valores deben ir codificados: un espacio, una «ñ» o un «&» dentro de un valor romperían la cadena. El detalle está en la codificación por porcentaje. Los formularios HTML usan el formato application/x-www-form-urlencoded, en el que el espacio se escribe como «+».
03 Para qué se usa un query string
Búsquedas internas
?q=zapatillas+rojas envía el término que el usuario escribió en el buscador de la web.
Filtros y ordenación
?color=rojo&orden=precio en tiendas online y catálogos.
Paginación
?page=3 para mostrar la tercera página de resultados.
Seguimiento de campañas
?utm_source=newsletter&utm_medium=email para atribuir visitas en la analítica.
APIs
GET /api/pedidos?estado=pendiente&limit=50 para pedir datos filtrados.
Estado compartible
Guardar en la URL la vista de un mapa o un informe para compartirla con un enlace.
El caso más conocido en marketing son los parámetros UTM: cinco claves estándar (utm_source, utm_medium, utm_campaign, utm_term y utm_content) que Google Analytics lee para saber de qué campaña viene cada visita.
04 Ejemplos de query strings que usas cada día
Aunque no te fijes, casi todas las webs que usas a diario viajan con parámetros en la URL. Mirarlos es la forma más rápida de entender cómo funcionan:
| Servicio | URL de ejemplo | Qué hace cada parámetro |
|---|---|---|
| google.com/search?q=query+string | q contiene la búsqueda; el + representa el espacio | |
| YouTube | youtube.com/watch?v=ID&t=90 | v identifica el vídeo y t indica el segundo en el que empieza |
| Wikipedia | es.wikipedia.org/w/index.php?title=URL&action=history | title elige la página y action, la vista (aquí, el historial) |
| Tienda online | tienda.com/zapatillas?talla=42&orden=precio | Filtra por talla y ordena por precio |
| Campaña de email | web.com/oferta?utm_source=newsletter&utm_medium=email | Atribuye la visita a la newsletter en la analítica |
05 Cómo leer y crear un query string en JavaScript, PHP y Python
| Lenguaje | Leer parámetros | Construir un query string |
|---|---|---|
| JavaScript (navegador y Node.js) | new URLSearchParams(location.search).get('q') | new URLSearchParams({q: 'zapatillas', talla: 42}).toString() |
| PHP | $_GET['q'] o parse_str() | http_build_query(['q' => 'zapatillas']) |
| Python | urllib.parse.parse_qs() | urllib.parse.urlencode({'q': 'zapatillas'}) |
const params = new URLSearchParams('?q=zapatillas&talla=42');params.get('talla'); // "42"params.set('orden', 'precio');params.toString(); // "q=zapatillas&talla=42&orden=precio"
Ojo: URLSearchParams interpreta «+» como espacio al leer, así que un valor en Base64 con «+» se corrompe si no se codificó como %2B.
06 Query string frente a ruta, fragmento y cuerpo POST
| Lugar | Ejemplo | ¿Llega al servidor? | Úsalo para |
|---|---|---|---|
| Ruta | /zapatillas/rojas/ | Sí | Identificar recursos estables e indexables |
| Query string | ?color=rojo | Sí | Filtros, búsquedas, paginación, seguimiento |
| Fragmento | #opiniones | No, se queda en el navegador | Saltar a una sección o estado del cliente |
| Cuerpo (POST) | Datos del formulario | Sí, fuera de la URL | Datos sensibles o grandes y operaciones que cambian cosas |
07 Query strings y SEO: duplicados, rastreo y canonical
Para Google, /zapatillas?color=rojo y /zapatillas?color=rojo&orden=precio son URLs distintas. Si los filtros de una tienda se combinan libremente, pueden generarse miles de variantes con el mismo contenido: contenido duplicado, señales repartidas y presupuesto de rastreo desperdiciado. Google retiró en 2022 la herramienta de Parámetros de URL de Search Console, así que el control depende de tu web.
- ✓Usa rutas limpias para las páginas que quieres posicionar y parámetros para lo accesorio.
- ✓Añade una etiqueta canonical que apunte a la versión principal en las URLs con parámetros de orden o seguimiento.
- ✓No enlaces internamente URLs con parámetros UTM: úsalos solo en enlaces externos de campañas.
- ✓Mantén un orden fijo de parámetros para no crear variantes por el orden.
- ✓Bloquea en robots.txt las combinaciones de filtros sin valor de búsqueda, sin bloquear las que sí quieres indexar.
- ✓Revisa en Search Console qué URLs con parámetros se están rastreando e indexando.
La etiqueta canonical es la herramienta principal, pero no la única. En una auditoría SEO técnica revisamos qué parámetros existen, cuáles rastrea Google y cuáles merecen convertirse en páginas indexables propias.
Preguntas frecuentes sobre Query string
Es la parte de una URL que va tras el signo «?» y envía datos al servidor en pares clave=valor separados por «&».
Cadena de consulta. Cada uno de sus datos se llama parámetro de URL.
El query string es la cadena completa tras el «?»; un parámetro es cada par clave=valor que contiene, como talla=42.
No hay un límite único. La RFC 9110 recomienda que emisores y receptores admitan URIs de al menos 8.000 octetos; si se supera el límite del servidor, responde con el error 414.
Sí, si generan muchas URLs con el mismo contenido. Se controlan con canonical, enlazado interno limpio y, cuando procede, robots.txt.
Con new URLSearchParams(window.location.search) y su método get('nombre'), que devuelve el valor del parámetro.
No para datos sensibles, porque quedan en historiales, registros y cabeceras Referer. Para contraseñas o datos personales usa POST sobre HTTPS.
Fuentes consultadas
Sobre el autor
Germán Gutiérrez
Development Manager en appyweb
Dirige el equipo de desarrollo de appyweb: aplicaciones web y móviles, SaaS, integraciones y arquitectura de software.
Ver perfil en LinkedIn ↗