ToolDeck

CSS Formatter

CSS를 올바른 들여쓰기로 정렬 및 미화

예시 시도

CSS 입력

정렬된 CSS

로컬에서 실행 · 시크릿 붙여넣기 안전
정렬된 CSS가 여기에 표시됩니다…
이것도 써보세요:CSS MinifierCSS 단위 변환기

CSS 형식화란?

CSS 형식화는 Cascading Style Sheets에 일관된 들여쓰기, 줄바꿈, 간격을 추가하여 사람이 읽기 쉽게 만드는 과정입니다. 브라우저는 CSS의 공백을 완전히 무시합니다. 한 줄로 압축된 코드와 깔끔하게 들여쓴 스타일시트는 동일하게 렌더링됩니다. 차이는 가독성입니다. 형식화된 CSS를 사용하면 선택자를 훑어보고, 누락된 세미콜론을 발견하고, 캐스케이드를 한눈에 파악할 수 있습니다.

CSS 포매터(CSS 뷰티파이어 또는 프리티 프린터라고도 함)는 압축되거나 일관성 없이 작성된 CSS를 받아 균일한 들여쓰기, 선언 당 한 줄, 일관된 중괄호 배치로 다시 작성합니다. 이는 미니피케이션의 역연산으로, 미화(beautification) 또는 프리티 프린팅(pretty-printing)이라고도 합니다. 미니피케이션이 프로덕션을 위해 파일 크기를 줄이려 공백을 제거한다면, 형식화는 개발, 코드 리뷰, 코드베이스 유지보수를 위해 구조를 복원합니다.

CSS 명세(W3C CSS Syntax Module Level 3)는 스타일시트의 문법을 정의하지만 공백 규칙에 대해서는 아무것도 규정하지 않습니다. 형식화 규칙은 팀의 결정 사항입니다. 탭 vs. 스페이스, 2칸 vs. 4칸 들여쓰기, 중괄호 스타일, 규칙 집합 사이의 빈 줄 등이 그 예입니다. 포매터는 선택한 규칙을 모든 파일에 걸쳐 일관되게 적용합니다. 대부분의 팀은 .prettierrc 또는 .editorconfig 파일에 선택 사항을 기록합니다.

이 CSS 포매터를 사용하는 이유

어떤 CSS든 붙여넣으면 수 밀리초 안에 올바르게 들여쓴 결과를 얻을 수 있습니다. 에디터 플러그인 설치, 설정 파일 작성, 계정 생성이 필요 없습니다.

즉시 형식화
입력하거나 붙여넣는 즉시 결과가 업데이트됩니다. 빌드 단계나 CLI 명령 실행을 기다릴 필요 없이 형식화된 CSS를 바로 얻을 수 있습니다.
🔒
개인정보 보호 우선 처리
모든 형식화는 JavaScript를 사용하여 브라우저에서 로컬로 실행됩니다. CSS는 기기 밖으로 나가지 않으며 어떤 서버에도 전송되지 않습니다.
🎨
들여쓰기 설정
프로젝트의 코드 스타일에 맞게 2칸 스페이스, 4칸 스페이스, 탭 들여쓰기 중에서 선택할 수 있습니다. 결과물은 코드베이스에 바로 붙여넣을 수 있는 형태입니다.
📋
로그인 불필요
페이지를 열고, CSS를 붙여넣고, 결과를 복사하면 됩니다. 회원가입, 요청 횟수 제한, 기능 제한이 없습니다. 매번 방문할 때마다 전체 기능을 사용할 수 있습니다.

CSS 포매터 활용 사례

