텍스트 공백 제거기
1. 눈에 보이지 않는 공백이 문제를 만듭니다
웹에서 텍스트를 복사해 에디터에 붙여넣었을 때, 겉보기에는 멀쩡한데 글자 수가 예상보다 많게 나오는 경험을 해보셨을 겁니다. 원인은 대부분 눈에 보이지 않는 연속 공백, 탭 문자, 불필요한 줄바꿈입니다. 자기소개서 500자 제한에서 "분명 다 줄였는데 502자"가 뜨는 상황, 엑셀에서 VLOOKUP이 분명 같은 값인데 매칭이 안 되는 상황 — 이 모든 것의 범인이 바로 보이지 않는 공백 문자입니다.
개발 실무에서도 마찬가지입니다. 외부 시스템에서 가져온 CSV 데이터에 셀 앞뒤로 공백이 붙어 있으면 문자열 비교가 실패하고, 사용자가 입력폼에 실수로 넣은 연속 공백은 DB에 그대로 저장됩니다. 매번 정규식을 작성하거나 trim 함수를 조합하는 대신, 붙여넣기 한 번으로 공백을 즉시 정리해주는 도구가 필요했습니다.
a. 이런 상황에서 활용할 수 있습니다
- 자소서·이력서 글자 수 맞추기: 불필요한 공백만 제거하여 내용 손실 없이 글자 수 절감
- 엑셀·CSV 데이터 정제: 셀에 숨어 있는 탭·연속 공백 제거로 VLOOKUP·매칭 오류 해결
- SNS 해시태그 생성: 단어 사이 공백을 모두 제거하여
#연속된해시태그포맷 생성 - 코드 내 문자열 정리: 로그 파싱 결과나 크롤링 데이터에서 불규칙한 공백 정규화
- 복사·붙여넣기 정제: 웹페이지, PDF에서 복사 시 딸려오는 불필요한 공백·줄바꿈 제거
2. 도구 사용법 가이드
단 한 번의 클릭으로 텍스트의 모든 띄어쓰기와 빈 여백을 지우거나 깔끔하게 정리할 수 있습니다.

a. 공백 제거 모드 선택하기
- 상단 탭에서
연속 공백 제거,모든 공백 제거를 선택합니다.- 연속 공백 제거: 두 칸 이상 이어진 공백을 한 칸으로 합칩니다. 줄바꿈과 단어 사이의 한 칸 띄어쓰기는 그대로 유지됩니다.
- 입력: "안녕하세요 반갑습니다. 오늘은 금요일입니다."
- 출력: "안녕하세요 반갑습니다. 오늘은 금요일입니다."
- 모든 공백 제거: 스페이스(
), 탭(\t), 줄바꿈(\n)으로 입력된 모든 공백을 완전히 제거하여 하나의 문자열로 이어 붙입니다.-
입력:
"안녕하세요 반갑습니다.(\n)
(\t)오늘은 금요일입니다." -
출력: "안녕하세요반갑습니다.오늘은금요일입니다."
-
- 연속 공백 제거: 두 칸 이상 이어진 공백을 한 칸으로 합칩니다. 줄바꿈과 단어 사이의 한 칸 띄어쓰기는 그대로 유지됩니다.

b. 텍스트 입력하기
- 좌측 에디터에 텍스트를 입력하면 별다른 버튼 없이 바로 우측에 결과가 나타납니다.
모든 공백 제거인 경우에는 엔터 포함/미포함 옵션을 통해 엔터 제거를 제어할 수 있습니다.

