공백 · 줄바꿈 정리 도구
연속 공백·빈 줄·앞뒤 여백을 한 번에 정돈합니다
입력한 글은 브라우저 밖으로 나가지 않습니다.
결과0자0자
가장 골치 아픈 공백은 눈에 안 보인다
공백 정리라고 하면 연속된 스페이스를 줄이는 정도를 떠올리기 쉽습니다. 그런데 실무에서 진짜 시간을 잡아먹는 건 화면에는 그냥 빈칸처럼 보이는데 사실은 다른 문자인 공백들입니다. 이들은 복사·붙여넣기를 타고 슬그머니 들어와서, 눈으로는 원인을 찾을 수 없는 버그를 만듭니다.
문자 코드 어디서 딸려 오나
──────────────────────────────────────────────
일반 스페이스 U+0020 정상
NBSP (줄바꿈 방지) U+00A0 워드·웹에서 복사
전각 공백 U+3000 한글(HWP)·일본어 문서
zero-width space U+200B 웹페이지·위키
BOM U+FEFF 파일 맨 앞(인코딩 표식)“사과”를 검색했는데 목록의 “사과”가 안 걸리는 경험, 엑셀에서 VLOOKUP 이 분명 같은 값인데 매칭이 안 되는 경험 — 대부분 이 보이지 않는 공백 때문입니다. 일반 스페이스와 NBSP 는 사람 눈에 완전히 같지만, 컴퓨터에게는 전혀 다른 글자입니다.
이 도구의 ‘특수 공백 정리’는 이들을 두 부류로 나눠 처리합니다. 폭을 차지하는 공백(NBSP·전각 공백)은 일반 스페이스로 바꾸고, 폭이 없어 흔적만 남기는 zero-width space 와 BOM 은 아예 삭제합니다. 눈에 보이는 간격은 유지하면서 숨은 함정만 걷어내는 것입니다.
단, 이모지의 접착제는 건드리지 않는다
zero-width 문자를 “전부 지우면” 될 것 같지만, 그중 하나는 지우면 안 됩니다. ZWJ(U+200D, zero-width joiner)는 여러 이모지를 하나로 잇는 접착제입니다. 가족 이모지 👨👩👧👦는 사실 사람 이모지 넷을 ZWJ 로 이어 붙인 것이라, ZWJ 를 지우면 네 개로 흩어집니다. 그래서 이 도구는 ZWJ 는 남기고 진짜 군더더기인 zero-width space 와 BOM 만 지웁니다.
빈 줄: 없앨 것인가, 줄일 것인가
빈 줄 처리에는 두 가지가 있고, 목적이 다릅니다.
- 연속 빈 줄을 하나로 — 문단 사이의 한 줄 간격은 살리고, 실수로 여러 번 엔터를 쳐서 벌어진 큰 틈만 좁힙니다. 문서의 구조를 유지하면서 정리할 때 씁니다. 문서 맨 위와 맨 아래의 빈 줄도 함께 정리합니다.
- 빈 줄 전부 제거 — 문단 구분까지 포함해 모든 빈 줄을 없앱니다. 목록을 촘촘하게 붙이거나, 줄 사이 간격 없이 한 덩어리로 만들 때 씁니다.
탭 vs 스페이스 — 오래된 싸움
들여쓰기를 탭으로 할지 스페이스로 할지는 개발자들 사이의 유명한 논쟁거리입니다. 사실 어느 쪽이 옳다기보다 섞이는 게 문제입니다. 한 파일 안에 탭과 스페이스가 섞이면 에디터 설정에 따라 들여쓰기가 들쭉날쭉 보이고, 특히 파이썬은 들여쓰기가 문법이라 섞이면 실행 오류(TabError)가 납니다.
그래서 붙여넣을 곳에 맞춰 한쪽으로 통일하는 게 실용적입니다. 웹 폼이나 마크다운, 채팅에 코드를 붙일 때는 탭이 제멋대로 늘어나는 걸 피하려 스페이스가 안전하고, 탭 기반 프로젝트에 맞출 때는 반대로 바꿉니다. 이 도구의 스페이스→탭 변환은 줄 앞 들여쓰기에만 적용됩니다 — 문장 중간의 정렬용 공백까지 탭으로 바꿔 버리면 오히려 어긋나기 때문입니다.
정리하면
- 검색·매칭이 이유 없이 안 되면 특수 공백을 의심하세요.NBSP·전각 공백·zero-width 는 눈에 안 보이면서 ‘다른 글자’입니다.
- 빈 줄은 목적에 따라 줄이거나 없앱니다.문서 구조를 살리려면 ‘하나로’, 촘촘히 붙이려면 ‘전부 제거’.
- 탭·스페이스는 붙여넣을 곳에 맞춰 통일하세요. 섞이는 것이 가장 나쁘고, 특히 파이썬에서는 오류가 됩니다.
자주 묻는 질문
- 겉보기엔 똑같은 두 단어가 검색이 안 됩니다.
- 눈에 안 보이는 특수 공백이 섞였을 가능성이 큽니다. 워드에서 복사하면 NBSP(U+00A0), 한글(HWP)에서 복사하면 전각 공백(U+3000), 웹에서 복사하면 zero-width space(U+200B)가 일반 공백처럼 보이는 자리에 들어옵니다. '특수 공백 정리'를 켜면 폭이 있는 것은 일반 스페이스로 바꾸고, 폭이 없는 zero-width 문자는 삭제합니다.
- 빈 줄을 전부 없애는 것과 하나로 줄이는 것의 차이는?
- '연속 빈 줄을 하나로'는 문단 사이의 한 줄 간격은 남기고 여러 줄로 벌어진 것만 좁힙니다(문서 구조 유지). '빈 줄 전부 제거'는 문단 구분까지 포함해 모든 빈 줄을 없애 한 덩어리로 붙입니다. 목록을 촘촘히 만들 때 후자를, 문서를 정리할 때 전자를 씁니다.
- 탭과 스페이스, 어느 쪽으로 바꿔야 하나요?
- 정답은 없고 팀 규칙을 따르는 게 맞습니다. 다만 붙여넣을 곳이 정해져 있으면 기준이 섭니다. 파이썬은 들여쓰기가 문법이라 섞이면 오류가 나므로 한쪽으로 통일해야 하고, 웹 폼이나 마크다운 표에 넣을 코드 조각은 스페이스가 안전합니다. 이 도구의 '스페이스→탭'은 줄 앞 들여쓰기에만 적용해 본문 사이 공백은 건드리지 않습니다.
- 각 줄 앞뒤 공백을 지우면 들여쓰기도 사라지지 않나요?
- 네, '각 줄 앞뒤 공백 제거'는 들여쓰기까지 포함해 줄 앞의 공백을 없앱니다. 들여쓰기를 유지해야 하는 코드라면 이 옵션을 끄고, 대신 '연속 공백 축소'나 탭 변환만 쓰세요. 문단 텍스트를 평평하게 정리할 때는 켜는 것이 편합니다.
- 이모지가 깨지지 않나요?
- 깨지지 않습니다. zero-width 문자 중에서도 ZWJ(U+200D)는 삭제하지 않습니다. 가족 이모지(👨👩👧👦)처럼 여러 이모지를 하나로 잇는 '접착제' 역할을 하는 문자라, 지우면 이모지가 낱개로 흩어집니다. 삭제 대상은 실제로 군더더기인 zero-width space와 BOM뿐입니다.
- 정리하는 글이 서버로 전송되나요?
- 아닙니다. 모든 처리는 브라우저 안에서 끝나고, 입력한 글은 어디로도 전송되거나 저장되지 않습니다.