본문으로 건너뛰기
Betterbit Tools

Base64 인코딩·디코딩

텍스트와 파일을 Base64로 바꾸고 되돌립니다. URL-safe 지원, 오프라인 동작, 브라우저 밖으로 나가지 않습니다.

  • 브라우저에서 처리 — 파일이 기기 밖으로 나가지 않습니다
  • 다른 곳에선 유료인 기능을 무료로
  • 더 정확한 결과

인코딩할 파일 열기

최대 8MB 파일을 끌어다 놓거나 클릭해서 선택하고, Ctrl/Cmd+V로 붙여넣을 수 있습니다

이 브라우저에만 저장됨
결과
결과가 여기에 표시됩니다.
0 B
입력 크기
0 B
출력 크기
—
크기 변화

사용 방법

  1. 인코딩은 텍스트나 파일을 Base64로, 디코딩은 Base64를 다시 텍스트나 파일로 바꿉니다. 위에서 모드를 고르세요.
  2. 텍스트, 완전한 data: URI 또는 파일을 붙여넣거나 끌어다 놓으세요. 최대 20만 자까지는 이 브라우저에만 저장되어 새로고침해도 남아 있습니다.
  3. 인코딩할 때는 표준(+/) 또는 URL-safe(-_) 출력을 고르고, 패딩(=) 포함 여부를 켜고 끌 수 있습니다.
  4. 디코딩은 표준과 URL-safe Base64를 자동으로 구분해 처리하므로, 줄바꿈이 섞여 있거나 두 방식이 섞여 있어도 그대로 디코딩됩니다.
  5. 결과는 복사하거나 .txt(인코딩) 또는 디코딩된 파일로 저장할 수 있습니다.
  6. 탭이 멈추지 않도록 텍스트·파일 인코딩은 8MB, Base64 디코딩 입력은 12MB까지 사용하세요.

표준 Base64와 URL-safe Base64의 차이

RFC 4648은 두 가지 Base64 알파벳을 정의합니다. 표준 Base64(4장)는 마지막 두 글자로 +와 /를 쓰며 이메일(MIME)과 data: URI에서 흔히 쓰입니다. URL-safe Base64(5장, base64url)는 이 두 글자를 -와 _로 바꿔서 URL 경로, 쿼리 문자열, 파일명, JWT(JSON Web Token)에 퍼센트 인코딩 없이 그대로 넣을 수 있게 합니다.

끝에 붙는 =패딩은 선택 사항이며, URL에서 =가 특별한 의미를 가질 수 있어 JWT 등에서는 보통 생략합니다. 이 도구는 인코딩할 때 두 알파벳 중 하나를 고를 수 있고, 디코딩할 때는 어느 쪽인지 묻지 않고 섞여 있어도 그대로 처리합니다.

왜 디코딩이 조용히 실패하지 않을까

Base64 입력이 잘못되는 경우는 몇 가지로 정해져 있습니다. 64개 알파벳(및 URL-safe의 -, _)에 없는 문자가 섞였거나, '=' 패딩 형식이 맞지 않거나, 한 글자가 남아 6비트로는 1바이트조차 만들 수 없는 길이이거나, 마지막 글자의 사용하지 않는 비트가 0이 아닌 경우입니다. 마지막 규칙은 서로 다른 문자열이 같은 바이트로 조용히 디코딩되는 일을 막습니다.

많은 온라인 디코더는 그냥 '잘못된 입력'이라고만 말하거나, 조용히 깨진 바이트를 돌려줍니다. 이 도구는 각 경우를 구분해 어떤 글자가 몇 번째 위치에서 문제인지 알려주고, 디코딩된 바이트가 UTF-8 텍스트로 읽을 수 없을 때도 명확히 알려줘서 파일로 내려받아야 한다는 걸 바로 알 수 있습니다.

텍스트뿐 아니라 파일도

인코딩 중 파일을 끌어다 놓으면 이미지뿐 아니라 어떤 종류의 파일이든 원본 바이트를 그대로 읽어 Base64로 바꿉니다. data: URI나 이메일 첨부파일이 내부적으로 쓰는 방식과 같습니다. `data:…;base64,…` 형태의 완전한 data: URI를 붙여넣어 헤더를 제외한 Base64 본문만 디코딩할 수도 있습니다.

디코딩은 항상 바이트 그대로의 파일로 내려받을 수 있고, 그 바이트가 UTF-8 텍스트로도 유효하다면 화면에서 바로 읽고 복사할 수도 있습니다. 큰 결과 때문에 탭이 멈추지 않도록 인코딩 원본은 8MB, 디코딩 Base64 입력은 12MB로 제한합니다. 변환은 이 탭의 백그라운드 워커에서 브라우저 File·TextDecoder API로 이루어지며 서버로 전송되지 않습니다.

