ToolDeck

Convertidor de unidades CSS

Convierte unidades CSS entre px, rem, em, vw, vh y %

px16
rem1
em1
vw1.111111
vh1.777778
%100
pt12
cm0.4233331
mm4.233331
in0.1666667

¿Qué es la conversión de unidades CSS?

Un convertidor de unidades CSS es una herramienta que traduce valores de longitud entre los distintos sistemas de medida de CSS. CSS define más de una docena de unidades de longitud, divididas en dos grupos: unidades absolutas como px, pt, cm e in, que se corresponden con medidas físicas fijas, y unidades relativas como rem, em, vw, vh y %, que dependen del contexto: el tamaño de fuente o las dimensiones del viewport.

Los navegadores convierten todas las longitudes CSS a píxeles durante el renderizado. Cuando escribes 1.5rem, el navegador multiplica 1.5 por el font-size raíz (normalmente 16px) para obtener 24px. Cuando escribes 50vw, toma la mitad del ancho actual del viewport. Entender estas relaciones es necesario para construir maquetaciones que escalen entre dispositivos y respeten las preferencias del usuario, como el tamaño de fuente personalizado configurado en el navegador.

La especificación CSS Values and Units Module Level 4 (W3C) define las ratios de conversión exactas entre todas las unidades absolutas: 1in = 96px = 72pt = 2.54cm = 25.4mm. Las unidades relativas no tienen una ratio fija porque dependen del contexto en tiempo de ejecución. Un convertidor de unidades CSS gratuito te permite calcular estas relaciones al instante dado tu font-size raíz específico y las dimensiones del viewport, sin escribir ningún código.

¿Por qué usar un convertidor de unidades CSS?

Convertir unidades CSS a mano implica recordar ratios, abrir una calculadora y comprobar los resultados. Esta herramienta realiza la conversión en tu navegador sin ninguna fricción.

Conversión instantánea
Introduce un valor, elige la unidad de origen y obtén los resultados en las 10 unidades CSS a la vez. Sin necesidad de hacer cálculos separados para px a rem, px a vw o px a pt.
🔒
Tus datos, privados
Todas las conversiones se ejecutan localmente en tu navegador. Ningún valor se envía a un servidor, ni se registra, ni se almacena. Cierra la pestaña y los datos desaparecen.
🎯
Ajustado a tu contexto exacto
Configura tu font-size raíz, el ancho del viewport, el alto del viewport y el font-size del elemento padre. El convertidor usa estos valores para producir resultados precisos para las unidades rem, em, vw, vh y %.
📏
Cubre todas las unidades de longitud CSS
Soporta px, rem, em, vw, vh, %, pt, cm, mm e in. Tanto si trabajas con maquetaciones de pantalla, hojas de estilo de impresión o tipografía responsiva, todas las unidades están cubiertas.

Casos de uso del convertidor de unidades CSS

Desarrollo frontend
Convierte los valores en píxeles de un archivo de diseño a rem para una librería de componentes. Cuando un mockup de Figma especifica 24px de espaciado, conviértelo a 1.5rem para que la maquetación escale con la preferencia de font-size del usuario.
Desarrollo backend / full-stack
Genera plantillas PDF o de email donde las dimensiones se especifican en pt o cm. Convierte tus valores CSS en píxeles a tamaños en puntos listos para impresión en renderizado del lado del servidor con herramientas como Puppeteer o wkhtmltopdf.
DevOps / Pipelines de CI
Valida que los tokens de espaciado de un sistema de diseño usen unidades consistentes entre pasos de compilación. Verifica rápidamente que una base de 16px produce los valores rem esperados en el CSS generado.
QA / Testing visual
Verifica estilos computados durante pruebas entre navegadores. Cuando Chrome DevTools muestra un valor computado de 14.4px, conviértelo a rem para confirmar que coincide con el 0.9rem esperado de la hoja de estilos.
Visualización de datos
Dimensiona elementos SVG o canvas relativos a las dimensiones del viewport. Convierte anchos fijos de gráficos en píxeles a unidades vw para que las visualizaciones ocupen un porcentaje consistente de la pantalla en distintos monitores.
Aprender CSS
Entiende la relación entre rem, em y px experimentando con distintos tamaños base. Cambia el font-size raíz de 16px a 18px y observa cómo cambia cada valor rem.

