ToolDeck

CSS 단위 변환기

px, rem, em, vw, vh, % 간 CSS 단위 변환

px16
rem1
em1
vw1.111111
vh1.777778
%100
pt12
cm0.4233331
mm4.233331
in0.1666667
이것도 써보세요:CSS FormatterCSS Minifier

CSS 단위 변환이란?

CSS 단위 변환기는 서로 다른 CSS 측정 단위 간에 길이 값을 변환하는 도구입니다. CSS는 12개 이상의 길이 단위를 정의하며, 두 그룹으로 나뉩니다. px, pt, cm, in처럼 고정된 물리적 크기에 대응하는 절대 단위와, 글꼴 크기나 뷰포트 크기 등 맥락에 따라 달라지는 rem, em, vw, vh, % 같은 상대 단위입니다.

브라우저는 렌더링 시 모든 CSS 길이를 픽셀로 변환합니다. 1.5rem을 작성하면 브라우저는 1.5에 루트 글꼴 크기(보통 16px)를 곱하여 24px를 얻습니다. 50vw를 작성하면 현재 뷰포트 너비의 절반을 취합니다. 이러한 관계를 이해하는 것은 기기 간에 확장되고 브라우저에서 설정한 사용자 지정 글꼴 크기 같은 사용자 환경 설정을 존중하는 레이아웃을 만드는 데 필수적입니다.

W3C의 CSS Values and Units Module Level 4 명세는 모든 절대 단위 간의 정확한 변환 비율을 정의합니다. 1in = 96px = 72pt = 2.54cm = 25.4mm입니다. 상대 단위는 런타임 맥락에 따라 달라지므로 고정된 비율이 없습니다. 무료 CSS 단위 변환기를 사용하면 코드를 작성하지 않고도 특정 루트 글꼴 크기와 뷰포트 크기에 따른 관계를 즉시 계산할 수 있습니다.

CSS 단위 변환기를 사용하는 이유

CSS 단위를 손으로 변환하려면 비율을 기억하고 계산기를 꺼내 계산을 다시 확인해야 합니다. 이 도구는 브라우저에서 아무런 번거로움 없이 변환을 처리합니다.

즉시 변환
값을 입력하고 원본 단위를 선택하면 10개의 CSS 단위 전체에 대한 결과를 한 번에 확인할 수 있습니다. px→rem, px→vw, px→pt를 별도로 계산할 필요가 없습니다.
🔒
개인정보 보호
모든 변환은 브라우저에서 로컬로 실행됩니다. 어떠한 값도 서버로 전송되거나 기록 또는 저장되지 않습니다. 탭을 닫으면 데이터도 사라집니다.
🎯
실제 맥락에 맞는 결과
루트 글꼴 크기, 뷰포트 너비, 뷰포트 높이, 부모 글꼴 크기를 직접 설정할 수 있습니다. 변환기는 이 값들을 사용하여 rem, em, vw, vh, % 단위에 대한 정확한 결과를 계산합니다.
📏
모든 CSS 길이 단위 지원
px, rem, em, vw, vh, %, pt, cm, mm, in을 모두 지원합니다. 화면 레이아웃, 인쇄 스타일시트, 반응형 타이포그래피 등 어떤 작업을 하든 모든 단위를 다룰 수 있습니다.

CSS 단위 변환기 활용 사례

프론트엔드 개발
디자인 파일의 픽셀 값을 컴포넌트 라이브러리용 rem으로 변환합니다. Figma 목업에서 간격이 24px로 지정된 경우, 사용자의 글꼴 크기 설정에 따라 레이아웃이 확장되도록 1.5rem으로 변환합니다.
백엔드 / 풀스택 엔지니어링
pt나 cm 단위로 크기를 지정해야 하는 PDF 또는 이메일 템플릿을 생성합니다. CSS 픽셀 값을 Puppeteer나 wkhtmltopdf 같은 도구를 이용한 서버 사이드 렌더링에 적합한 포인트 크기로 변환합니다.
DevOps / CI 파이프라인
디자인 시스템의 간격 토큰이 빌드 단계 전반에 걸쳐 일관된 단위를 사용하는지 검증합니다. 16px 기본값이 생성된 CSS에서 예상되는 rem 값을 만들어내는지 빠르게 확인합니다.
QA / 시각적 테스트
크로스 브라우저 테스트 중 계산된 스타일을 검증합니다. Chrome DevTools에서 계산된 값이 14.4px로 표시될 때 이를 rem으로 변환하여 스타일시트의 예상값인 0.9rem과 일치하는지 확인합니다.
데이터 시각화
SVG나 캔버스 요소의 크기를 뷰포트 크기에 상대적으로 설정합니다. 고정된 픽셀 차트 너비를 vw 단위로 변환하여 서로 다른 모니터에서도 화면의 일정 비율을 차지하도록 만듭니다.
CSS 학습
다양한 기본 크기로 실험하며 rem, em, px 간의 관계를 이해합니다. 루트 글꼴 크기를 16px에서 18px로 변경하면 모든 rem 값이 어떻게 달라지는지 확인할 수 있습니다.

CSS 길이 단위 참조

CSS는 일반적으로 사용되는 10개의 길이 단위를 정의합니다. 절대 단위는 픽셀로의 고정된 변환 비율을 갖습니다. 상대 단위는 맥락에 따라 달라집니다. rem은 루트 글꼴 크기, em은 부모 글꼴 크기, vw와 vh는 브라우저 뷰포트를 기준으로 합니다.

단위이름기본 크기기준
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)