c. 결과 확인 및 텍스트 복사
- 변환이 완료된 깨끗한 텍스트가 화면 우측 결과창에 즉시 나타납니다. 원본 대비 총 몇 자의 공백 문자가 지워졌는지 글자 수를 확인한 후, 복사 버튼을 눌러 원하는 문서 파일이나 프로그램에 바로 붙여넣기 하여 사용합니다.
3. 공백 문자의 종류: 보이지 않는 적들
"공백"이라고 하면 스페이스바 한 칸을 떠올리지만, 컴퓨터가 인식하는 공백 문자는 생각보다 다양합니다. 이 도구가 처리하는 공백 문자의 종류를 정리합니다.
a. 주요 공백 문자 유형
| 문자 | 표기 | 유니코드 | 발생 원인 |
|---|---|---|---|
| 스페이스 | | U+0020 | 스페이스바 입력 |
| 탭 | \t | U+0009 | Tab 키, 코드 들여쓰기 |
| 줄바꿈 (LF) | \n | U+000A | Enter 키 (Unix/Mac) |
| 캐리지 리턴 (CR) | \r | U+000D | Enter 키 (구형 Mac) |
| CR+LF | \r\n | — | Enter 키 (Windows) |
| 논브레이킹 스페이스 | | U+00A0 | HTML, 웹 복사 시 |
| 전각 공백 | | U+3000 | 한중일 입력기, PDF 복사 |
| 제로폭 스페이스 | — | U+200B | 복사·붙여넣기, 일부 에디터 |
b. 두 가지 모드의 동작 원리
이 도구의 두 모드는 정규식으로 표현하면 다음과 같이 동작합니다.
// 연속 공백 제거 — 2개 이상 연속된 공백을 1개로 축소
const result = text.replace(/ {2,}/g, ' ');
// "안녕하세요 반갑습니다" → "안녕하세요 반갑습니다"
// 줄바꿈(\n)은 유지됨
// 모든 공백 제거 — 모든 공백 문자를 완전히 제거
const result = text.replace(/\s/g, '');
// "안녕하세요 반갑습니다\n오늘은" → "안녕하세요반갑습니다오늘은"
// 모든 공백 제거 (엔터 미포함) — 줄바꿈은 유지
const result = text.replace(/[^\S\n]/g, '');
// "안녕하세요 반갑습니다\n오늘은" → "안녕하세요반갑습니다\n오늘은"
Note
\s 정규식은 스페이스, 탭, 줄바꿈, 캐리지 리턴, 폼 피드, 수직 탭 등 모든 유니코드 공백 문자를 매칭합니다. 단순 스페이스( )만 제거하는 것과는 범위가 다릅니다.
c. 연속 공백이 생기는 대표적인 원인
| 상황 | 원인 | 결과 |
|---|---|---|
| 웹페이지 복사 | HTML 태그 제거 후 잔여 공백 | 단어 사이 3~5칸 공백 |
| PDF 텍스트 추출 | 레이아웃 기반 렌더링 | 불규칙한 공백·줄바꿈 |
| 엑셀 셀 복사 | 셀 정렬용 패딩 공백 | 앞뒤 공백 포함 |
| 코드 복사 | 들여쓰기 탭/스페이스 | 문장 앞에 대량 공백 |
| OCR 결과물 | 인식 오류 | 무작위 위치에 공백 삽입 |
4. 실무에서 공백 제거가 필요한 구체적 상황들
a. 자기소개서 글자 수 최적화
취업 자소서의 "500자 이내" 제한에서 23자가 초과할 때, 내용을 줄이기 전에 먼저 불필요한 연속 공백을 확인하세요. 웹에서 복사·편집을 반복하다 보면 문장 사이에 2칸 이상의 공백이 남아 있는 경우가 많습니다. 연속 공백 제거만으로 510자를 절약할 수 있습니다.
b. 엑셀 VLOOKUP·INDEX MATCH 매칭 실패 해결
VLOOKUP으로 두 시트를 매칭했는데 "분명 같은 값인데 #N/A"가 뜬다면, 셀 앞뒤에 보이지 않는 공백이 붙어 있을 가능성이 높습니다. 해당 열의 데이터를 이 도구에 붙여넣어 정제한 뒤 다시 매칭하면 해결됩니다.
// 엑셀에서 흔히 발생하는 숨겨진 공백 문제
" 서울시 강남구" !== "서울시 강남구" // 앞에 공백 2칸
"서울시 강남구 " !== "서울시 강남구" // 뒤에 공백 1칸
"서울시 강남구" !== "서울시 강남구" // 전각 공백 (U+3000)
// → 모두 VLOOKUP 매칭 실패의 원인
c. SNS 해시태그 일괄 생성
인스타그램이나 틱톡에서 해시태그를 작성할 때, 단어 목록의 공백을 모두 제거하면 #오늘의코디#데일리룩#패션 형태의 연속 해시태그를 즉시 만들 수 있습니다. 단어를 줄바꿈으로 구분하고 "모든 공백 제거(엔터 포함)"를 적용하면 됩니다.
d. 크롤링·로그 데이터 전처리
웹 크롤링 결과나 서버 로그에서 추출한 텍스트에는 HTML 렌더링 잔여물(연속 공백, , 탭 문자)이 뒤섞여 있습니다. DB에 적재하기 전 이 도구로 정규화하면 후속 분석의 정확도를 높일 수 있습니다.
e. 코드 내 하드코딩 문자열 정리
JSON이나 SQL 쿼리를 여러 줄로 작성한 뒤 한 줄 문자열로 합쳐야 할 때, 모든 줄바꿈과 들여쓰기를 제거하면 됩니다.
// ❌ 여러 줄 SQL을 수동으로 합치기
const query = "SELECT user_id, user_name " +
"FROM users " +
"WHERE status = 'active'";
// ✅ 모든 공백 제거 후 필요한 공백만 유지 (연속 공백 제거 모드 활용)
const query = "SELECT user_id, user_name FROM users WHERE status = 'active'";
5. 공백 제거에서 실수하기 쉬운 부분들
"공백을 지웠더니 오히려 문제가 생겼다"는 상황이 의외로 자주 발생합니다.
a. 모든 공백 제거 후 문장이 붙어버리는 문제
원인: "모든 공백 제거" 모드는 단어 사이의 필수 띄어쓰기까지 제거합니다. 결과적으로 "안녕하세요반갑습니다" 같은 읽을 수 없는 문자열이 됩니다.
// ❌ 문장 텍스트에 "모든 공백 제거" 적용
"안녕하세요 반갑습니다 오늘 날씨가 좋습니다"
→ "안녕하세요반갑습니다오늘날씨가좋습니다" // 읽기 불가
// ✅ 문장 텍스트에는 "연속 공백 제거" 적용
"안녕하세요 반갑습니다 오늘 날씨가 좋습니다"
→ "안녕하세요 반갑습니다 오늘 날씨가 좋습니다" // 의미 유지
b. 프로그래밍 코드에 공백 제거를 적용하는 실수
원인: Python처럼 들여쓰기가 문법인 언어에서 공백을 제거하면 코드가 완전히 깨집니다. JavaScript도 키워드 사이 공백(function name)이 제거되면 파싱 에러가 발생합니다.
# ❌ Python 코드에 모든 공백 제거 적용
defget_user(user_id):ifuser_id:returnuser_id # SyntaxError
# ✅ Python 코드의 원래 형태
def get_user(user_id):
if user_id:
return user_id
c. 논브레이킹 스페이스( )가 제거되지 않는 경우
원인: 일반 스페이스(U+0020)와 논브레이킹 스페이스(U+00A0)는 서로 다른 문자입니다. 일부 도구는 를 일반 공백으로 인식하지 못해 제거하지 않습니다.
// ❌ 일반 공백만 제거하는 경우
"Hello\u00A0World".replace(/ /g, '');
// → "Hello\u00A0World" (논브레이킹 스페이스 잔존)
// ✅ 모든 유니코드 공백을 제거하는 경우
"Hello\u00A0World".replace(/\s/g, '');
// → "HelloWorld" (\s는 포함)
Note
이 도구는 \s 정규식을 기반으로 동작하므로 논브레이킹 스페이스, 전각 공백 등 유니코드 공백 문자를 모두 처리합니다.
d. 공통 패턴: 공백 제거 실수의 핵심
- 모드를 목적에 맞게 선택 — 문장 정리는 "연속 공백 제거", 공백 완전 제거가 필요할 때만 "모든 공백 제거"
- 코드에는 사용하지 않기 — 들여쓰기와 키워드 간 공백은 문법의 일부
- 원본 보관 습관 — 공백 제거 전 원본 텍스트를 별도로 저장해두면 실수 시 복구 가능
6. 생각해볼 거리
HTML에서 연속 공백이 무시되는 이유는 무엇일까요?
HTML 명세에서 연속된 공백 문자(스페이스, 탭, 줄바꿈)는 기본적으로 하나의 공백으로 축소(white-space collapsing)됩니다. 이는 HTML이 "문서의 구조"를 기술하는 언어이지, "시각적 레이아웃"을 기술하는 언어가 아니기 때문입니다. 소스 코드의 들여쓰기나 줄바꿈이 렌더링에 영향을 주지 않도록 설계된 것입니다. 연속 공백을 유지하려면 엔터티나 CSS의 white-space: pre 속성을 사용해야 합니다.
왜 Windows와 Unix는 줄바꿈 문자가 다를까요?
이 차이는 타자기 시대까지 거슬러 올라갑니다. 기계식 타자기에서 줄을 바꾸려면 두 동작이 필요했습니다: 캐리지를 왼쪽 끝으로 되돌리는 것(Carriage Return, CR)과 종이를 한 줄 올리는 것(Line Feed, LF). Windows는 이 전통을 그대로 따라 \r\n(CR+LF) 두 문자를 사용하고, Unix/Linux는 효율성을 위해 \n(LF) 하나만 사용하기로 결정했습니다. 이 차이 때문에 Windows에서 작성한 텍스트를 Mac에서 열면 줄바꿈이 이상하게 보이거나, 글자 수가 달라지는 문제가 발생합니다.
공백 문자를 이용한 보안 공격이 존재할까요?
실제로 존재합니다. 제로폭 공백(Zero-Width Space, U+200B)이나 제로폭 비결합자(U+200C) 같은 보이지 않는 유니코드 문자를 이용한 공격 기법이 있습니다. 예를 들어, 피싱 메일에서 도메인명 사이에 제로폭 문자를 삽입하면 사람 눈에는 정상 URL로 보이지만 실제로는 다른 주소로 연결됩니다. 또한 워터마킹 기법에서는 문서의 공백 위치에 보이지 않는 유니코드 문자를 삽입하여 유출자를 추적하기도 합니다. 공백 정규화는 보안 관점에서도 중요한 전처리 단계입니다.
브라우저 탭 하나로 텍스트에 숨어 있는 불필요한 공백을 즉시 정리할 수 있습니다 — 정규식을 작성하거나 에디터의 치환 기능을 반복하는 번거로움이 사라집니다. 그것만으로도 이 도구의 역할은 충분하다고 생각합니다.