ToolDeck

Conversor de Unidades CSS

Converta unidades CSS entre px, rem, em, vw, vh e %

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

O Que É a Conversão de Unidades CSS?

Um conversor de unidades CSS é uma ferramenta que traduz valores de comprimento entre diferentes sistemas de medida do CSS. O CSS define mais de uma dúzia de unidades de comprimento, divididas em dois grupos: unidades absolutas como px, pt, cm e in, que mapeiam para medidas físicas fixas, e unidades relativas como rem, em, vw, vh e %, que dependem do contexto, como tamanho de fonte ou dimensões do viewport.

Os navegadores resolvem todos os comprimentos CSS em pixels durante a renderização. Quando você escreve 1.5rem, o navegador multiplica 1.5 pelo font-size raiz (tipicamente 16px) para obter 24px. Quando você escreve 50vw, ele usa metade da largura atual do viewport. Entender essas relações é necessário para construir layouts que escalam em diferentes dispositivos e respeitam preferências do usuário, como tamanhos de fonte personalizados definidos no navegador.

A especificação CSS Values and Units Module Level 4 (W3C) define as taxas de conversão exatas entre todas as unidades absolutas: 1in = 96px = 72pt = 2.54cm = 25.4mm. Unidades relativas não têm proporção fixa porque dependem do contexto em tempo de execução. Um conversor de unidades CSS gratuito permite calcular essas relações instantaneamente com base no seu font-size raiz e dimensões de viewport específicos, sem escrever nenhum código.

Por Que Usar um Conversor de Unidades CSS?

Converter entre unidades CSS manualmente significa lembrar proporções, abrir uma calculadora e verificar sua conta duas vezes. Esta ferramenta faz a conversão no seu navegador sem nenhuma fricção.

Conversão Instantânea
Insira um valor, escolha a unidade de origem e veja os resultados em todas as 10 unidades CSS de uma vez. Sem necessidade de calcular separadamente px para rem, px para vw ou px para pt.
🔒
Dados Privados
Todas as conversões são executadas localmente no seu navegador. Nenhum valor é enviado a um servidor, registrado ou armazenado. Feche a aba e os dados desaparecem.
🎯
Contexto Exato do Projeto
Defina seu font-size raiz, largura do viewport, altura do viewport e font-size do elemento pai. O conversor usa esses valores para produzir resultados precisos para as unidades rem, em, vw, vh e %.
📏
Cobertura Completa de Unidades CSS
Suporta px, rem, em, vw, vh, %, pt, cm, mm e in. Seja trabalhando com layouts de tela, folhas de estilo para impressão ou tipografia responsiva, todas as unidades estão cobertas.

Casos de Uso do Conversor de Unidades CSS

Desenvolvimento Frontend
Converta os valores em pixels de um arquivo de design para rem em uma biblioteca de componentes. Quando um mockup no Figma especifica 24px de espaçamento, converta para 1.5rem para que o layout escale com a preferência de font-size do usuário.
Engenharia Backend / Full-Stack
Gere templates PDF ou de e-mail onde as dimensões são especificadas em pt ou cm. Converta seus valores CSS em pixels para tamanhos em pontos adequados para impressão, para renderização no servidor com ferramentas como Puppeteer ou wkhtmltopdf.
DevOps / Pipelines de CI
Valide que os tokens de espaçamento de um sistema de design usam unidades consistentes em todas as etapas do build. Verifique rapidamente que uma base de 16px produz os valores rem esperados no CSS gerado.
QA / Testes Visuais
Verifique estilos computados durante testes entre navegadores. Quando o DevTools do Chrome mostra um valor computado de 14.4px, converta para rem para confirmar que corresponde ao 0.9rem esperado da folha de estilos.
Visualização de Dados
Dimensione elementos SVG ou canvas relativos às dimensões do viewport. Converta larguras de gráficos em pixels fixos para unidades vw para que as visualizações ocupem uma porcentagem consistente da tela em diferentes monitores.
Aprendizado de CSS
Entenda a relação entre rem, em e px experimentando diferentes tamanhos base. Mude o font-size raiz de 16px para 18px e veja como cada valor rem se altera.

Referência de Unidades de Comprimento CSS

O CSS define 10 unidades de comprimento de uso comum. Unidades absolutas têm uma conversão fixa para pixels. Unidades relativas dependem do contexto: o font-size raiz para rem, o font-size do elemento pai para em, e o viewport do navegador para vw e vh.