절대 단위 vs 상대 CSS 단위

절대 단위와 상대 단위 중 무엇을 선택하느냐에 따라 레이아웃이 다양한 화면과 사용자 설정에 어떻게 반응하는지가 결정됩니다. 각 그룹에는 고유한 장단점이 있습니다.

절대 단위 (px, pt, cm, mm, in)
절대 단위는 맥락과 관계없이 동일한 물리적 크기를 만들어냅니다. 테두리, 그림자, 확대되지 않아야 하는 요소에는 px를 사용하세요. 인쇄 스타일시트에는 pt를 사용하세요. CSS 명세는 1in = 96px로 정의하지만, 실제 물리적 크기는 디스플레이 DPI에 따라 다를 수 있습니다.
상대 단위 (rem, em, vw, vh, %)
상대 단위는 참조 맥락에 따라 확장됩니다. 사용자 환경 설정을 존중하도록 글꼴 크기와 간격에는 rem을 사용하세요. 요소 자체 글꼴 크기에 상대적인 패딩과 같은 컴포넌트 내부 확장에는 em을 사용하세요. 히어로 섹션과 같은 뷰포트 전체를 채우는 레이아웃에는 vw/vh를 사용하세요.

일반적인 px → rem 변환표

이 표는 루트 글꼴 크기가 16px(브라우저 기본값)일 때를 기준으로 합니다. 프로젝트에서 다른 기본값을 사용하는 경우, 픽셀 값을 해당 기본값으로 나누어 rem에 해당하는 값을 구합니다.

pxrempt일반적인 용도
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

코드 예제

아래 예제는 JavaScript, Python, CSS 사용자 정의 속성, Sass에서 CSS 단위를 프로그래밍 방식으로 변환하는 방법을 보여줍니다.

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
}

자주 묻는 질문

브라우저의 기본 루트 글꼴 크기는 얼마인가요?
주요 브라우저(Chrome, Firefox, Safari, Edge)는 모두 루트 글꼴 크기를 기본적으로 16px로 설정합니다. 즉, 사용자나 스타일시트가 html 요소의 font-size를 재정의하지 않는 한 1rem = 16px입니다. 일부 사용자는 접근성을 위해 브라우저 설정에서 이 값을 늘리는데, 이것이 바로 텍스트에 px보다 rem을 기본으로 사용하는 것이 좋은 이유입니다.
px를 rem으로 어떻게 변환하나요?
픽셀 값을 루트 글꼴 크기로 나눕니다. 기본 16px를 기준으로 하면 24px / 16 = 1.5rem입니다. 프로젝트에서 html { font-size: 10px } (흔히 사용되는 리셋)로 설정한 경우 24px / 10 = 2.4rem입니다. 공식은 항상 rem = px / 루트-글꼴-크기입니다.
rem과 em의 차이는 무엇인가요?
rem은 루트 요소(html 태그)의 글꼴 크기를 기준으로 하고, em은 현재 요소의 부모 글꼴 크기를 기준으로 합니다. 따라서 rem은 페이지 전체에서 일관된 크기를 만들지만, em은 중첩될 때 복합적으로 적용됩니다. 2em인 부모 안의 2em은 루트 크기의 4배가 됩니다. 전역 간격과 글꼴 크기에는 rem을, 컴포넌트 자체 텍스트에 상대적인 크기 조정이 필요할 때는 em을 사용하세요.
vw 또는 vh 단위는 언제 사용해야 하나요?
전체 너비 히어로 섹션이나 유동 타이포그래피(vw를 활용한 clamp)처럼 브라우저 창 너비에 따라 확장되어야 하는 요소에는 vw를 사용하세요. 전체 화면 섹션이나 뷰포트 높이 레이아웃에는 vh를 사용하세요. 모바일 브라우저에서는 주소 표시줄이 뷰포트 높이를 변경하므로 vh 사용에 주의하세요. 새로운 dvh(동적 뷰포트 높이) 단위가 이 문제를 해결합니다.
같은 속성에서 서로 다른 CSS 단위를 혼합해 사용할 수 있나요?
네. CSS calc() 함수를 사용하면 하나의 표현식에서 어떤 단위든 조합할 수 있습니다. 예를 들어 width: calc(100vw - 2rem)은 전체 뷰포트 너비에서 32px(기본 기준)를 뺍니다. clamp()에서도 단위를 혼합할 수 있습니다. font-size: clamp(1rem, 2vw + 0.5rem, 2.5rem)은 16px에서 40px 사이에서 확장되는 유동 타이포그래피를 만듭니다.
CSS에서 1pt는 몇 픽셀인가요?
CSS에서 1pt = 1/72인치이고 1인치 = 96px이므로, 1pt = 96/72 = 1.333px입니다. 이 비율은 화면 DPI와 관계없이 CSS 명세에 고정되어 있습니다. 포인트는 주로 인쇄 스타일시트와 PDF 생성에 사용됩니다. 화면 디자인에는 px나 rem이 더 적합합니다.
62.5% 글꼴 크기 리셋은 여전히 좋은 관행인가요?
html { font-size: 62.5% }를 설정하면 1rem = 10px가 되어 계산이 단순해집니다(24px = 2.4rem). 그러나 이 방법은 body 요소에 명시적으로 font-size를 설정해야 하며, 기본 16px를 가정하는 서드파티 컴포넌트와 충돌이 발생할 수 있습니다. 최근에는 16px 기본값을 유지하고 Sass 함수나 PostCSS 플러그인으로 변환을 처리하는 방식을 선호합니다.