Saltar al contenido principal
OpenQRS
Herramientas
Idioma actual: Español
100% privado

Generador de códigos QR para eventos de calendario

100% privado y local: tus datos nunca salen de tu navegador. Estos códigos QR son permanentes y nunca caducan.

Ajustes de Evento

Pasa a ser la propiedad SUMMARY y el título de la entrada del calendario.

Introduce el nombre del evento. Pasa a ser el título de la entrada del calendario.

Obligatoria. Deja vacíos los dos campos de hora para producir un evento de todo el día.

Reloj de 24 horas. Vacío significa que el evento es de todo el día, no que empiece a medianoche.

Déjala vacía para terminar el mismo día del inicio. En los eventos de todo el día la herramienta escribe el fin exclusivo que espera iCalendar.

Vacía, con una hora de inicio puesta, produce un evento de una hora, que es lo que suponen casi todas las apps de calendario.

La hora flotante encaja con un evento físico en un solo sitio. UTC encaja con un evento en línea con asistentes en varias zonas.

Texto libre en la propiedad LOCATION. Las apps de calendario se lo pasan a su proveedor de mapas al tocarlo.

Los saltos de línea se conservan. Cada carácter de aquí agranda el código, así que déjalo en lo que necesita un recordatorio.

Se escribe en la propiedad URL. La compatibilidad varía: unas apps lo muestran como enlace pulsable y otras lo ocultan.

Diseño

Forma de los módulos
Preajustes
Marco de esquina
Añadir un logo central
Elige una imagen o suelta una aquíPNG, JPEG, WebP o GIF, hasta 1000 KB

La imagen se lee en esta página y se incrusta en el código como una URL data:. No se sube a ninguna parte y se queda dentro del archivo que descargas.

Más opciones de diseño

La mitad oscura del código. Mantenlo muy por debajo del fondo en luminosidad.

Cubre la zona de silencio y también los huecos entre módulos. Un fondo transparente lo deja fuera del archivo, así que no se dibuja nada con él.

Contraste 11.5:1 entre los módulos y el fondo.

Preajustes

PNG y WebP conservan un canal alfa; el SVG simplemente omite el rectángulo de fondo. Aquello sobre lo que se coloque el código pasa a ser la mitad clara del contraste.

Degradado

Un degradado rellena solo los módulos oscuros. Su extremo más claro fija el contraste que recibe de verdad un lector, así que los dos extremos tienen que seguir siendo oscuros.

El segundo color, usado solo mientras hay un degradado seleccionado. Se mide su contraste junto con el primero.

45°

Grados en sentido horario desde un barrido de izquierda a derecha. Un degradado radial se expande del centro hacia fuera, así que el ángulo solo se aplica al lineal.

Forma de los módulos

Las formas redondeadas cubren menos de cada celda. El centro sigue cubierto, que es donde muestrea el decodificador, pero un código denso impreso pequeño se lee con más fiabilidad en cuadrados.

Marco de esquina

El anillo de los tres patrones de localización.

Centro de esquina

El ojo dentro de cada patrón de localización.

4 módulos

El margen en blanco alrededor del código, medido en módulos. 4 es el mínimo que fija la especificación.

Más recuperación aguanta más daño y cuesta capacidad, así que el mismo contenido produce un símbolo más denso.

Hay un logo en el centro que mantiene el nivel en H. Su límite de ancho sigue al símbolo: 14% en el código más pequeño, 30% en uno denso.

Vista previa y exportación

Exportar

Exportar

Ráster, para pantalla

Completa el formulario para activar las descargas.

Tamaño de exportación y texto codificado
Carga útil
Aún no hay nada codificado
Símbolo
Aún sin construir
Recuperación
M

Esperando datos

Tamaño de exportación

Entre 64 y 4096 píxeles. Exportando a 1024 px.

Texto codificado

Construye un evento iCalendar completo y llévalo al papel. La carga útil es el propio contenido .ics, así que el teléfono puede crear la entrada sin descargar ningún archivo de ninguna parte.

Cuando alguien lo escanea

La mayoría de las apps de cámara y de escaneo actuales reconocen la cabecera BEGIN:VCALENDAR y ofrecen añadir el evento al calendario predeterminado, mientras que algunas antiguas o muy básicas se limitan a mostrar el texto tal cual.

La carga útil de iCalendar, exactamente

El código lleva un objeto completo según la RFC 5545, no un enlace a uno. Abre con BEGIN:VCALENDAR, lleva VERSION:2.0 y un PRODID que identifica a este generador, envuelve un único VEVENT y cierra con END:VCALENDAR. Dentro del evento están UID y DTSTAMP, que la especificación exige, junto a DTSTART, DTEND, SUMMARY y los que hayas rellenado de LOCATION, DESCRIPTION y URL.

Cada línea de contenido termina con un retorno de carro y un salto de línea, en ese orden. Los analizadores son estrictos con esto: un objeto que use saltos de línea sueltos es lo que hace que un evento por lo demás correcto no llegue a importarse. Las líneas de más de 75 octetos se pliegan insertando CRLF seguido de un solo espacio, y los lectores las vuelven a unir antes de analizarlas, que es por lo que una descripción larga no rompe el objeto.