Referencia de unidades de longitud CSS

CSS define 10 unidades de longitud de uso habitual. Las unidades absolutas tienen una conversión fija a píxeles. Las unidades relativas dependen del contexto: el font-size raíz para rem, el font-size del elemento padre para em, y el viewport del navegador para vw y vh.

UnidadNombreTamaño por defectoRelativo a
pxPixel1pxFixed; 1px = 1/96 of 1in on screens
remRoot em16px (default)Relative to <html> font-size
emEmInheritedRelative to parent element font-size
vwViewport width1% of viewportRelative to browser window width
vhViewport height1% of viewportRelative to browser window height
%PercentageVariesRelative to parent property value
ptPoint1.333pxPrint unit; 1pt = 1/72 of 1in
cmCentimeter37.795pxPhysical unit; 1cm = 96px / 2.54
mmMillimeter3.7795pxPhysical unit; 1mm = 1cm / 10
inInch96pxPhysical unit; 1in = 96px (CSS spec)

Unidades CSS absolutas vs. relativas

Elegir entre unidades absolutas y relativas afecta a cómo responde tu maquetación ante distintas pantallas y configuraciones del usuario. Cada grupo tiene sus propias ventajas e inconvenientes.

Unidades absolutas (px, pt, cm, mm, in)
Las unidades absolutas producen el mismo tamaño físico independientemente del contexto. Usa px para bordes, sombras y elementos que no deben escalar. Usa pt para hojas de estilo de impresión. La especificación CSS define 1in = 96px, aunque el tamaño físico real varía según el DPI de la pantalla.
Unidades relativas (rem, em, vw, vh, %)
Las unidades relativas escalan con su contexto de referencia. Usa rem para font-sizes y espaciados para respetar las preferencias del usuario. Usa em para el escalado interno de componentes (padding relativo al font-size del propio elemento). Usa vw/vh para maquetaciones que ocupen el viewport, como secciones hero.

Tabla de conversión de px a rem

Esta tabla asume un font-size raíz de 16px (el valor por defecto del navegador). Si tu proyecto usa una base diferente, divide el valor en píxeles por tu base para obtener el equivalente en rem.

pxremptUso típico
100.6257.5Small caption text
120.759Body text (compact)
140.87510.5Default body text
16112Root font-size (browser default)
181.12513.5Large body text
201.2515H4 heading
241.518H3 heading
32224H2 heading
48336H1 heading
64448Display / hero text

Ejemplos de código

Estos ejemplos muestran cómo convertir unidades CSS de forma programática en JavaScript, Python, propiedades personalizadas CSS y Sass.

JavaScript
// px to rem (given root font-size of 16px)
const pxToRem = (px, base = 16) => px / base
pxToRem(24)  // → 1.5

// rem to px
const remToPx = (rem, base = 16) => rem * base
remToPx(1.5) // → 24

// px to vw (given viewport width of 1440px)
const pxToVw = (px, viewport = 1440) => (px / viewport) * 100
pxToVw(360)  // → 25

// Dynamic calculation using getComputedStyle
const rootFontSize = parseFloat(
  getComputedStyle(document.documentElement).fontSize
) // → 16 on most browsers
Python
# CSS unit converter functions

def px_to_rem(px: float, base: float = 16) -> float:
    return px / base

def rem_to_px(rem: float, base: float = 16) -> float:
    return rem * base

def px_to_vw(px: float, viewport: float = 1440) -> float:
    return (px / viewport) * 100

def px_to_pt(px: float) -> float:
    return px * 72 / 96

print(px_to_rem(24))     # → 1.5
print(rem_to_px(2.5))    # → 40.0
print(px_to_vw(720))     # → 50.0
print(px_to_pt(16))      # → 12.0
CSS (calc & custom properties)
/* Define a base scale using rem */
:root {
  --base: 16px;       /* root font-size */
  --space-1: 0.25rem; /* 4px */
  --space-2: 0.5rem;  /* 8px */
  --space-4: 1rem;    /* 16px */
  --space-8: 2rem;    /* 32px */
}