자주 묻는 질문

Base64와 URL-safe Base64(Base64URL)는 뭐가 다른가요?

표준 Base64는 마지막 두 글자로 +와 /를 쓰는데, 이 둘은 URL 안에서 특별한 의미가 있어 그대로 쓰면 퍼센트 인코딩이 필요합니다. URL-safe Base64(RFC 4648 5장)는 이를 -와 _로 바꿔서 URL, 파일명, JWT에 그대로 써도 안전합니다.

디코딩할 때 표준인지 URL-safe인지 미리 알아야 하나요?

아니요. 이 도구의 디코더는 두 알파벳을 동시에 인식하므로, 섞여 있어도 모드를 고르지 않고 그냥 붙여넣으면 됩니다.

완전한 data: URI도 붙여넣을 수 있나요?

네. `data:text/plain;base64,SGVsbG8=`처럼 data: URI 전체를 붙여넣으면 헤더를 제외하고 Base64 본문을 디코딩합니다. Base64만 붙여넣어도 됩니다.

텍스트가 아니라 파일도 Base64로 인코딩할 수 있나요?

네. 인코딩 패널에 8MB 이하 파일을 끌어다 놓으면 원본 바이트를 읽어 그대로 인코딩합니다. 파일은 브라우저 밖으로 나가지 않습니다.

Base64로 변환하면 왜 용량이 33%쯤 커지나요?

Base64는 입력 3바이트(24비트)를 6비트씩 4개의 문자로 표현하므로, 패딩을 빼더라도 결과가 원본보다 약 4/3, 즉 33% 정도 커집니다.

Base64 끝에 붙는 '=' 기호는 무슨 뜻인가요?

입력 길이가 3바이트의 배수가 아닐 때 마지막 4글자 묶음을 채우는 패딩입니다. '=' 1개는 마지막에 2바이트가 인코딩됐다는 뜻이고, 2개는 1바이트라는 뜻입니다. JWT처럼 URL에 쓰이는 경우에는 보통 생략합니다.

디코딩했는데 '유효한 텍스트가 아니다'라고 나오는 이유는요?

디코딩된 바이트가 UTF-8 텍스트로 유효하지 않다는 뜻으로, 원본이 이미지나 ZIP 같은 바이너리 파일이었을 가능성이 높습니다. 복사 대신 다운로드 버튼으로 파일로 저장하세요.

관련 도구

JSON 포맷터JSON을 정렬·압축하고 트리 뷰로 탐색합니다. 오류가 있으면 정확한 줄·열 번호를 알려줍니다.대소문자 변환제목 표기 규칙과 개발용 표기법을 선택하면 결과가 바로 바뀝니다.텍스트 비교줄·단어·글자 단위로 비교하고, 한글 자모가 분리된 경우에도 정확하게 비교합니다.데이터 용량 변환MB·GB·TB와 MiB·GiB를 바로 변환하고, 1000·1024 기준의 차이를 단위명까지 정확하게 비교합니다.진법 변환기2~36진법 정수를 변환하고 2진수·8진수·10진수·16진수를 한 화면에서 바로 확인하세요.URL 인코더URL 값, 전체 주소, 폼 데이터를 퍼센트 인코딩하고 쿼리 파라미터를 표에서 바로 확인·수정하세요.UUID 생성기보안 난수 기반 UUID v4 또는 시간순 UUID v7을 대량으로 만들고, 필요한 코드 형식으로 바로 복사합니다.해시 생성기텍스트·파일 체크섬을 브라우저에서 바로 만들고, 업로드 없이 비교합니다.JWT 디코더JWT 또는 Bearer 토큰을 붙여 넣어 클레임과 만료 시간을 바로 확인합니다. 토큰을 전송하거나 저장하지 않습니다.정규식 테스트JavaScript 정규표현식의 매치와 캡처 그룹을 바로 확인하고, 입력하던 패턴과 테스트 문장도 이 브라우저에서 이어서 작업합니다.CSV JSON 변환CSV와 JSON을 양방향으로 바로 변환하고, 복사·다운로드 전에 결과 행을 표로 확인합니다.화면 해상도 확인브라우저가 보고한 화면·뷰포트·DPR·배율을 한눈에 확인하고, CSS 픽셀과 모니터의 실제 패널 해상도를 구분합니다.

2026-10-13 업데이트