UnidadeNomeTamanho padrãoRelativa 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

A escolha entre unidades absolutas e relativas afeta como o layout responde a diferentes telas e configurações do usuário. Cada grupo tem suas vantagens e desvantagens.

Unidades Absolutas (px, pt, cm, mm, in)
Unidades absolutas produzem o mesmo tamanho físico independentemente do contexto. Use px para bordas, sombras e elementos que não devem escalar. Use pt para folhas de estilo de impressão. A especificação CSS define 1in = 96px, embora o tamanho físico real varie com o DPI do display.
Unidades Relativas (rem, em, vw, vh, %)
Unidades relativas escalam com seu contexto de referência. Use rem para font-sizes e espaçamento para respeitar as preferências do usuário. Use em para escalonamento interno de componentes (padding relativo ao próprio font-size do elemento). Use vw/vh para layouts que preenchem o viewport, como seções hero.

Tabela de Conversão Comum de px para rem

Esta tabela assume um font-size raiz de 16px (o padrão do navegador). Se o seu projeto usa uma base diferente, divida o valor em pixels pela sua base para obter o equivalente em 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

Exemplos de Código

Estes exemplos mostram como converter unidades CSS programaticamente em JavaScript, Python, propriedades customizadas CSS e 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
}

Perguntas Frequentes

Qual é o font-size raiz padrão nos navegadores?
Todos os principais navegadores (Chrome, Firefox, Safari, Edge) têm como padrão um font-size raiz de 16px. Isso significa que 1rem = 16px, a menos que o usuário ou uma folha de estilo substitua o font-size do elemento html. Alguns usuários aumentam esse valor nas configurações do navegador por acessibilidade, o que é por isso que rem é a escolha mais adequada para texto em vez de px.
Como converter px para rem?
Divida o valor em pixels pelo font-size raiz. Com a base padrão de 16px: 24px / 16 = 1.5rem. Se o seu projeto define html { font-size: 10px } (um reset comum), então 24px / 10 = 2.4rem. A fórmula é sempre: rem = px / font-size-raiz.
Qual é a diferença entre rem e em?
rem é relativo ao font-size do elemento raiz (a tag html), enquanto em é relativo ao font-size do elemento pai atual. Isso significa que rem produz dimensionamento consistente em toda a página, enquanto em se compõe quando aninhado. Um 2em dentro de um pai com 2em se torna 4x o tamanho raiz. Use rem para espaçamento global e tamanhos de fonte; use em quando quiser que o dimensionamento escale em relação ao texto do próprio componente.
Quando devo usar as unidades vw ou vh?
Use vw para elementos que devem escalar com a largura da janela do navegador, como seções hero de largura total ou tipografia fluida (clamp com vw). Use vh para seções de tela cheia ou layouts de altura de viewport. Tenha cuidado com vh em navegadores móveis onde a barra de endereços altera a altura do viewport; a unidade dvh (dynamic viewport height) mais recente resolve isso.
Posso misturar diferentes unidades CSS na mesma propriedade?
Sim. A função CSS calc() permite combinar qualquer unidade em uma única expressão. Por exemplo, width: calc(100vw - 2rem) subtrai 32px (na base padrão) da largura total do viewport. Também é possível misturar unidades no clamp(): font-size: clamp(1rem, 2vw + 0.5rem, 2.5rem) cria tipografia fluida que escala entre 16px e 40px.
Quantos pixels é 1pt em CSS?
Em CSS, 1pt = 1/72 de polegada, e 1 polegada = 96px, portanto 1pt = 96/72 = 1.333px. Essa proporção é fixada na especificação CSS independentemente do DPI da tela. Points são usados principalmente em folhas de estilo para impressão e geração de PDF. Para design de tela, px ou rem são escolhas mais adequadas.
O reset de font-size de 62.5% ainda é uma boa prática?
Definir html { font-size: 62.5% } faz com que 1rem = 10px, simplificando o cálculo mental (24px = 2.4rem). No entanto, isso exige que você defina explicitamente o font-size no elemento body e pode causar problemas com componentes de terceiros que assumem a base padrão de 16px. A preferência moderna é manter o padrão de 16px e usar uma função Sass ou plugin PostCSS para lidar com a conversão.