La herramienta que necesitas, lista para usar

Generador de CSS clamp()

Elige un tamaño para una pantalla pequeña y otro para una pantalla grande, y esta herramienta crea la expresión clamp() que los une sin saltos. Si arrastras los dos puntos del gráfico o escribes los números, la expresión cambia al instante. Si mueves el cursor vertical, la vista previa y la muestra a tamaño real enseñan cuántos px resultan con ese ancho de pantalla. Puedes elegir la salida en rem o px y tomar como base el ancho de pantalla (vw) o el ancho del contenedor (cqi). Si el valor es un tamaño de fuente, comprueba también si el texto sigue llegando a 2× al ampliar la página, y calcula una escala tipográfica de pasos de título con una razón constante.

Última modificación 2026-10-22Todo el cálculo ocurre en tu navegador
Ejemplos
Propiedad
Unidad de salida
Base

Rampa de tamaño

Arrastra un punto para cambiar el ancho y el tamaño de las dos pantallas (←→ cambia el ancho de 10 en 10px, ↑↓ cambia el tamaño de 1 en 1px, con Shift los pasos son mayores). Pulsa en un hueco o arrastra el control de abajo para ver el valor en ese ancho. La línea de puntos es la recta antes de que clamp() la corte por arriba y por abajo.

Pantalla pequeña (punto izquierdo)
Pantalla grande (punto derecho)
Unidad
Sirve para convertir entre rem y px. Si no has cambiado el tamaño de fuente de html, es 16px.

    Vista previa real

    Comprobación de zoom (si se usa como tamaño de fuente)WCAG 1.4.4 exige que el texto pueda ampliarse hasta el 200%.

      Factor alcanzado con el zoom máximo (500%)Factor con zoom del 200%Objetivo de 2×Ancho de ventana que no llega a 2×

      Crear pasos con una razón constante (escala tipográfica)El valor creado arriba es el paso 0. Cada paso hacia arriba multiplica el tamaño de pantalla pequeña por la razón de la izquierda y el de pantalla grande por la de la derecha.

        
            

        Última modificación 2026-10-22No guardamos lo que escribes

        Criterio ROBERINLa herramienta que necesitas,
        lista para usar.
        • Claro a primera vistaEntradas y resultados donde los esperas.
        • Primero el resultadoLa cifra clave va primero; el proceso solo cuando lo necesitas.
        • Pedir menosSin registro ni datos innecesarios.

        Un generador de clamp() que solo necesita dos tamaños de pantalla

        Este generador de CSS clamp() recibe un tamaño para una pantalla pequeña y otro para una pantalla grande, y crea una expresión clamp() que los une sin saltos. Por ejemplo, un texto de cuerpo que mide 16px con un ancho de pantalla de 360px y 20px con 1280px da como resultado font-size: clamp(1rem, 0.9022rem + 0.4348vw, 1.25rem);. Por debajo de 360px el texto se queda en 16px, por encima de 1280px se queda en 20px, y entre ambos crece en proporción al ancho de pantalla.

        Si arrastras los dos puntos del gráfico de la rampa de tamaño que tienes arriba, la expresión cambia al instante. Si mueves el cursor vertical, ves cuántos px resultan con ese ancho de pantalla. La vista previa de la derecha muestra una pantalla reducida con ese ancho y dibuja, como muestra a tamaño real, el valor que ha calculado el propio navegador. Puedes elegir la salida en rem o px y tomar como base el ancho de pantalla (vw) o el ancho del contenedor (cqi). Si el valor es un tamaño de fuente, la comprobación de zoom indica si el texto sigue llegando a 2× al ampliar la página, y la escala tipográfica crea una serie de pasos de título con una razón constante.

        Por qué unir tamaños con clamp()

        Cuando cambias un tamaño con una media query, el valor da un salto en el ancho que hayas fijado. Un título de 16px con 767px pasa de golpe a 28px con 768px. Los dispositivos que quedan justo a un lado y otro de esa frontera suelen mostrar un texto demasiado grande o demasiado pequeño para su pantalla, y cada punto de corte nuevo añade una regla más que mantener. clamp() traza una recta entre un mínimo y un máximo, de modo que una sola regla cubre todos los anchos.

        • Títulos que deben ser pequeños en el móvil y grandes en el escritorio: sirve para textos con mucha diferencia de tamaño, como el título principal de una página. Si el máximo supera 2,5 veces el mínimo, revisa siempre la comprobación de zoom (véase «Zoom y accesibilidad» más abajo).
        • Espacios que respiran según la pantalla: el gap entre tarjetas o el margen entre secciones puede reducirse en pantallas estrechas y ampliarse en las anchas.
        • Ancho del texto y relleno interior: permite que el width o el padding de una caja de texto crezca con la pantalla y se detenga en el tamaño que fijes.
        • Cuando el diseño solo tiene dos maquetas: si tienes los valores de la maqueta móvil y de la de escritorio, pero nada intermedio, escribe ambos valores y deja que la fórmula rellene el tramo que falta.
        • Cuando un componente aparece en sitios de distinto ancho: si la misma tarjeta se usa en una barra lateral y en la columna principal, conviene tomar como base el ancho de la tarjeta y no el de la pantalla. En ese caso cambia la base a contenedor (cqi).

        Cómo se usa

        1. Pulsa en la franja de arriba el ejemplo más parecido a tu caso, o escribe el ancho de pantalla y el tamaño de la pantalla pequeña y de la grande. Si arrastras los dos puntos del gráfico, cambian los mismos campos.
        2. Elige la propiedad (font-size, gap, padding, width), la unidad de salida (rem o px) y la base (pantalla vw o contenedor cqi). Para tamaños de fuente es mejor la salida en rem.
        3. Arrastra el cursor vertical del gráfico o pulsa un valor de la lista de anchos de pantalla para ver el tamaño en un móvil, una tableta, un portátil y un monitor. «Recorrer el ancho» mueve la muestra como si ensancharas y estrecharas la ventana.
        4. Si es un tamaño de fuente, mira en la comprobación de zoom si el texto llega a 2× dentro del zoom del 500%. Si no llega, cambia el máximo o el mínimo según lo que se indica.
        5. «Copiar declaración» te da una línea de CSS, «Copiar expresión» solo la parte de clamp() y «Copiar variables» toda la escala tipográfica. «Copiar enlace» guarda los ajustes actuales en la dirección.

        Cómo se calcula: pendiente, ordenada y coeficiente de vw

        La herramienta halla la recta que pasa por dos puntos, (ancho de pantalla pequeña w₁, tamaño s₁) y (ancho de pantalla grande w₂, tamaño s₂), y después expresa esa recta en unidades que CSS entiende.

        • Pendiente = (s₂ − s₁) ÷ (w₂ − w₁). Indica cuánto cambia el tamaño por cada 1px de ancho de pantalla.
        • Coeficiente de vw = pendiente × 100. Como 1vw es el 1% del ancho de pantalla, hay que multiplicar por 100 para obtener un valor en vw.
        • Ordenada = s₁ − pendiente × w₁. Es el valor con un ancho de pantalla de 0, la parte fija de la expresión. Para la salida en rem se divide entre el tamaño de fuente raíz (normalmente 16px).

        Con 16px a 360px y 20px a 1280px, la pendiente es 4 ÷ 920 = 0.004348, el coeficiente de vw es 0.4348vw y la ordenada en el origen es 16 − 0.004348 × 360 = 14.4348px = 0.9022rem. Si pones el mínimo y el máximo a los lados, resulta clamp(1rem, 0.9022rem + 0.4348vw, 1.25rem). Estos son los valores que da esa expresión con cada ancho de pantalla.

        Ancho de pantallaValorTramo
        320px16pxFijo en el mínimo
        360px16pxFijo en el mínimo (límite)
        768px17.77pxCrece con el ancho
        1024px18.89pxCrece con el ancho
        1280px20pxFijo en el máximo (límite)
        1920px20pxFijo en el máximo

        La especificación define clamp(MIN, VAL, MAX) como equivalente a max(MIN, min(VAL, MAX)). Por eso, en cuanto la expresión central se sale del rango, el valor del extremo ocupa su lugar. La línea de puntos del gráfico es la expresión central antes de cortarse, y la línea gruesa es el valor que se usa de verdad. Si escribes un tamaño de pantalla grande menor que el de pantalla pequeña, el valor disminuye al ensancharse la pantalla, y esta herramienta intercambia los límites para poner primero el menor.

        Valores habituales

        Son las expresiones de los ejemplos de la franja, calculadas para 360px → 1280px con un tamaño de fuente raíz de 16px. Úsalas como punto de partida y ajústalas a tu diseño.

        UsoPantalla pequeña → pantalla grandeExpresión (rem)
        Texto de cuerpo16 → 20pxclamp(1rem, 0.9022rem + 0.4348vw, 1.25rem)
        Subtítulo20 → 28pxclamp(1.25rem, 1.0543rem + 0.8696vw, 1.75rem)
        Título28 → 48pxclamp(1.75rem, 1.2609rem + 2.1739vw, 3rem)
        Título grande (no cumple el criterio de zoom)32 → 96pxclamp(2rem, 0.4348rem + 6.9565vw, 6rem)
        Espacio entre tarjetas (gap)24 → 64pxclamp(1.5rem, 0.5217rem + 4.3478vw, 4rem)
        Relleno interior (padding)16 → 32pxclamp(1rem, 0.6087rem + 1.7391vw, 2rem)
        Ancho del texto (width)320 → 720pxclamp(20rem, 10.2174rem + 43.4783vw, 45rem)

        px o rem: qué salida elegir

        El navegador ofrece dos maneras de agrandar el texto. El zoom de página (Ctrl o ⌘ y +) agranda todo, y lo hace reduciendo el ancho de pantalla que ve CSS. El tamaño de fuente de los ajustes del navegador cambia solo el tamaño de fuente raíz, que es la base de rem. Un límite escrito en px ignora el ajuste de tamaño de fuente, y la parte de vw se queda igual en ambos casos. Con el ejemplo del texto de cuerpo (16 → 20px, 360 → 1280px), los resultados son estos.

        SituaciónAncho de ventana 360pxAncho de ventana 1280px
        Predeterminado (100%)16px20px
        Zoom de página del 200% (igual en px y rem)32px (2×)34.43px (1,72×)
        Tamaño de fuente de 32px, salida en rem32px (2×)34.43px (1,72×)
        Tamaño de fuente de 32px, salida en px16px (1×)20px (1×)

        Con salida en rem, el ajuste de tamaño de fuente agranda el texto exactamente en la misma proporción que el zoom de página. Los límites y la ordenada se duplican a la vez, y solo la parte de vw se queda como está. Con salida en px, cambiar el ajuste no tiene ningún efecto, de modo que un usuario que depende de una fuente grande no nota ningún cambio. Una pauta razonable es usar rem para los tamaños de fuente y px para los valores que no deben seguir el ajuste, como los bordes. Si un sitio cambia la raíz a 10px con html { font-size: 62.5%; }, escribe 10 en el campo del tamaño de fuente raíz para que los valores en rem salgan bien.

        Ancho de pantalla (vw) o ancho del contenedor (cqi)

        vw toma como base el ancho de la pantalla del navegador, así que el valor no cambia aunque una tarjeta pase a una barra lateral estrecha dentro de la misma pantalla. La unidad de contenedor cqi es el 1% del ancho interior (en escritura horizontal, la anchura) del contenedor más cercano. Si das al elemento padre container-type: inline-size; y cambias la base de esta herramienta a contenedor, el eje horizontal del gráfico pasa a ser el ancho del contenedor y cqi ocupa en la expresión el lugar de vw.

        • CSS Containment 3 establece que, si no se encuentra un contenedor adecuado, cqi se calcula con el tamaño del viewport pequeño. Si olvidas container-type en el elemento padre, el valor se comporta de forma parecida a uno basado en la pantalla, y el error cuesta notarlo.
        • Según CSS Values 4, las unidades de viewport se calculan como si no hubiera barra de desplazamiento (una excepción es un caso como overflow: scroll, donde la barra siempre está presente). En entornos donde la barra de desplazamiento ocupa espacio, 100vw puede ser más ancho que el área real del contenido y provocar desbordamiento horizontal. Para anchos, cqi o % es más seguro.
        • Las unidades de contenedor se admiten desde Chrome 105, Firefox 110 y Safari 16 (véase la tabla de compatibilidad más abajo).

        Zoom y accesibilidad: ¿llega a 2×?

        El criterio de éxito 1.4.4 (Cambio de tamaño del texto) de WCAG 2.2 establece que el texto debe poder ampliarse hasta el 200% sin tecnologías de apoyo y sin perder contenido ni funciones. W3C recoge aparte el fallo F94 para el texto dimensionado solo con unidades de viewport, que no crece al ampliar. Al hacer zoom, el ancho CSS de la pantalla se reduce y la parte de vw disminuye, de modo que el texto creado con clamp() crece menos que el factor de zoom.

        Maxwell Barvian (Smashing Magazine, 2023) señaló que los navegadores modernos amplían hasta el 500% y resumió que, si el tamaño máximo no supera 2,5 veces el tamaño mínimo, el texto llega a 2× dentro del 500% con cualquier ancho de ventana. Además de esa regla, esta herramienta calcula los anchos de ventana de 320 a 3840px y busca el más desfavorable. Con una pantalla pequeña de 360px y 16px, una pantalla grande de 1280px y solo el tamaño máximo variable, los resultados son estos.

        Tamaño máximo (máx. ÷ mín.)Factor mínimo con zoom del 200%Factor mínimo con zoom de hasta 500%Resultado
        20px (1,25)1,72×4×Cumple
        24px (1,5)1,54×3,33×Cumple
        32px (2)1,3×2,5×Cumple
        40px (2,5)1,17×2×Cumple (límite)
        48px (3)1,07×1,67×No cumple
        64px (4)0,92×1,25×No cumple

        Si solo se mira el zoom del 200%, incluso el ejemplo del texto de cuerpo, con un máx. ÷ mín. de 1,25, queda en 1,72× en una ventana de 1280px. Para llegar a 2× con ese ancho habría que ampliar al 239%. Si necesitas superar una comprobación que exige exactamente 2× con zoom del 200%, reduce más la parte de vw, o deja los tamaños de fuente en rem puro y usa clamp() solo para espacios y rellenos. Con una pendiente tan fuerte como la de la fila de 64px, hay incluso anchos de ventana en los que el texto se hace más pequeño con zoom del 200%.

        Escala tipográfica: pasos de título con una sola razón

        Una escala tipográfica crea los pasos de título multiplicando el tamaño del cuerpo, una y otra vez, por una razón constante. Utopia (James Gilyead y Trys Mudford, 2020) presentó un método con razones distintas para la pantalla pequeña y la grande, uniendo cada paso con clamp(). Con una razón mayor en la pantalla grande, las diferencias entre los pasos de título aumentan en pantallas anchas, mientras que en las estrechas los pasos quedan más juntos. Esta herramienta toma el valor creado arriba como paso 0 y genera variables CSS como --step-1 y --step--1.

        NombreRazónFactor en el paso 5Paso 5 de 16px
        Segunda menor1,0671,38×22.1px
        Segunda mayor1,1251,8×28.8px
        Tercera menor1,22,49×39.8px
        Tercera mayor1,253,05×48.8px
        Cuarta justa1,3334,21×67.3px
        Cuarta aumentada1,4145,65×90.4px
        Quinta justa1,57,59×121.5px
        Proporción áurea1,61811,09×177.4px

        Cuanto mayor es la diferencia entre la razón de la pantalla pequeña y la de la grande, más rápido crece el máx. ÷ mín. de los pasos superiores. Para un cuerpo de 16 → 20px con 1,2 y 1,25, el paso 5 es 39.81 → 61.04px, una relación de 1,53 que queda dentro del criterio de zoom. Con 1,2 y 1,5, el paso 5 pasa a ser 39.81 → 151.88px, una relación de 3,8, que lo supera. La marca que aparece a la derecha de la lista de pasos es la comprobación de zoom recalculada para cada paso.

        Compatibilidad con navegadores

        FunciónChromeFirefoxSafari
        clamp()797513.1
        Unidades de contenedor (cqi y otras)10511016
        Unidades de viewport (vw y otras)20196

        MDN clasifica clamp() como Baseline Widely available, es decir, que funciona en los principales navegadores desde julio de 2020. El borrador de CSS Values 4 define también una sintaxis que pone none en el lugar del mínimo o del máximo, pero los datos de compatibilidad de MDN todavía no tienen una entrada de soporte para ella, así que esta herramienta no la usa.

        Errores frecuentes

        • No multiplicar por 100 el coeficiente de vw: si escribes la pendiente 0,004348 como 0.004348vw, el cambio se reduce a la centésima parte y el valor queda casi fijo.
        • Creer que clamp() debe ir dentro de calc(): los tres huecos de clamp() ya admiten sumas y restas, así que clamp(1rem, 0.9022rem + 0.4348vw, 1.25rem) basta. Si lo envuelves en calc(), el resultado es el mismo.
        • Pegar una expresión en rem en un sitio con otra raíz: en un sitio cuya raíz es 10px, 1rem equivale a 10px. Cambia el campo del tamaño de fuente raíz al valor de ese sitio y vuelve a generar la expresión.
        • Intercambiar el mínimo y el máximo: cuando el mínimo es mayor que el máximo, clamp() usa el mínimo. Si al editar a mano intercambias los dos valores, el resultado se queda fijo en un valor con cualquier ancho.
        • Dar tamaño al texto solo con vw: font-size: 5vw no crece al ampliar, y eso es el fallo F94 de WCAG. Cámbialo por un clamp() con ordenada en rem y mira la comprobación de zoom.
        • Usar 100vw para un ancho: donde la barra de desplazamiento ocupa espacio, provoca desplazamiento horizontal. Para el máximo o la expresión central de un ancho, valora % o cqi.
        • Fijar el interlineado en px: solo crece el texto y el interlineado se queda igual, así que las líneas se solapan. Usa un valor sin unidad, como line-height: 1.5.

        Límites y precauciones

        • Solo crea una recta que pasa por dos puntos. Para cambiar la pendiente en varios tramos hacen falta varias reglas clamp() combinadas con media queries o container queries.
        • La comprobación de zoom calcula según el comportamiento de Chrome y Firefox, donde al ampliar el ancho CSS de la pantalla se reduce según el factor de zoom. El artículo de Smashing Magazine señala también que Safari puede ampliar de otra manera. La decisión final debe tomarse ampliando la página real.
        • El cálculo del ajuste de tamaño de fuente supone que el tamaño de fuente de html no está definido o está en % o rem. En un sitio que fija en px el tamaño de fuente de html, rem tampoco sigue el ajuste.
        • Si eliges la base de contenedor, se trata toda la pantalla de la vista previa como contenedor. El valor cambia según el relleno y el borde del contenedor real.
        • Los números de la expresión se redondean a cuatro decimales. Incluso en una pantalla de 1920px, la diferencia es menor que 0.01px.
        • La vista previa usa la fuente predeterminada de este dispositivo. Si el ajuste de tamaño mínimo de fuente del navegador está activado, un valor pequeño puede subir hasta ese tamaño.

        Fecha de referencia W3C CSS Values and Units Level 4 (Working Draft 2024-03-12), CSS Containment Level 3 (Working Draft 2022-08-18), WCAG 2.2 Understanding 1.4.4 y F94, y los datos de compatibilidad de MDN (browser-compat-data 8.1.6, 2026-10-15) se comprobaron en los textos originales el 2026-10-21. Las cifras de las tablas se obtuvieron con el núcleo de cálculo de esta herramienta.

        Fuentes

        Preguntas frecuentes

        ¿Qué son los tres valores de una expresión clamp()?

        En clamp(mínimo, expresión central, máximo), la expresión central es la parte que cambia con el ancho de pantalla, y los dos valores de los extremos son los límites inferior y superior que no puede cruzar. CSS Values 4 lo define como equivalente a max(mínimo, min(expresión central, máximo)). Esta herramienta crea la expresión central como «ordenada + coeficiente vw» para que pase exactamente por los tamaños que fijaste en las dos pantallas.

        ¿Cómo se calculan el coeficiente de vw y la ordenada?

        Pendiente = (tamaño de pantalla grande − tamaño de pantalla pequeña) ÷ (ancho de pantalla grande − ancho de pantalla pequeña). El coeficiente de vw es la pendiente × 100, y la ordenada es el tamaño de pantalla pequeña − pendiente × el ancho de pantalla pequeña. Con 16px a 360px y 20px a 1280px, la pendiente es 0,004348, el coeficiente es 0.4348vw y la ordenada es 14.4348px (0.9022rem).

        ¿Es mejor la salida en rem o en px?

        Para tamaños de fuente es mejor rem. rem sigue el ajuste de tamaño de fuente del navegador, mientras que px se queda igual. Con salida en rem, duplicar el tamaño de fuente del navegador da el mismo factor que un zoom del 200%. Para valores que no deben seguir el ajuste, como los bordes, puedes usar px.

        ¿Un tamaño de texto hecho con clamp() cumple el criterio de accesibilidad?

        No siempre. WCAG 1.4.4 exige que el texto pueda ampliarse hasta el 200%, pero al ampliar se reduce el ancho CSS de la pantalla y la parte de vw se hace menor. Barvian (Smashing Magazine, 2023) resumió que, si el tamaño máximo no supera 2,5 veces el tamaño mínimo, el texto llega a 2× dentro del zoom del 500%. Mira en la comprobación de zoom el factor con el ancho de ventana más desfavorable.

        ¿Cuándo uso el ancho del contenedor (cqi) en lugar del ancho de pantalla (vw)?

        Cuando la misma tarjeta o el mismo componente aparece tanto en una columna principal ancha como en una barra lateral estrecha. El elemento padre necesita container-type: inline-size; si no hay un contenedor adecuado, cqi se calcula con el tamaño del viewport pequeño. Las unidades de contenedor se admiten desde Chrome 105, Firefox 110 y Safari 16.

        ¿Puedo crear un valor que disminuya en pantallas más grandes?

        Sí. Si escribes un tamaño de pantalla grande menor que el de pantalla pequeña, la expresión sale con un coeficiente negativo, y esta herramienta intercambia los huecos del mínimo y del máximo para poner primero el valor menor. Si los dos tamaños son iguales, da un único valor sin clamp().

        ¿Cómo elijo las dos razones de una escala tipográfica?

        Muchas veces se usa una razón menor para la pantalla pequeña y una algo mayor para la grande. Si empiezas con 1,2 (tercera menor) y 1,25 (tercera mayor), como describe Utopia, un cuerpo de 16 → 20px pasa a ser 39.81 → 61.04px en el paso 5. Cuanto mayor es la diferencia entre las dos razones, más fácil es que los pasos superiores superen el criterio de zoom, así que fíjate en la marca de comprobación junto a cada paso.

        La expresión copiada se ve distinta en mi sitio real. ¿Qué reviso?

        Primero comprueba que el tamaño de fuente raíz del sitio coincide con el campo de tamaño de fuente raíz de esta herramienta. Después usa las herramientas de desarrollo para ver si otra regla sobrescribe la misma propiedad y, con base de contenedor, si el elemento padre tiene container-type. Si el ajuste de tamaño mínimo de fuente del navegador está activado, un valor pequeño puede subir hasta ese tamaño.