빈 줄과 들여쓰기가 남는 SNS 글 만들기
SNS 공백 생성기는 글 속의 빈 줄, 줄 앞 들여쓰기, 줄 가운데 여러 칸 띄우기를 공백 정리에 지워지지 않는 문자로 바꿔 줍니다. 기본 설정에서는 빈 줄마다 점자 빈칸(U+2800)을 1개 넣고, 들여쓰기와 여러 칸 띄우기는 공백 2칸을 점자 빈칸 1개로 바꿉니다. 점자 빈칸은 화면에 빈칸으로 보이지만 유니코드에서 공백 문자로 분류되지 않기 때문에, 공백을 지우는 정리를 거쳐도 남을 가능성이 높습니다.
위 작업면에서 원문 칸에 글을 넣으면 오른쪽 게시물 미리보기가 바로 바뀝니다. 미리보기 위의 그냥 붙이면을 누르면 공백을 정리하는 앱에 원문을 그대로 붙였을 때 사라지는 줄이 접히고, 변환해서 붙이면을 누르면 그 줄이 다시 펼쳐집니다. 넣은 숨은 문자는 빗금으로 표시되고, 아래 막대는 인스타그램·스레드·X·틱톡 글자 수 한도에서 숨은 문자가 차지하는 몫을 보여 줍니다. 공백 문자 한 글자만 필요하면 맨 아래 공백 문자 상자에서 눌러 복사하면 됩니다.
빈 줄이 사라지는 이유와 이 도구가 필요한 상황
글을 받는 프로그램은 저장하거나 보여 주기 전에 공백을 정리하는 경우가 많습니다. 웹 화면의 기본 규칙(CSS)은 일반 공백(U+0020)과 탭, 줄바꿈만 하나로 접고, 줄바꿈 없는 공백이나 전각 공백 같은 다른 공백은 접지 않습니다. 반면 JavaScript의 trim처럼 줄 앞뒤 공백을 지우는 함수는 줄바꿈 없는 공백·전각 공백 같은 유니코드 공백(Zs)까지 지웁니다. 줄 앞뒤 공백을 지우면 들여쓰기가 사라지고, 빈 줄까지 지우는 앱에서는 아무것도 없는 줄과 공백만 있는 줄이 함께 사라집니다.
그래서 빈 줄에는 공백이 아닌 문자를 하나 넣어야 줄이 남습니다. 이 도구가 필요한 상황은 대체로 다음과 같습니다.
- 캡션 문단 나누기: 사진 설명, 후기, 공지처럼 긴 글에서 문단 사이에 빈 줄을 두어 읽기 쉽게 만들 때 씁니다.
- 프로필 소개 줄 맞추기: 소개 문구를 줄 앞 여백으로 들여 쓰거나 가운데쯤 놓고 싶을 때 들여쓰기를 지킵니다.
- 들여 쓴 목록: 준비물, 순서, 메뉴처럼 하위 항목을 몇 칸 들여 쓴 목록이 한 줄로 무너지지 않게 합니다.
- 해시태그 떼어 놓기: 본문과 해시태그 묶음 사이에 빈 줄을 여러 개 두어 본문만 먼저 읽히게 할 때 씁니다.
- 빈칸 한 글자: 이름 칸, 글 머리, 표시 이름처럼 보이지 않는 글자 하나가 필요할 때 공백 문자 상자에서 복사합니다.
쓰는 법
- 원문 칸에 SNS에 올릴 글을 붙여 넣습니다. 빈 줄, 들여쓰기, 여러 칸 띄우기는 평소처럼 그대로 두면 됩니다.
- 설정표에서 바꿀 대상을 고릅니다. 빈 줄 줄에서는 빈 줄을 지킬지와 넣을 문자를, 칸 줄에서는 들여쓰기·여러 칸을 지킬지와 칸 문자를 고릅니다. 처음에는 모두 켜져 있고 문자는 점자 빈칸입니다.
- 미리보기에서 그냥 붙이면과 변환해서 붙이면을 번갈아 눌러 사라지던 줄이 남는지 확인합니다. 칸 문자로 공백 문자를 고르면 정리될 수 있는 줄 수가 경고로 나옵니다.
- 글자 수 막대에서 올릴 곳의 한도를 넘지 않는지 봅니다. 넘으면 막대와 숫자가 강조색으로 바뀝니다.
- 결과 복사를 눌러 SNS 입력칸에 붙여 넣고, 게시 전에 그 앱의 미리보기로 한 번 더 확인합니다.
바꾸는 규칙
변환은 줄 단위로 합니다. 공백 칸은 일반 공백과 줄바꿈 없는 공백 같은 공백 문자 1개를 1칸, 전각 공백 1개를 2칸, 탭 1개를 4칸으로 셉니다. 이 도구는 점자 빈칸과 전각 공백 1개를 2칸으로, 줄바꿈 없는 공백 1개를 1칸으로 계산합니다. 실제 폭은 글꼴마다 다르며, 공백 문자 상자에 이 화면에서 잰 폭이 나옵니다.
| 대상 | 판단 기준 | 바꾸는 방식 | 예 |
|---|---|---|---|
| 빈 줄 | 비어 있거나 공백 문자만 있는 줄 | 빈 줄 문자 1개만 있는 줄로 | 빈 줄 → ⠀ |
| 줄 앞 들여쓰기 | 줄 맨 앞의 공백 칸 | 칸 수 ÷ 2(올림)만큼 점자 빈칸 | 공백 4칸 → ⠀⠀ |
| 줄 가운데 여러 칸 | 글자 사이에 공백 2칸 이상 | (칸 수 − 1) ÷ 2(올림)만큼 점자 빈칸 + 일반 공백 1개 | 공백 4칸 → ⠀⠀␣ |
| 줄 끝 공백 | 줄 마지막 글자 뒤의 공백 | 지움 | 보이지 않는 꼬리 정리 |
| 맨 앞·맨 끝 빈 줄 | 글 전체의 처음과 끝 | 뺌 | 복사할 때 딸려 온 줄 정리 |
| 이미 바꾼 칸 | 고른 칸 문자로만 된 칸 | 그대로 둠 | 두 번 변환해도 같은 결과 |
줄 가운데 여러 칸에서 마지막 한 칸을 일반 공백으로 남기는 이유는 해시태그와 멘션 때문입니다. 틱톡 개발 문서는 캡션의 해시태그(#)와 멘션(@)이 공백이나 줄바꿈으로 나뉜다고 적어 두었습니다. '#가을'과 '#산책' 사이 공백을 모두 숨은 문자로 바꾸면 두 태그가 한 덩어리로 읽힐 수 있어, 숨은 문자 뒤에 일반 공백 하나를 남깁니다. 칸 문자로 줄바꿈 없는 공백(U+00A0)을 고르면 줄 앞 공백 n칸은 줄바꿈 없는 공백 n개로, 줄 가운데 n칸은 n − 1개와 일반 공백 1개로 바뀝니다. 전각 공백을 고르면 점자 빈칸처럼 2칸을 1개로 계산합니다.
공백 문자 10가지 비교
아래 표는 공백 문자 상자에 있는 10가지를 유니코드 18.0 문자 데이터로 정리한 것입니다. 공백 문자는 유니코드 White_Space 속성이 있다는 뜻이고, 기본 무시 문자는 Default_Ignorable_Code_Point 속성으로, 지원하지 않는 환경에서는 그리지 않고 넘기도록 정해 둔 문자입니다. 폭은 유니코드 문자 목록의 설명이며, 실제 폭은 글꼴에 따라 다릅니다.
| 문자 | 코드 | 분류 | 공백 문자 | 기본 무시 | X 글자 수 | 폭(문자 목록 설명) |
|---|---|---|---|---|---|---|
| 점자 빈칸 | U+2800 | 기호(So) | 아님 | 아님 | 2 | 많은 글꼴에서 고정 폭 빈칸, 공백처럼 동작하지 않음 |
| 한글 채움 문자 | U+3164 | 글자(Lo) | 아님 | 예 | 2 | 글꼴마다 다름(한글 글꼴에서 대개 넓은 빈칸) |
| 폭 없는 공백 | U+200B | 서식(Cf) | 아님 | 예 | 1 | 폭 없음, 줄바꿈 자리 표시용 |
| 줄바꿈 없는 공백 | U+00A0 | 공백(Zs) | 예 | 아님 | 1 | 일반 공백과 같은 폭 |
| 전각 공백 | U+3000 | 공백(Zs) | 예 | 아님 | 2 | 한중일 글자 한 칸 폭(넓은 공백) |
| em 공백 | U+2003 | 공백(Zs) | 예 | 아님 | 1 | 글자 크기와 같은 폭(1em) |
| en 공백 | U+2002 | 공백(Zs) | 예 | 아님 | 1 | em의 절반 |
| 숫자 폭 공백 | U+2007 | 공백(Zs) | 예 | 아님 | 1 | 숫자 0과 같은 폭 |
| 얇은 공백 | U+2009 | 공백(Zs) | 예 | 아님 | 1 | 1/5~1/6 em |
| 머리카락 공백 | U+200A | 공백(Zs) | 예 | 아님 | 1 | 1/10~1/16 em |
표에서 공백 문자도 아니고 기본 무시 문자도 아닌 것은 점자 빈칸 하나뿐입니다. 이 도구가 빈 줄과 칸의 기본 문자를 점자 빈칸으로 두는 이유입니다. 옛 판처럼 줄바꿈 없는 공백·en 공백·머리카락 공백을 번갈아 넣으면 세 문자의 폭이 서로 달라 칸 폭이 고르지 않고, 셋 다 공백 문자라 줄 앞뒤 정리에 함께 지워집니다.
정리 방식마다 남는 문자
앱이 공백을 어떻게 정리하는지는 대부분 공개되어 있지 않습니다. 다만 정리에 쓰이는 대표적인 규칙은 표준 문서에 정해져 있어, 문자마다 어떤 정리에 남는지는 미리 알 수 있습니다.
| 정리 방식 | 지우거나 접는 것 | 남는 것(상자 10가지 중) |
|---|---|---|
| 화면 공백 접기(CSS) | 일반 공백(U+0020)·탭·줄바꿈만 하나로 접음 | 10가지 모두 |
| 줄 앞뒤 공백 지우기(JavaScript trim) | 유니코드 공백 문자(Zs 전체)와 탭·BOM | 점자 빈칸·한글 채움 문자·폭 없는 공백 |
| 공백 판정(Java isWhitespace) | 공백 문자 가운데 줄바꿈 없는 공백(U+00A0·U+2007·U+202F)은 빼고 판정 | 점자 빈칸·한글 채움·폭 없는 공백·줄바꿈 없는 공백·숫자 폭 공백 |
| 숨은 문자 걸러 내기 | 기본 무시 문자(U+200B·U+3164 등) | 점자 빈칸과 공백 문자들 |
같은 '공백 지우기'라도 프로그램 언어마다 공백의 범위가 다릅니다. JavaScript는 줄바꿈 없는 공백까지 공백으로 보지만, Java의 Character.isWhitespace는 줄바꿈 없는 공백을 공백에서 뺍니다. 그래서 줄바꿈 없는 공백으로 들여 쓴 글은 어떤 앱에서는 남고 어떤 앱에서는 지워집니다. 미리보기의 그냥 붙이면과 변환해서 붙이면은 이 가운데 가장 많이 지우는 경우, 곧 줄 앞뒤 공백 문자를 지우고 이어진 공백을 한 칸으로 줄이며 빈 줄을 지우는 앱을 가정해 그립니다.
글자 수 한도와 숨은 문자
숨은 문자도 글자 수에 들어갑니다. 아래 표는 각 플랫폼의 공개 개발 문서에 적힌 한도와 세는 방식입니다. 인스타그램 문서는 단위를 적지 않아 이 도구는 유니코드 문자(코드 포인트) 수로 셉니다.
| 곳 | 한도 | 세는 방식 | 점자 빈칸 1개 |
|---|---|---|---|
| 인스타그램 캡션 | 2,200 | 최대 2,200자·해시태그 30개·@ 태그 20개(단위 미기재) | 1자 |
| 스레드 글 | 500 | 500자, 이모지는 UTF-8 바이트 수로 셈 | 1자 |
| X 게시물 | 280 | 코드 포인트 0~4351·8192~8205·8208~8223·8242~8247은 1자, 그 밖은 2자, 이모지 2자, 링크 23자 | 2자 |
| 틱톡 캡션 | 2,200 | UTF-16 단위 | 1자 |
X에서 한글이 2자로 세어지는 것과 같은 이유로 점자 빈칸(U+2800 = 10240)도 2자입니다. 폭 없는 공백(U+200B = 8203)은 8192~8205 범위라 1자, 줄바꿈 없는 공백(U+00A0 = 160)도 1자입니다. 기본 예시 '산책 기록'을 변환하면 숨은 문자 8개가 들어가는데, 인스타그램 기준으로는 공백 10칸이 점자 빈칸으로 바뀌며 빠진 몫이 있어 전체 81자 그대로이고, X 기준으로는 118자에서 126자로 늘어납니다.
예시: 산책 기록 글
작업면에 처음 들어 있는 예시를 기본 설정으로 바꾼 결과입니다. 빗금 칸 하나가 점자 빈칸 1개이고, ␣는 일반 공백입니다. '그냥 붙이면' 칸은 줄 앞뒤 공백을 지우고 이어진 공백을 한 칸으로 줄이며 빈 줄을 지우는 앱을 가정한 모습입니다.
| 줄 | 원문 | 변환 결과 | 그냥 붙이면 |
|---|---|---|---|
| 1 | 가을 산책 기록 | 그대로 | 그대로 |
| 2~3 | 빈 줄 2개 | ⠀ 줄 2개 | 사라짐 |
| 4 | 오늘은 조금 멀리 걸었습니다. | 그대로 | 그대로 |
| 5 | ␣␣· 걸음 12,400보 | ⠀· 걸음 12,400보 | 들여쓰기 사라짐 |
| 6 | ␣␣· 시간 1시간 40분 | ⠀· 시간 1시간 40분 | 들여쓰기 사라짐 |
| 7 | 빈 줄 | ⠀ | 사라짐 |
| 8 | 바람이␣␣␣␣좋았던 날. #가을␣␣#산책 | 바람이⠀⠀␣좋았던 날. #가을⠀␣#산책 | 공백이 한 칸씩 |
그냥 붙이면 8줄이 5줄로 줄고 목록의 들여쓰기도 사라지지만, 변환한 글은 8줄과 들여쓰기가 그대로 남습니다. 칸 문자를 줄바꿈 없는 공백으로 바꾸면 5·6번 줄 앞과 8번 줄의 여러 칸이 공백 문자로 채워지므로, 같은 정리를 거치면 다시 사라집니다.
자주 틀리는 경우
- 빈 줄에 일반 공백만 넣기: 스페이스를 몇 번 눌러 둔 줄은 공백만 있는 줄이라 정리에서 빈 줄과 똑같이 사라집니다.
- 줄바꿈 없는 공백으로 들여쓰기: 일반 공백과 폭이 같아 모양은 가장 비슷하지만 공백 문자라 줄 앞 정리에 지워질 수 있습니다. 경고가 나오면 점자 빈칸으로 바꾸세요.
- 해시태그 사이를 모두 숨은 문자로 채우기: 태그를 나누는 공백이 없어져 두 태그가 붙을 수 있습니다. 이 도구는 마지막 한 칸을 일반 공백으로 남깁니다.
- 글 끝에 빈 줄 남기기: 맨 끝 빈 줄에 숨은 문자를 넣으면 보이지 않는 꼬리가 생깁니다. 이 도구는 맨 앞·맨 끝 빈 줄을 뺍니다.
- 변환한 글을 고친 뒤 그대로 올리기: 앱 입력칸에서 빈 줄을 새로 넣으면 그 줄은 다시 일반 빈 줄입니다. 고친 글은 원문 칸에 다시 넣어 변환하세요.
- X 한도를 인스타그램 기준으로 계산하기: X는 한글과 점자 빈칸을 2자로 셉니다. 글자 수 막대에서 X 줄을 따로 확인하세요.
한계
- 앱이 공백을 정리하는 방식은 공개되어 있지 않고 업데이트로 바뀔 수 있습니다. 미리보기는 가장 많이 지우는 경우를 가정한 모형이며 특정 앱의 화면을 그대로 재현하지 않습니다.
- 점자 빈칸과 한글 채움 문자의 폭은 글꼴이 정합니다. 공백 문자 상자의 폭은 지금 보고 있는 화면의 글꼴로 잰 값이라 다른 기기에서는 다를 수 있습니다.
- 점자 빈칸은 유니코드에서 점자 기호입니다. 화면 낭독기가 이 문자를 이름으로 읽거나, 검색에서 글자로 다룰 수 있으니 긴 글 전체에 많이 넣지 않는 편이 좋습니다.
- 보이지 않는 문자로 된 이름이나 글을 막는 서비스가 있습니다. 공백 문자 상자의 문자를 이름 칸에 쓰기 전에 그 서비스의 규칙을 확인하세요.
- 글자 수 한도는 2026년 10월 21일에 확인한 공개 개발 문서 기준입니다. 앱 화면의 한도가 문서와 다를 수 있고, 인스타그램 문서는 세는 단위를 적지 않았습니다.
- 이 도구는 http:// 또는 https://로 시작하는 주소만 링크로 보고 X 기준 23자로 셉니다. X 화면에서는 roberin.com처럼 적은 도메인도 링크로 바뀌어 23자로 세어질 수 있습니다.
출처
기준: 문자 속성은 유니코드 18.0 문자 데이터, 공백 정리 규칙은 ECMAScript·CSS Text 3·Java SE 21 문서, 글자 수 한도는 각 플랫폼 개발 문서로 2026년 10월 21일에 확인했습니다.
- 01Unicode 18.0 — PropList.txtWhite_Space 속성: U+0020·U+00A0·U+2000~200A·U+3000 등, U+200B·U+2800·U+3164는 없음
- 02Unicode 18.0 — DerivedCoreProperties.txtDefault_Ignorable_Code_Point: U+200B·U+3164 포함, U+2800 없음
- 03Unicode 18.0 — NamesList.txtU+2800 '많은 글꼴에서 고정 폭 빈칸으로 그리지만 공백처럼 동작하지 않음', U+00A0·U+2002·U+2009·U+200A 폭 설명
- 04Unicode Standard Annex #44 — Unicode Character Database기본 무시 문자: 지원하지 않으면 그리지 않고 넘기도록 정한 범위
- 05ECMAScript Language Specification — White SpaceWhiteSpace = TAB·VT·FF·ZWNBSP·Zs 전체, String.prototype.trim이 지우는 범위
- 06CSS Text Module Level 3 — 4.1 White Space Processing Rules공백 처리는 U+0020·U+0009·줄바꿈에만 적용
- 07Java SE 21 — Character.isWhitespace공백 문자 가운데 U+00A0·U+2007·U+202F는 공백으로 보지 않음
- 08Meta — Instagram Graph API, IG User Mediacaption: 최대 2,200자, 해시태그 30개, @ 태그 20개
- 09Meta — Threads API, Posts텍스트 게시물 500자, 이모지는 UTF-8 바이트 수로 계산
- 10X — Counting characters280자, 이모지 2자, 링크 23자, 한중일 글자 2자
- 11twitter-text — config/v3.json가중치 1인 범위 0~4351·8192~8205·8208~8223·8242~8247, 그 밖 2
- 12TikTok — Content Posting API, Direct Posttitle(캡션) 최대 2,200 UTF-16 단위, 해시태그·멘션은 공백·줄바꿈으로 나뉨
자주 묻는 질문
인스타그램에 글을 올리면 빈 줄이 왜 사라지나요?
많은 앱은 글을 저장하거나 보여 줄 때 줄 앞뒤 공백을 지우고 이어진 공백을 한 칸으로 줄입니다. 아무것도 없거나 공백만 있는 줄은 이 정리에 빈 줄로 처리되어 사라질 수 있습니다. 빈 줄에 공백 문자가 아닌 점자 빈칸(U+2800)을 하나 넣으면 그 줄은 글자가 있는 줄이 되어 남을 가능성이 높아집니다. 앱의 실제 처리 방식은 공개되어 있지 않으니 게시 전에 미리보기로 확인하세요.
점자 빈칸(U+2800)과 한글 채움 문자(U+3164)는 무엇이 다른가요?
점자 빈칸은 유니코드에서 기호(So)로 분류되고 공백 문자도, 기본 무시 문자도 아닙니다. 유니코드 문자 목록은 이 문자를 많은 글꼴에서 폭 있는 빈칸으로 그리지만 공백처럼 동작하지는 않는다고 적어 둡니다. 한글 채움 문자는 글자(Lo)로 분류되지만 기본 무시 문자라서, 보이지 않는 문자를 걸러 내는 서비스에서는 지워지거나 막힐 수 있습니다.
줄바꿈 없는 공백(U+00A0)을 고르면 왜 경고가 나오나요?
줄바꿈 없는 공백(U+00A0)은 일반 공백과 폭이 같아 모양은 가장 비슷하지만 유니코드 공백 문자(White_Space)에 속합니다. 그래서 줄 앞뒤 공백을 지우는 정리(JavaScript의 trim 등)를 거치면 들여쓰기가 지워지고, 이어진 공백을 한 칸으로 줄이는 정리에서는 여러 칸이 한 칸이 됩니다. 이 위험을 알리려고 경고를 띄우고, 누르면 점자 빈칸으로 바꿔 줍니다.
숨은 문자를 넣으면 글자 수가 늘어나나요?
늘어날 수 있습니다. 빈 줄마다 1자가 더해지고, 들여쓰기는 공백 2칸이 점자 빈칸 1개로 바뀌어 오히려 줄기도 합니다. X는 글자마다 가중치를 두어 U+2800·U+3164·U+3000을 2자로, U+200B·U+00A0을 1자로 셉니다. 아래 글자 수 막대의 빗금이 넣은 숨은 문자의 몫입니다.
해시태그 사이에 띄운 공백은 어떻게 되나요?
줄 가운데 여러 칸을 바꿀 때 마지막 한 칸은 일반 공백으로 남깁니다. 예를 들어 '#가을'과 '#산책' 사이의 공백 2칸은 점자 빈칸 1개와 일반 공백 1개가 됩니다. 해시태그와 멘션은 공백이나 줄바꿈으로 나뉘므로, 공백을 모두 숨은 문자로 바꾸면 두 태그가 하나로 붙을 수 있기 때문입니다.
투명 글자 한 개만 복사하려면 어떻게 하나요?
작업면 아래 공백 문자 상자에서 원하는 문자를 누르면 그 문자 1개가 복사됩니다. 각 칸에는 화면 글꼴로 잰 폭, 공백 정리에 남는지, 숨은 문자 정리 대상인지, X에서 몇 자로 세는지가 적혀 있습니다. 닉네임처럼 빈 이름을 막는 서비스도 있으니 그 서비스의 규칙을 먼저 확인하세요.
이미 변환한 글을 다시 넣어도 괜찮나요?
괜찮습니다. 이미 고른 칸 문자로만 된 칸과 점자 빈칸 같은 문자는 다시 바꾸지 않으므로, 같은 설정으로 두 번 변환해도 결과가 같습니다. 변환한 글을 고치다가 빈 줄이나 공백을 새로 넣었다면 그 부분만 다시 바뀝니다.
입력한 글은 어디에 저장되나요?
저장되지 않습니다. 변환과 글자 수 계산은 모두 이 브라우저 안에서 하고, 글을 서버로 보내거나 주소·저장소에 남기지 않습니다. 붙여넣기 단추는 브라우저가 허락할 때만 클립보드를 읽습니다.