Como el evento entero vive en el patrón, el teléfono no necesita red para crear la entrada. También significa que el evento queda congelado: cambiar el sitio más adelante obliga a generar e imprimir un código nuevo, porque no hay nada que actualizar.

Hora local flotante frente a UTC

En modo flotante, DTSTART se escribe como YYYYMMDDTHHMMSS, sin la Z final y sin parámetro TZID. La RFC 5545 llama a esto una hora flotante, y significa exactamente lo que dice: las 19:00 son las 19:00 en el dispositivo que lo abra, esté donde esté ese dispositivo. Para un concierto, un puesto de mercado o una jornada de puertas abiertas de un colegio esto es casi siempre lo que quieres, porque todo el que lee el cartel está en la misma zona horaria que el lugar.

En modo UTC la misma propiedad se escribe como YYYYMMDDTHHMMSSZ y esa Z final fija el instante. Cada dispositivo lo convierte a su hora local al importarlo, así que un evento puesto a las 14:00 UTC se ve como las 15:00 en Berlín y las 09:00 en Nueva York. Esa es la elección correcta para un seminario web y la equivocada para una fiesta de pueblo.

Una zona con nombre —DTSTART;TZID=Europe/London— es la tercera posibilidad de la especificación, y esta herramienta no la ofrece. Hacerlo bien exige incrustar un componente VTIMEZONE con el juego completo de reglas de cambio de horario de verano, lo que añade varios cientos de bytes a una carga útil que tiene que caber en un solo símbolo, y un objeto que referencie un TZID que no define es inválido. Flotante y UTC cubren los casos de cartel impreso sin ese coste.

Escapado, eventos de día completo y tamaño

Los valores de texto se escapan como pide la especificación antes de entrar en la carga útil. Primero las barras invertidas, después los puntos y coma y las comas, y por último los saltos de línea; escapar en cualquier otro orden escapa dos veces las barras invertidas que acabas de introducir. Los dos puntos dentro de un valor de texto se dejan en paz: la RFC 5545 prohíbe explícitamente escaparlos, aunque la antigua RFC 2445 lo exigía, y por eso algunos generadores hechos a mano siguen equivocándose aquí.

Un evento de día completo usa la forma de fecha: DTSTART;VALUE=DATE:20260904. Su DTEND es exclusivo, así que un solo día, el 4 de septiembre, se escribe con DTEND;VALUE=DATE:20260905. Equivocarse en eso es lo que produce un evento que abarca un día de menos o uno de más.

El tamaño es el límite práctico aquí. Un símbolo QR guarda como mucho 2953 bytes en el nivel de recuperación más bajo, y solo la envoltura de calendario gasta alrededor de doscientos antes de que empiece tu texto. Una descripción larga empuja el símbolo a una versión más alta con módulos más pequeños, lo que exige o una impresión mayor o un escaneo más cercano. La vista previa muestra la versión mientras escribes, así que vigila cómo se mueve.

  • La barra invertida pasa a \\, el punto y coma pasa a \;, la coma pasa a \,
  • Un salto de línea pasa a los dos caracteres \n
  • Los dos puntos no se escapan nunca en los valores de texto de la RFC 5545

Preguntas y respuestas

¿Por qué mi teléfono muestra un muro de texto en lugar de ofrecerme añadirlo al calendario?

El lector no reconoció ninguna URL y recurrió a mostrar la carga útil. La mayoría de las apps de cámara actuales detectan la cabecera BEGIN:VCALENDAR y ofrecen crear el evento, pero un lector muy básico puede manejar solo enlaces. Una app de escaneo dedicada, o la propia cámara del teléfono en lugar de una de terceros, suele resolverlo.

¿Puede un código llevar un evento recurrente?

Con esta herramienta no. La RFC 5545 expresa la repetición con una propiedad RRULE, y aunque la sintaxis es compacta, las combinaciones de intervalo, día de la semana, número de repeticiones y fechas de excepción necesitan un formulario propio para poder escribirse sin errores. Esta herramienta construye un evento con un inicio y un final.

¿El evento llevará un recordatorio o una alarma?

No. Un componente VALARM añadiría bytes a todos los códigos para servir a una preferencia que quien escanea suele querer fijar por su cuenta, y el comportamiento de recordatorio por defecto difiere mucho de una app de calendario a otra. La entrada aterriza en el calendario y hereda el valor por defecto que aplique ese calendario.

¿Qué pasa si dos personas escanean el mismo código impreso?

Cada una obtiene una entrada en su propio calendario. El UID se deriva de los datos del evento, así que es la misma cadena en las dos copias —lo cual es correcto, porque es el mismo evento—, pero las copias son independientes. No hay invitación, no hay lista de asistentes y no hay forma de que el cambio de una persona llegue a nadie más.

Cómo funciona un código QR estático

Todos los códigos de este sitio son estáticos: la carga útil está escrita en los propios módulos blancos y negros. No se consulta nada al leer el código, ningún servidor nuestro interviene y ninguna suscripción sostiene el código impreso. Esa misma propiedad es el límite: una vez impreso, lo que contiene ya no se puede cambiar.

A partir de ahí, tres cosas deciden si un código impreso se lee: cuántos bytes ocupó la carga útil, qué nivel de recuperación absorbe los daños y cuánto mide un módulo suelto sobre el papel. Estas guías recorren cada una de ellas con los números.