프론트엔드 개발
벤더 라이브러리나 CDN에서 압축된 CSS를 받았을 때 형식화하여 선택자를 읽고 자체 스타일시트에서 무엇을 덮어쓰는지 파악합니다.
백엔드 엔지니어링
서버 렌더링 페이지는 종종 중요 CSS를 한 줄로 인라인으로 포함합니다. 그 CSS를 형식화하면 초기 HTML 페이로드에 어떤 스타일이 포함되어 있는지 감사하기 쉬워집니다.
DevOps 및 CI 파이프라인
풀 리퀘스트에서 포매터 출력과 커밋된 파일을 비교하여 일관된 CSS 형식을 적용합니다. 일관성 없는 공백은 실제 변경 사항을 가리는 불필요한 diff를 만들어냅니다.
QA 및 버그 조사
시각적 버그를 디버깅할 때 DevTools에서 계산된 CSS를 형식화하면 어떤 속성이 어떤 우선순위 순서로 적용되는지 빠르게 확인할 수 있습니다.
데이터 마이그레이션
콘텐츠 관리 시스템과 이메일 빌더는 CSS를 데이터베이스 필드에 저장하는데, 이때 공백이 제거되는 경우가 많습니다. 추출된 CSS를 형식화하면 재가져오기 전에 검증하는 데 도움이 됩니다.
CSS 학습
CSS를 배우는 개발자는 튜토리얼이나 Stack Overflow 답변의 예제를 붙여넣어 일관되게 형식화된 형태로 확인할 수 있으며, 중첩 구조와 캐스케이드를 더 쉽게 파악할 수 있습니다.

CSS 속성 순서 참조

대부분의 CSS 포매터는 속성을 재정렬하지 않습니다. 그러나 많은 스타일 가이드는 관련 속성을 함께 그룹화하도록 권장합니다. 아래 표는 Stylelint의 order 플러그인과 CSScomb 같은 도구에서 사용되는 일반적인 그룹화 규칙입니다.

그룹예시 속성목적
Position & Layoutposition, display, float, clearDefines the element's rendering mode
Box Modelwidth, height, margin, paddingControls dimensions and spacing
Typographyfont-size, line-height, colorText styling properties
Visualbackground, border, box-shadowDecorative properties
Animationtransition, animation, transformMotion and transform effects
Misccursor, overflow, z-indexBehavioral and stacking properties

이 그룹화는 관례이지 CSS 요구 사항이 아닙니다. 브라우저는 규칙 블록 내 속성 위치와 관계없이 명시도와 소스 순서에 따라 선언을 적용합니다. 포매터는 공백과 들여쓰기에 집중하며, 속성 재정렬은 Stylelint 같은 도구가 처리하는 별도의 린팅 관심사입니다.

CSS 형식화 vs. CSS 미니피케이션

형식화와 미니피케이션은 반대되는 연산으로, 개발의 서로 다른 단계에서 적용됩니다.

CSS 포매터 (이 도구)
CSS를 사람이 읽기 쉽도록 들여쓰기, 줄바꿈, 간격을 추가합니다. 개발 및 코드 리뷰 중에 사용합니다. 파일 크기는 늘어나지만 브라우저 렌더링에는 전혀 영향이 없습니다. 결과물은 사람을 위한 것입니다.
CSS 미니파이어
파일 크기를 줄이기 위해 불필요한 공백, 주석, 중복 문법을 모두 제거합니다. 프로덕션 빌드에 사용합니다. 결과물은 사람이 읽기 위한 것이 아니라 브라우저와 CDN을 위한 것입니다.

코드 예제

다양한 언어와 환경에서 CSS를 프로그래밍 방식으로 형식화하는 방법입니다.

JavaScript (Prettier API)
import * as prettier from 'prettier'

const ugly = 'body{margin:0;padding:0}h1{font-size:2rem;color:#333}'

const formatted = await prettier.format(ugly, {
  parser: 'css',
  tabWidth: 2,
  singleQuote: true,
})
// → "body {\n  margin: 0;\n  padding: 0;\n}\n\nh1 {\n  font-size: 2rem;\n  color: #333;\n}\n"
Python (cssbeautifier)
import cssbeautifier

ugly = 'body{margin:0;padding:0}h1{font-size:2rem;color:#333}'

opts = cssbeautifier.default_options()
opts.indent_size = 2

formatted = cssbeautifier.beautify(ugly, opts)
# → "body {\n  margin: 0;\n  padding: 0;\n}\n\nh1 {\n  font-size: 2rem;\n  color: #333;\n}"
CLI (Prettier)
# Format a single file in place
npx prettier --write styles.css

# Format all CSS files in a directory
npx prettier --write "src/**/*.css"

# Check formatting without modifying files
npx prettier --check "src/**/*.css"

# Pipe minified CSS through stdin
echo "body{margin:0;padding:0}" | npx prettier --parser css
PHP (sabberworm/php-css-parser)
<?php
// composer require sabberworm/php-css-parser
require 'vendor/autoload.php';

