RFC 4648 · 디코더 & 인코더
Base64 디코딩, 아무것도 업로드하지 않고.
Base64 문자열을 붙여 넣으면 입력과 동시에 읽을 수 있는 텍스트, 이미지 또는 파일로 바뀝니다. 이 Base64 디코딩 도구는 전부 브라우저 안에서 동작하므로 데이터가 업로드되거나 기록되거나 기기 밖으로 나가는 일이 없습니다.
- 입력과 동시에 디코딩
- 20가지 이상의 문자 집합
- 이미지, PDF, JWT 지원
- 광고 없음, 가입 없음
업데이트 · 표준 및 URL-safe Base64(RFC 4648)
Base64 디코딩·인코딩 도구
JSON Web Token
옵션
Ctrl+Enter 디코딩 Ctrl+Shift+C 결과 복사 입력란에 파일을 끌어다 놓으면 불러옵니다
Base64 온라인 디코딩 — 무료, 즉시, 비공개
이 Base64 디코딩 도구는 서버가 아니라 여러분의 브라우저에서 작업합니다. 위 입력란에 붙여 넣으면 버튼도, 새로 고침도, 업로드도 없이 결과가 바로 나타납니다. 텍스트는 읽을 수 있는 형태로 나오고, 이미지는 미리 보기 탭에 표시되며, 바이너리 데이터에는 16진수 덤프와 올바른 확장자로 저장하는 다운로드 버튼이 제공됩니다.
인코딩으로 바꾸면 반대 방향으로 변환할 수 있고, 전용 인코더 freebase64encode.com도 이용할 수 있습니다. 코드에서 Base64를 디코딩하려면 아래 코드 예제에서 Python, JavaScript, Linux, Windows PowerShell, PHP, Java, Go, C#, Ruby를 확인하세요.
특정 형식을 다루고 있나요? Base64를 이미지로 변환, Base64를 PDF로 변환, Base64를 16진수로 변환하는 전용 페이지와 Base64URL·JWT 디코딩 페이지가 있습니다.
Base64를 디코딩하는 3단계
- 01
Base64 문자열 붙여 넣기
Base64 데이터를 입력란에 붙여 넣거나 파일을 끌어다 놓으세요. 공백, 줄바꿈, data: URI 접두사, URL-safe 문자는 자동으로 처리됩니다.
- 02
디코딩 결과 확인
브라우저에서 디코딩된 결과가 입력란 옆 패널에 바로 나타납니다. 글자가 깨져 보이면 문자 집합을 바꿔 보세요.
- 03
복사, 다운로드, 미리 보기
디코딩된 텍스트를 복사하거나, 바이너리 출력을 올바른 확장자의 파일로 다운로드하거나, 16진수 덤프로 살펴보거나, 디코딩된 이미지를 페이지에서 바로 미리 볼 수 있습니다.
다른 디코더
Base64를 특정 형식으로 디코딩하기
주요 기능
무엇을 찾았는지 알려 주는 Base64 디코더.
대부분의 온라인 디코더는 문자 덩어리만 돌려주고 나머지는 짐작하게 합니다. 이 도구는 내용을 식별하고, 흔한 인코딩 실수를 고치고, 실제로 도움이 되는 형태로 결과를 보여 줍니다.
데이터가 기기 밖으로 나가지 않습니다
모든 바이트는 이 페이지의 JavaScript로 디코딩됩니다. 업로드도, 요청도, 기록도 없습니다. 네트워크 탭에서 확인해 보세요.
형식 자동 감지
PNG, JPEG, GIF, WebP, SVG, PDF, ZIP, MP4, JSON, XML, HTML을 시그니처 바이트로 인식해 표시합니다.
Base64 이미지 미리 보기
이미지를 디코딩하면 실제 픽셀 크기와 파일 크기와 함께 바로 보여 주고, 파일로 다운로드할 수 있습니다.
20가지 이상의 문자 집합
UTF-8, UTF-16, Latin-1, Windows-1250/1251/1252, Shift_JIS, GBK, Big5, KOI8-R, EUC-KR 등을 자동 감지와 함께 지원합니다.
16진수 덤프 보기
바이너리 출력은 오프셋 / 16진수 / ASCII 형식의 덤프로 보여 주므로 헤더와 매직 바이트를 바로 확인할 수 있습니다.
JWT 지원
JSON Web Token을 붙여 넣으면 헤더와 페이로드를 표로 풀어 주고, 타임스탬프는 날짜로 바꿔 줍니다.
너그러운 입력 처리
빠진 패딩, URL-safe “-”와 “_”, 불필요한 공백, MIME 줄바꿈, 전체 data: URI를 자동으로 처리합니다.
줄 단위 모드
서로 독립된 여러 Base64 값을 한 번에 디코딩해 줄마다 결과를 하나씩 보여 줍니다. 로그와 내보내기 데이터에 편리합니다.
인코딩도 지원
인코딩으로 바꾸면 텍스트나 어떤 파일이든 MIME 줄바꿈, URL-safe 알파벳, data: URI 형식으로 출력할 수 있습니다.
이 도구를 쓰는 이유
차이는 어디에서 디코딩하느냐에 있습니다.
대부분의 Base64 디코더는 문자열을 서버로 보내 그곳에서 디코딩한 뒤 결과를 돌려줍니다. 즉 토큰이나 키, 파일이 브라우저라면 순식간에 끝날 변환을 위해 여러분의 컴퓨터를 떠나는 셈입니다. 이 도구는 그런 요청을 절대 보내지 않습니다.
| 기능 | freebase64decode.com | 일반적인 온라인 디코더 |
|---|---|---|
| 데이터를 디코딩하는 곳 | 항상 여러분의 브라우저 탭 | 서버로 업로드 |
| 문자 집합 | 20가지 이상, 오프라인 디코딩 | 서버에서만 |
| 파일 크기 제한 | 기기의 메모리뿐 | 대개 100MB로 제한 |
| 디코딩된 이미지 미리 보기 | 내장(크기 표시 포함) | 없음 |
| 바이너리 출력의 16진수 덤프 | 내장 | 없음 |
| JWT 헤더·페이로드 보기 | 자동 | 없음 |
| URL-safe 알파벳과 패딩 복구 | 자동 | 수동 |
| data: URI 감지 | 자동 | 수동 |
| 인터넷 연결 없이 동작 | 페이지를 불러온 뒤에는 가능 | 불가능 |
| 광고와 쿠키 배너 | 없음, 추적 쿠키도 없음 | 대개 있음 |
코드로 처리하기
Python, JavaScript, Linux 등에서 Base64 디코딩.
위 디코더에서 값을 확인했다면 보통은 같은 작업을 코드로도 해야 합니다. 모든 예제는 바로 복사해 쓸 수 있으며, 문자 집합, URL-safe 알파벳, 빠진 패딩처럼 자주 걸리는 부분까지 다룹니다.
Python에서 Base64 디코딩
Python의 base64 모듈은 표준 라이브러리에 들어 있어 따로 설치할 필요가 없습니다. b64decode는 항상 bytes를 반환하므로 str이 필요하면 .decode()를 호출하세요.
import base64
# Base64 string -> text
encoded = "SGVsbG8sIHdvcmxkIQ=="
text = base64.b64decode(encoded).decode("utf-8")
print(text) # Hello, world!
# Reject anything that is not valid Base64 instead of silently skipping it
base64.b64decode(encoded, validate=True)
# URL-safe alphabet (RFC 4648 section 5): "-" and "_" instead of "+" and "/"
base64.urlsafe_b64decode("SGVsbG8_d29ybGQtMQ==")
# Unpadded input (JWTs, URL parameters) raises binascii.Error -- pad it first
def b64decode_any(s: str) -> bytes:
s = s.replace("-", "+").replace("_", "/")
return base64.b64decode(s + "=" * (-len(s) % 4))
# Base64 -> image file on disk
with open("logo.png", "wb") as f:
f.write(base64.b64decode(image_b64))
# Decode every line of a file separately
with open("encoded.txt") as f:
for line in f:
print(base64.b64decode(line.strip()).decode("utf-8")) JavaScript에서 Base64 디코딩
atob()는 텍스트가 아니라 바이너리 문자열을 반환합니다. 그대로 쓰면 ASCII가 아닌 문자가 모두 깨지므로 바이트를 TextDecoder에 통과시키세요. 이 페이지도 그렇게 합니다.
// ── Browser ──────────────────────────────────────────────
// Quick and dirty: correct only for pure ASCII
atob("SGVsbG8sIHdvcmxkIQ=="); // "Hello, world!"
// Correct for any UTF-8 payload
function base64Decode(b64) {
const bin = atob(b64);
const bytes = Uint8Array.from(bin, (ch) => ch.charCodeAt(0));
return new TextDecoder().decode(bytes);
}
base64Decode("SGVsbMO2LCB3w7ZybGQh"); // "Hellö, wörld!"
// Encoding back again
function base64Encode(str) {
const bytes = new TextEncoder().encode(str);
return btoa(String.fromCharCode(...bytes));
}
// URL-safe -> standard before decoding
const std = urlSafe.replace(/-/g, "+").replace(/_/g, "/");
// ── Node.js ──────────────────────────────────────────────
Buffer.from("SGVsbG8sIHdvcmxkIQ==", "base64").toString("utf8");
Buffer.from(token, "base64url").toString("utf8"); // Node 16+
Buffer.from("Hello, world!").toString("base64"); Linux 명령줄에서 Base64 디코딩
GNU coreutils의 base64는 모든 Linux 배포판에 들어 있습니다. 흔한 함정 두 가지를 조심하세요. echo는 끝에 줄바꿈을 붙이고, 오래된 macOS는 짧은 옵션으로 -D만 받습니다. --decode는 어디서나 동작합니다.
# Decode a string
echo "SGVsbG8sIHdvcmxkIQ==" | base64 --decode
# printf avoids the trailing newline echo adds
printf '%s' "SGVsbG8sIHdvcmxkIQ==" | base64 -d
# Decode a file into a binary file
base64 -d encoded.txt > decoded.png
# -i ignores line wrapping and other non-alphabet characters
base64 -di encoded.txt > decoded.bin
# Older macOS releases only know a capital -D (--decode works on all of them)
base64 -D <<< "SGVsbG8sIHdvcmxkIQ=="
# Portable everywhere OpenSSL exists
echo "SGVsbG8sIHdvcmxkIQ==" | openssl base64 -d
# Encode, wrapping at 76 columns like MIME (-w 0 disables wrapping)
base64 -w 0 photo.jpg > photo.b64
# Decode a JWT payload (URL-safe, unpadded) with jq
cut -d. -f2 <<< "$JWT" | tr '_-' '/+' | base64 -d 2>/dev/null | jq . PHP에서 Base64 디코딩
두 번째 인수로 true를 넘기면 base64_decode()가 잘못된 문자를 조용히 버리는 대신 잘못된 입력에 false를 반환합니다.
<?php
$text = base64_decode('SGVsbG8sIHdvcmxkIQ==');
// Strict mode: false on invalid input
$text = base64_decode($encoded, true);
if ($text === false) {
throw new InvalidArgumentException('Not valid Base64');
}
// URL-safe decode with padding repaired
function base64UrlDecode(string $s): string {
$s = strtr($s, '-_', '+/');
return base64_decode($s . str_repeat('=', (4 - strlen($s) % 4) % 4));
}
// Base64 -> image file
file_put_contents('logo.png', base64_decode($imageB64));
// Encode a file as a data: URI for inline CSS or HTML
$uri = 'data:image/png;base64,' . base64_encode(file_get_contents('logo.png')); Java에서 Base64 디코딩
java.util.Base64는 Java 8부터 기본 제공되며 기본, URL-safe, MIME(줄바꿈 허용) 세 가지 디코더를 제공합니다.
import java.nio.charset.StandardCharsets;
import java.util.Base64;
byte[] bytes = Base64.getDecoder().decode("SGVsbG8sIHdvcmxkIQ==");
String text = new String(bytes, StandardCharsets.UTF_8);
// URL-safe alphabet
Base64.getUrlDecoder().decode(token);
// MIME decoder: ignores line breaks and other stray characters
Base64.getMimeDecoder().decode(wrappedInput);
// Encode
String encoded = Base64.getEncoder()
.encodeToString("Hello, world!".getBytes(StandardCharsets.UTF_8));
// Base64 -> file
java.nio.file.Files.write(java.nio.file.Path.of("logo.png"),
Base64.getDecoder().decode(imageB64)); Go에서 Base64 디코딩
Go의 encoding/base64는 패딩 여부를 명시적으로 고르게 합니다. StdEncoding과 URLEncoding은 패딩을 기대하고, Raw 계열은 그렇지 않습니다.
package main
import (
"encoding/base64"
"fmt"
)
func main() {
data, err := base64.StdEncoding.DecodeString("SGVsbG8sIHdvcmxkIQ==")
if err != nil {
panic(err)
}
fmt.Println(string(data)) // Hello, world!
// URL-safe, no padding -- the JWT flavour
base64.RawURLEncoding.DecodeString("SGVsbG8sIHdvcmxkIQ")
// Encode
fmt.Println(base64.StdEncoding.EncodeToString([]byte("Hello, world!")))
} C#에서 Base64 디코딩
사용자 입력을 다룰 때는 TryFromBase64String을 쓰세요. 잘못된 입력에서 Convert.FromBase64String이 던지는 예외를 피할 수 있습니다.
using System;
using System.Text;
byte[] bytes = Convert.FromBase64String("SGVsbG8sIHdvcmxkIQ==");
string text = Encoding.UTF8.GetString(bytes);
// Non-throwing variant
Span<byte> buffer = new byte[input.Length];
if (Convert.TryFromBase64String(input, buffer, out int written))
{
text = Encoding.UTF8.GetString(buffer[..written]);
}
// URL-safe input
string std = input.Replace('-', '+').Replace('_', '/')
.PadRight(input.Length + (4 - input.Length % 4) % 4, '=');
// Encode
Convert.ToBase64String(Encoding.UTF8.GetBytes("Hello, world!")); Windows와 PowerShell에서 Base64 디코딩
Windows에서는 따로 설치할 것이 없습니다. PowerShell은 .NET을 직접 호출하며, FromBase64String은 공백과 줄바꿈을 무시합니다. 명령 프롬프트에서는 certutil로 파일을 디코딩할 수 있습니다.
# ── PowerShell (Windows, macOS, Linux) ──────────────────
$b64 = "SGVsbG8sIHdvcmxkIQ=="
[Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($b64)) # Hello, world!
# Base64 file -> binary file (.NET needs an absolute path)
$bytes = [Convert]::FromBase64String((Get-Content encoded.txt -Raw))
[IO.File]::WriteAllBytes("$PWD\decoded.png", $bytes)
# Encode
[Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("Hello, world!"))
# ── Command Prompt (cmd.exe) ─────────────────────────────
certutil -decode encoded.txt decoded.png
# certutil -encode wraps its output in BEGIN/END CERTIFICATE lines
certutil -encode photo.jpg photo.b64 Ruby와 SQL에서 Base64 디코딩
Ruby와 주요 SQL 방언에서도 바로 디코딩할 수 있습니다. Ruby의 strict_decode64는 공백을 거부하고, decode64는 허용합니다.
# ── Ruby ─────────────────────────────────────────────────
require "base64"
Base64.decode64("SGVsbG8sIHdvcmxkIQ==") # forgiving
Base64.strict_decode64("SGVsbG8sIHdvcmxkIQ==") # raises on stray characters
Base64.urlsafe_decode64(token)
# ── SQL ──────────────────────────────────────────────────
# MySQL 5.6+ SELECT FROM_BASE64('SGVsbG8sIHdvcmxkIQ==');
# PostgreSQL SELECT convert_from(decode('SGVsbG8=', 'base64'), 'UTF8');
# SQL Server SELECT CAST('' AS xml).value('xs:base64Binary("SGVsbG8=")', 'varbinary(max)');
# BigQuery SELECT SAFE_CONVERT_BYTES_TO_STRING(FROM_BASE64('SGVsbG8=')); 작동 원리
Base64란 무엇이고, 디코딩은 어떻게 되돌리는가.
Base64는 임의의 바이트를 출력 가능한 64개 문자(A–Z a–z 0–9 + /)로 다시 써서, 텍스트용으로 만든 시스템에서도 바이너리 데이터가 깨지지 않게 합니다. 디코딩은 그 반대입니다. 각 문자를 6비트 값으로 바꾸고, 네 문자가 만드는 24비트를 다시 세 바이트로 자릅니다. 암호화가 아니라 인코딩이므로 누구나 할 수 있습니다.
계산 예시: TWFu → Man
| Base64 | T · W · F · u |
|---|---|
| 인덱스 | 19 · 22 · 5 · 46 |
| 6비트 묶음 | 010011 010110 000101 101110 |
| 8비트로 다시 자름 | 01001101 01100001 01101110 |
| 바이트 | 77 · 97 · 110 |
| 텍스트 | Man |
끝에 붙은 =는 데이터가 아니라 패딩입니다. ==는 마지막 묶음에 1바이트, =는 2바이트가 있었다는 뜻입니다. Base64 출력은 항상 원래 데이터보다 약 33% 큽니다.
Base64 알파벳(인덱스 표)
Base64의 각 문자는 0부터 63까지의 숫자를 나타냅니다. 디코딩할 때는 이 표(RFC 4648 표 1)에서 각 문자를 찾습니다. URL-safe Base64도 같지만 62는 -, 63은 _이고, =는 값이 아니라 패딩입니다.
| 값 | 문자 | 값 | 문자 | 값 | 문자 | 값 | 문자 |
|---|---|---|---|---|---|---|---|
| 0 | A | 16 | Q | 32 | g | 48 | w |
| 1 | B | 17 | R | 33 | h | 49 | x |
| 2 | C | 18 | S | 34 | i | 50 | y |
| 3 | D | 19 | T | 35 | j | 51 | z |
| 4 | E | 20 | U | 36 | k | 52 | 0 |
| 5 | F | 21 | V | 37 | l | 53 | 1 |
| 6 | G | 22 | W | 38 | m | 54 | 2 |
| 7 | H | 23 | X | 39 | n | 55 | 3 |
| 8 | I | 24 | Y | 40 | o | 56 | 4 |
| 9 | J | 25 | Z | 41 | p | 57 | 5 |
| 10 | K | 26 | a | 42 | q | 58 | 6 |
| 11 | L | 27 | b | 43 | r | 59 | 7 |
| 12 | M | 28 | c | 44 | s | 60 | 8 |
| 13 | N | 29 | d | 45 | t | 61 | 9 |
| 14 | O | 30 | e | 46 | u | 62 | + |
| 15 | P | 31 | f | 47 | v | 63 | / |
Base64를 실제로 만나는 곳
이메일 첨부 파일
MIME(RFC 2045)은 첨부 파일을 Base64로 인코딩하고 76자마다 줄을 바꿉니다. 디코더는 줄바꿈을 건너뛰며, 이 도구는 자동으로 제거합니다.
data: URI
data:image/png;base64,… 형식으로 이미지, 글꼴, SVG를 HTML이나 CSS에 넣습니다. URI 전체를 붙여 넣으면 접두사를 자동으로 감지해 제거합니다.
JSON Web Token
JWT의 세 구간은 각각 패딩을 뺀 base64url입니다. 토큰을 붙여 넣으면 헤더와 페이로드를 읽기 쉬운 표로 풀어 줍니다.
HTTP Basic 인증
Authorization: Basic에는 base64(사용자명:비밀번호)가 들어 있습니다. 붙여 넣기 한 번이면 디코딩되므로 Basic 인증은 HTTPS에서만 써야 합니다.
설정 파일과 비밀 정보
Kubernetes Secret, PEM 인증서, SSH 키는 파일을 텍스트로 유지하려고 바이너리를 Base64로 저장합니다. 안에 무엇이 있는지 확인하려면 디코딩해야 합니다.
API와 데이터베이스
바이너리 데이터는 JSON, XML, 텍스트 열 안에서 Base64로 오갑니다. 16진수 보기에서 실제 바이트를 보면 시그니처로 파일 형식을 알 수 있습니다.
표준 Base64와 URL-safe Base64
RFC 4648은 두 가지 알파벳을 정의합니다. 표준 알파벳은 URL 안에서 의미가 있는 +와 /를 씁니다. URL-safe 변형(§5, 흔히 base64url)은 이를 -와 _로 바꾸고 보통 = 패딩을 생략합니다. 이 디코더는 붙여 넣은 종류를 자동으로 감지하며, -나 _가 들어 있는 문자열은 설정을 직접 강제하지 않는 한 URL-safe로 처리합니다.
Base64 이미지를 디코딩하는 방법
data:image/png;base64, 접두사를 포함한 data: URI 전체나 인코딩된 부분만 붙여 넣으세요. 접두사가 제거되고 시그니처 바이트를 확인한 뒤, 이미지가 실제 크기와 함께 미리 보기 탭에 나타납니다. 다운로드를 누르면 진짜 PNG, JPEG, GIF, WebP, SVG 파일로 저장됩니다. 미리 보기가 비어 있다면 16진수 탭에서 89 50 4e 47(PNG)이나 ff d8 ff(JPEG) 같은 시그니처를 찾아보세요. 없다면 문자열이 잘린 것입니다.
자주 보는 디코딩 오류 6가지와 그 의미
“N번째 위치에 잘못된 문자”
Base64 알파벳 밖의 문자가 들어 있습니다. 대개 따라 들어온 따옴표, 잘린 복사본의 말줄임표, 엄격한 디코딩을 강제했을 때의 URL-safe 문자입니다.
길이가 4의 배수가 아님
패딩이 지워졌습니다. 패딩 복구를 켜세요. 나머지가 정확히 1자라면 문자열이 정말로 잘린 것이어서 복구할 수 없습니다.
글자 깨짐 — é가 é로 보임
잘못된 문자 집합으로 디코딩되었습니다. 먼저 UTF-8을 시도하고, 오래된 Windows 프로그램에서 온 텍스트라면 Windows-1252를, 오래된 한국어 데이터라면 EUC-KR을 시도해 보세요.
온통 읽을 수 없는 기호
내용이 텍스트가 아니라 바이너리입니다. 16진수나 미리 보기 탭으로 바꾸고, 텍스트를 복사하는 대신 파일로 다운로드하세요.
디코딩해도 또 Base64가 나옴
값이 두 번 인코딩되었습니다. “입력으로 보내기”를 눌러 결과를 다시 넣고 한 번 더 디코딩하세요.
Base64는 암호화가 아닙니다
누구나 붙여 넣기 한 번으로 디코딩할 수 있습니다. Base64로만 “보호된” 비밀 정보는 이미 노출된 것으로 보고 교체하세요.
자주 묻는 질문
Base64 디코딩, 궁금한 점에 대한 답.
Base64 디코딩이란 무엇인가요?
Base64 디코딩은 Base64로 인코딩된 문자열을 그것이 나타내는 원래 바이트로 되돌리는 과정입니다. Base64 인코딩은 바이너리 데이터를 출력 가능한 ASCII 문자 64개로 다시 써서 이메일이나 JSON처럼 텍스트만 다루는 시스템에서도 안전하게 전달되게 합니다. 디코딩은 그 대응을 거꾸로 적용해 Base64 문자 네 개마다 원래의 세 바이트로 되돌립니다.
Base64 문자열을 온라인으로 디코딩하려면 어떻게 하나요?
이 페이지 맨 위의 입력란에 Base64 문자열을 붙여 넣으세요. 디코딩 결과가 바로 옆 출력란에 즉시 나타나며, 버튼을 누르거나 기다릴 필요가 없습니다. 그다음 텍스트를 복사하거나, 파일로 다운로드하거나, 16진수 덤프로 보거나, 결과가 이미지라면 미리 볼 수 있습니다.
민감한 데이터에 이 Base64 디코더를 써도 안전한가요?
네. 모든 디코딩은 여러분의 브라우저 안에서 JavaScript로 이루어지므로 입력 내용이 업로드, 전송, 기록, 저장되지 않습니다. 디코딩하는 동안 브라우저 개발자 도구의 네트워크 탭을 지켜보거나 인터넷 연결을 끊어 보면 확인할 수 있습니다. 페이지를 불러온 뒤에는 연결 없이도 동작합니다.
Base64는 암호화인가요? 안전한가요?
아니요. Base64는 암호화가 아니라 인코딩입니다. 키나 비밀번호 없이 누구나 되돌릴 수 있으므로 보안 효과가 전혀 없습니다. 이 페이지가 바로 그 일을 합니다. 비밀번호, 토큰, 개인정보를 보호하는 데 Base64를 쓰지 마세요. AES 같은 진짜 암호화를 쓰고, 전송 중인 데이터에는 TLS를 쓰세요.
Base64 이미지를 디코딩하려면 어떻게 하나요?
data:image/png;base64, 접두사를 포함한 data: URI 전체나 인코딩된 부분만 붙여 넣으세요. 접두사는 자동으로 제거되고 이미지 시그니처를 확인하므로, 이미지가 픽셀 크기와 파일 크기와 함께 미리 보기 탭에 나타납니다. 다운로드 버튼으로 진짜 PNG, JPEG, GIF, WebP, SVG 파일로 저장할 수 있습니다.
디코딩한 텍스트에 é나 � 같은 이상한 문자가 보이는 이유는 무엇인가요?
문자 집합이 맞지 않기 때문입니다. 바이트는 올바르지만 잘못된 인코딩으로 해석되고 있습니다. 먼저 문자 집합을 UTF-8로 설정하세요. 오래된 Windows 프로그램에서 온 데이터라면 Windows-1252나 ISO-8859-1을, 오래된 한국어 데이터라면 EUC-KR을 시도해 보세요. 자동 감지는 먼저 엄격한 UTF-8을 시도하고 실패하면 Windows-1252로 대체합니다.
“올바르지 않은 Base64”는 무슨 뜻이고 어떻게 고치나요?
입력에 Base64 알파벳 밖의 문자가 있거나 길이가 4의 배수가 아니라는 뜻입니다. 흔한 원인은 잘린 복사본, 함께 복사된 따옴표나 말줄임표, - 와 _ 를 쓰는 URL-safe 문자열입니다. 공백 제거와 패딩 복구 옵션을 켜 두면 디코더가 대부분을 자동으로 고칩니다.
표준 Base64와 URL-safe Base64는 무엇이 다른가요?
표준 Base64(RFC 4648 4절)는 마지막 두 문자로 + 와 / 를 쓰는데, 둘 다 URL 안에서 특별한 의미가 있습니다. Base64url이라고도 하는 URL-safe Base64(RFC 4648 5절)는 이를 - 와 _ 로 바꾸고 보통 = 패딩을 생략합니다. 이 디코더는 붙여 넣은 변형을 감지해 자동으로 변환합니다.
Base64 파일도 디코딩할 수 있나요?
네. 파일 버튼을 누르거나 입력란에 파일을 끌어다 놓으세요. 파일은 브라우저가 로컬에서 읽고 여러분의 기기에서 디코딩하며, 결과는 올바른 확장자로 다운로드할 수 있습니다. 아무것도 업로드하지 않으므로 정해진 크기 제한이 없습니다. 실제 한계는 서버 할당량이 아니라 기기의 메모리입니다.
Python에서 Base64를 디코딩하려면 어떻게 하나요?
표준 라이브러리를 쓰세요. import base64 후 base64.b64decode("SGVsbG8=").decode("utf-8")입니다. b64decode는 항상 bytes를 반환하므로 문자열이 필요하면 .decode()를 호출하세요. URL-safe 알파벳에는 base64.urlsafe_b64decode를 쓰고, 잘못된 입력을 조용히 무시하지 않고 오류로 처리하려면 validate=True를 넘기세요.
Linux나 Bash에서 Base64를 디코딩하려면 어떻게 하나요?
문자열을 base64 명령에 넘기세요: echo "SGVsbG8=" | base64 --decode. 끝의 줄바꿈이 문제라면 echo 대신 printf %s를 쓰고, 파일은 base64 -d file > out.bin, 줄바꿈을 무시하려면 base64 -di를 쓰세요. 긴 형식인 --decode는 Linux와 macOS 모두에서 동작하지만, 오래된 macOS는 짧은 옵션으로 대문자 -D만 받습니다.
Windows나 PowerShell에서 Base64를 디코딩하려면 어떻게 하나요?
PowerShell에서 [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String("SGVsbG8="))를 실행하세요. Base64 파일을 바이너리 파일로 되돌리려면 Get-Content -Raw로 읽어 [Convert]::FromBase64String에 넘기고 [IO.File]::WriteAllBytes로 바이트를 저장합니다. 기존 명령 프롬프트에서는 certutil -decode encoded.txt decoded.bin으로 같은 작업을 할 수 있으며, certutil은 모든 Windows에 기본으로 들어 있습니다.
JavaScript에서 Base64를 디코딩하려면 어떻게 하나요?
브라우저에서 atob()는 바이너리 문자열로 디코딩하지만, 그대로는 ASCII가 아닌 텍스트가 깨집니다. 결과를 바이트로 바꿔 TextDecoder에 넘기세요: new TextDecoder().decode(Uint8Array.from(atob(b64), c => c.charCodeAt(0))). Node.js에서는 Buffer.from(b64, "base64").toString("utf8")을 쓰고, URL-safe 입력에는 "base64url" 인코딩을 지정하세요.
여기서 JWT를 디코딩할 수 있나요?
네. JSON Web Token을 붙여 넣으면 헤더와 페이로드가 자동으로 읽기 쉬운 표로 풀리고, 발급 시각과 만료 시각 타임스탬프는 날짜로 바뀝니다. 서명은 보여 주지만 검증하지는 않습니다. 검증에는 비밀 키나 공개 키가 필요한데, 이 도구는 절대 요청하지 않으며 아무것도 브라우저 밖으로 나가지 않으므로 사용할 수도 없습니다.
이 도구는 유료인가요? 계정이 필요한가요?
아니요. 완전히 무료이며 가입도, 계정도, 사용 제한도 없습니다. 정적 페이지라서 데이터를 처리하는 서버도, 요금을 매길 이유도 없습니다.
Base64 출력이 원래 데이터보다 큰 이유는 무엇인가요?
Base64는 입력 3바이트를 출력 문자 4개로 나타내므로 인코딩된 데이터가 약 33% 커지고, 여기에 패딩과 줄바꿈이 더해집니다. 이 증가분은 텍스트만 다루는 경로로 바이너리 데이터를 옮기기 위한 대가입니다.