UltKit

Base64 인코딩·디코딩

텍스트나 파일을 Base64로 바꾸거나, Base64를 다시 읽을 수 있는 텍스트로 디코딩합니다. 유니코드를 올바르게 처리하고, URL 안전 문자 방식도 클릭 한 번으로 전환되며, 디코딩은 패딩이 있든 없든 두 문자 방식을 모두 받아들입니다.

모드

0자 · 0단어 · 0줄

0자 · 0단어 · 0줄

이 브라우저 탭 안에서만 처리됩니다. 입력한 텍스트는 업로드되거나 저장되지 않습니다.

Base64 문자표

RFC 4648의 인덱스 → 문자 대응표입니다. 강조된 마지막 두 문자는 URL 안전 방식에서 달라집니다. 62번은 + 또는 -, 63번은 / 또는 _입니다.

  1. 0A
  2. 1B
  3. 2C
  4. 3D
  5. 4E
  6. 5F
  7. 6G
  8. 7H
  9. 8I
  10. 9J
  11. 10K
  12. 11L
  13. 12M
  14. 13N
  15. 14O
  16. 15P
  17. 16Q
  18. 17R
  19. 18S
  20. 19T
  21. 20U
  22. 21V
  23. 22W
  24. 23X
  25. 24Y
  26. 25Z
  27. 26a
  28. 27b
  29. 28c
  30. 29d
  31. 30e
  32. 31f
  33. 32g
  34. 33h
  35. 34i
  36. 35j
  37. 36k
  38. 37l
  39. 38m
  40. 39n
  41. 40o
  42. 41p
  43. 42q
  44. 43r
  45. 44s
  46. 45t
  47. 46u
  48. 47v
  49. 48w
  50. 49x
  51. 50y
  52. 51z
  53. 520
  54. 531
  55. 542
  56. 553
  57. 564
  58. 575
  59. 586
  60. 597
  61. 608
  62. 619
  63. 62+ -
  64. 63/ _

출력 길이

입력 3바이트마다 4문자가 됩니다. 마지막에 1바이트나 2바이트가 남으면 표준 Base64에서는 =로 채우고, URL 안전 방식에서는 채우지 않습니다.

입력바이트표준URL 안전길이
U1VQ==VQ4
Ul2VWw=VWw4
Ult3VWx0VWx04
UltK4VWx0Sw==VWx0Sw8
UltKi5VWx0S2k=VWx0S2k8
UltKit6VWx0S2l0VWx0S2l08

Base64가 하는 일

RFC 4648에 정의된 Base64는 임의의 바이트를 인쇄 가능한 ASCII 문자 64개(A–Z, a–z, 0–9, +, /)로 표현합니다. 3바이트(24비트)씩 묶어 6비트 숫자 네 개로 나누고, 각 숫자가 문자표에서 문자 하나를 고릅니다. 입력 길이가 3의 배수가 아니면 마지막 묶음 뒤에 = 기호를 한두 개 붙여 채웁니다. 결과는 항상 입력보다 약 33% 커집니다. 3바이트마다 4문자가 되기 때문입니다.

Base64가 존재하는 이유는 많은 전송 경로가 텍스트용으로 만들어졌기 때문입니다. 이메일(MIME), HTML과 CSS의 data: URL, 이미지나 인증서를 담는 JSON 필드, HTTP Basic 인증 헤더가 모두 Base64로 바이너리 데이터를 안전하게 옮깁니다. 암호화가 아니므로 아무것도 숨기지 못하며, 디코딩에는 키가 필요 없습니다.

유니코드와 URL 안전 방식

Base64는 글자가 아니라 바이트를 인코딩하므로, 텍스트를 먼저 바이트로 바꿔야 합니다. 이 도구는 웹의 표준 인코딩인 UTF-8을 항상 사용합니다. é는 2바이트, 이모지는 4바이트, 한글 한 글자는 3바이트가 됩니다. 브라우저에 내장된 btoa 함수만 쓰면 U+00FF보다 큰 문자에서 오류가 나기 때문에 단순한 인코더는 악센트 문자, 한글, 이모지에서 실패합니다. 여기서는 텍스트를 먼저 TextEncoder로 처리하고, 디코딩할 때는 TextDecoder로 되돌립니다. 디코딩한 바이트가 올바른 UTF-8이 아니면(이미지, zip 파일 등) 깨진 글자 대신 16진수로 보여 줍니다.

표준 Base64에 쓰이는 +와 /는 URL과 파일 이름에서 특별한 의미가 있습니다. RFC 4648 5절의 URL 안전 문자표는 이를 -와 _로 바꾸고, 보통 패딩을 생략합니다. JSON Web Token이 바로 이 형식을 씁니다. 디코더는 두 문자표와 패딩 누락을 모두 받아들이므로 어느 쪽이든 붙여 넣으면 됩니다.

파일과 이미지 인코딩

파일을 고르면 도구가 FileReader로 로컬에서 읽어 Base64를 돌려주거나, 파일의 MIME 유형이 포함된 완전한 data: URL을 만들어 img 태그나 CSS 배경에 바로 붙여 넣을 수 있게 합니다. 인라인 이미지는 HTTP 요청을 하나 줄여 주지만 크기가 3분의 1만큼 커지고 따로 캐시할 수 없으므로, 사진보다는 작은 아이콘에 적합합니다. 미리 보기와 바로 쓸 수 있는 HTML·CSS 코드가 필요하면 이미지 Base64 변환을 이용하세요.

자주 묻는 질문

Base64 결과가 입력보다 긴 이유는 무엇인가요?
3바이트가 4문자가 되므로 결과는 입력의 약 4/3 크기이며, 여기에 패딩 문자가 최대 두 개 붙습니다. ASCII가 아닌 텍스트는 UTF-8에서 한 글자에 2~4바이트를 쓰기 때문에 더 길어집니다.
끝에 붙는 = 기호는 무엇인가요?
패딩입니다. 입력 길이가 3의 배수가 아닐 때 출력 길이를 4의 배수로 맞춥니다. =가 하나면 마지막 묶음이 2바이트, 두 개면 1바이트였다는 뜻입니다.
디코딩할 때 잘못된 문자 오류가 나는 이유는 무엇인가요?
단어 사이의 공백, 따옴표, URL 인코딩의 % 같은 Base64 문자표 밖의 문자가 들어 있기 때문입니다. 줄바꿈과 패딩 누락은 허용되지만 다른 문자는 허용되지 않습니다.
비밀번호를 Base64로 인코딩하면 안전한가요?
Base64는 아무런 보호도 제공하지 않습니다. HTTP Basic 인증은 user:password를 Base64로 보내기 때문에 반드시 HTTPS에서만 써야 합니다. 비밀 정보를 보호하려면 진짜 암호화나 해시를 사용하세요.
Base64와 Base64url은 무엇이 다른가요?
문자 두 개와 패딩만 다릅니다. Base64url은 +와 / 대신 -와 _를 쓰고 보통 =를 생략하므로, 결과를 이스케이프 없이 URL과 파일 이름에 넣을 수 있습니다.