use Sabberworm\CSS\Parser;
use Sabberworm\CSS\OutputFormat;

$input = 'body{margin:0;padding:0}h1{font-size:2rem;color:#333}';

$document = (new Parser($input))->parse();
echo $document->render(OutputFormat::createPretty());
// → body {
//     margin: 0;
//     padding: 0;
//   }
//   h1 {
//     font-size: 2rem;
//     color: #333;
//   }

자주 묻는 질문

CSS 포매터와 CSS 린터의 차이는 무엇인가요?
CSS 포매터는 공백만 변경합니다. 들여쓰기, 줄바꿈, 콜론과 중괄호 주변의 간격이 해당됩니다. 실제 CSS 선언은 수정하지 않습니다. CSS 린터(Stylelint 등)는 오류, 나쁜 관행, 스타일 위반을 분석하고 공백 외의 문제도 제안하거나 자동 수정할 수 있습니다. 팀은 보통 두 가지를 모두 사용합니다. 포매터는 일관된 간격을 위해, 린터는 실수를 잡기 위해 사용합니다.
CSS를 형식화하면 브라우저 렌더링 방식이 변경되나요?
아니요. 브라우저는 W3C CSS Syntax Module에 따라 CSS를 파싱하며, 모든 공백(스페이스, 탭, 줄바꿈)을 동등한 토큰 구분자로 처리합니다. 선언, 선택자, 값 사이의 공백을 추가하거나 제거해도 계산된 스타일에 영향이 없습니다. 유일한 예외는 content: "hello world"와 같은 문자열 값 내부의 공백으로, 포매터가 이를 보존합니다.
CSS 들여쓰기로 스페이스를 몇 칸 사용해야 하나요?
가장 일반적인 규칙은 2칸과 4칸 스페이스입니다. Google 스타일 가이드와 Prettier의 기본값은 모두 2칸 스페이스를 사용합니다. WordPress CSS 코딩 표준은 탭을 사용합니다. 성능 차이는 없습니다. 팀이 이미 사용하는 방식이나 기존 JavaScript/HTML 코드에서 사용하는 방식을 선택하고 일관성을 유지하세요.
이 도구로 SCSS, LESS 또는 다른 CSS 전처리기를 형식화할 수 있나요?
이 도구는 표준 CSS 문법을 형식화합니다. SCSS와 LESS는 CSS 문법의 대부분을 공유하므로 간단한 전처리기 코드는 올바르게 형식화되는 경우가 많습니다. 그러나 @mixin, @include, 중첩 규칙 집합과 같은 SCSS 고유의 구문은 예상대로 처리되지 않을 수 있습니다. SCSS의 경우 SCSS 파서를 사용하는 Prettier 또는 sass-formatter 확장을 사용하세요.
CSS 형식화와 CSS 미화(beautification)는 같은 것인가요?
네. CSS 포매터, CSS 뷰티파이어, CSS 프리티 프린터라는 용어는 모두 동일한 작업을 가리킵니다. CSS 코드에 일관된 공백을 추가하는 것입니다. 도구마다 이름이 다르지만 결과는 동일합니다. 선언 당 한 줄씩 들여쓴 읽기 쉬운 CSS입니다.
형식화된 CSS가 원본보다 줄 수가 다른 이유는 무엇인가요?
압축된 CSS는 여러 선언을 한 줄에 담거나 규칙 집합 사이의 줄바꿈을 생략하는 경우가 많습니다. 포매터는 각 선언 뒤에 줄바꿈을 추가하고 규칙 집합 사이에 빈 줄을 삽입하므로 줄 수가 늘어납니다. 실제 CSS 내용(선택자, 속성, 값)은 변경되지 않습니다.
형식화된 CSS와 압축된 CSS 중 어느 것을 버전 관리에 커밋해야 하나요?
형식화된 CSS를 커밋하세요. 버전 관리 diff는 줄 단위이므로, 선언 당 한 줄씩 작성된 형식화된 CSS는 깔끔하고 검토하기 쉬운 diff를 생성합니다. 압축된 CSS는 검토가 불가능한 단일 줄 diff를 만들어냅니다. 미니피케이션은 소스 형식이 아닌 빌드 단계로 실행하세요. PostCSS, cssnano, 또는 번들러의 CSS 플러그인이 프로덕션 미니피케이션을 자동으로 처리합니다.