/* Fluid typography: scales between 1rem (16px) and 2.5rem (40px) */
h1 {
  font-size: clamp(1rem, 2.5vw + 0.5rem, 2.5rem);
}

/* Viewport-relative hero height */
.hero {
  height: calc(100vh - 4rem); /* full viewport minus 64px header */
}

/* Percentage-based grid */
.sidebar { width: 25%; }     /* 360px on 1440px screen */
.content { width: 75%; }     /* 1080px on 1440px screen */
SCSS (mixin)
// Reusable px-to-rem function in Sass
@use "sass:math";

$base-font-size: 16px !default;

@function rem($px) {
  @return math.div($px, $base-font-size) * 1rem;
}

// Usage
.card {
  padding: rem(24px);       // → 1.5rem
  margin-bottom: rem(32px); // → 2rem
  border-radius: rem(8px);  // → 0.5rem
  font-size: rem(14px);     // → 0.875rem
}

Preguntas frecuentes

¿Cuál es el font-size raíz por defecto en los navegadores?
Todos los navegadores principales (Chrome, Firefox, Safari, Edge) tienen un font-size raíz por defecto de 16px. Esto significa que 1rem = 16px a menos que el usuario o una hoja de estilos sobreescriba el font-size del elemento html. Algunos usuarios lo aumentan en la configuración del navegador por accesibilidad, razón por la que rem es la mejor opción por defecto para texto en lugar de px.
¿Cómo convierto px a rem?
Divide el valor en píxeles por el font-size raíz. Con la base por defecto de 16px: 24px / 16 = 1.5rem. Si tu proyecto establece html { font-size: 10px } (un reset habitual), entonces 24px / 10 = 2.4rem. La fórmula siempre es: rem = px / font-size-raíz.
¿Cuál es la diferencia entre rem y em?
rem es relativo al font-size del elemento raíz (la etiqueta html), mientras que em es relativo al font-size del elemento padre del elemento actual. Esto significa que rem produce un tamaño consistente en toda la página, mientras que em se acumula cuando hay anidamiento. Un 2em dentro de un padre con 2em equivale a 4 veces el tamaño raíz. Usa rem para espaciado global y font-sizes; usa em cuando quieras que el tamaño escale relativo al texto del propio componente.
¿Cuándo debo usar las unidades vw o vh?
Usa vw para elementos que deban escalar con el ancho de la ventana del navegador, como secciones hero a pantalla completa o tipografía fluida (clamp con vw). Usa vh para secciones a pantalla completa o maquetaciones de altura del viewport. Ten cuidado con vh en navegadores móviles donde la barra de direcciones cambia la altura del viewport; la nueva unidad dvh (dynamic viewport height) resuelve este problema.
¿Puedo mezclar distintas unidades CSS en la misma propiedad?
Sí. La función calc() de CSS te permite combinar cualquier unidad en una sola expresión. Por ejemplo, width: calc(100vw - 2rem) resta 32px (con la base por defecto) del ancho total del viewport. También puedes mezclar unidades en clamp(): font-size: clamp(1rem, 2vw + 0.5rem, 2.5rem) crea tipografía fluida que escala entre 16px y 40px.
¿Cuántos píxeles equivale 1pt en CSS?
En CSS, 1pt = 1/72 de pulgada, y 1 pulgada = 96px, por lo que 1pt = 96/72 = 1.333px. Esta ratio está fijada en la especificación CSS independientemente del DPI de la pantalla. Los puntos se usan principalmente en hojas de estilo de impresión y generación de PDF. Para diseño de pantalla, px o rem son mejores opciones.
¿Sigue siendo una buena práctica el reset de font-size al 62.5%?
Establecer html { font-size: 62.5% } hace que 1rem = 10px, lo que simplifica el cálculo mental (24px = 2.4rem). Sin embargo, requiere que establezcas explícitamente el font-size en el elemento body y puede causar problemas con componentes de terceros que asumen la base por defecto de 16px. La preferencia moderna es mantener el valor por defecto de 16px y usar una función de Sass o un plugin de PostCSS para gestionar la conversión.