Как декодировать Base64 в JSON
- Вставьте Base64 в поле Ввод · Base64. Страница открывается с примером, который можно заменить.
- JSON появится в поле Результат · текст с отступом в два пробела. Флажок Форматировать JSON включён по умолчанию; снимите его, чтобы увидеть декодированный текст в точности.
- Посмотрите на строку статуса: Похоже на JSON означает, что результат разобрался как корректный JSON.
- Скопировать результат копирует отформатированный JSON. Скачать сохраняет исходные декодированные байты как
decoded.json.
Пример eyJpZCI6NDIsIm5hbWUiOiJiYXNlNjRodWIiLCJ0YWdzIjpbImpzb24iLCJkZWNvZGUiXSwiYWN0aXZlIjp0cnVlfQ== декодируется и форматируется так:
{
"id": 42,
"name": "base64hub",
"tags": [
"json",
"decode"
],
"active": true
}
Для обратного направления используйте JSON в Base64.
Как узнать JSON внутри Base64
JSON почти всегда начинается с { или [, и эти байты дают несколько узнаваемых начал:
| Base64 начинается с | Начало после декодирования | Откуда обычно |
|---|---|---|
eyJ | {" + буква | Компактные объекты, заголовок и полезная нагрузка JWT |
eyI | {" + цифра или символ | Объекты, первый ключ которых начинается с цифры |
eyAi | { " | Объекты с пробелами |
ewog | { + перенос строки + пробелы | Отформатированные файлы |
W3s | [{ | Массивы объектов |
WyJ | [" + буква | Массивы строк |
Например, eyJhIjoxfQ== декодируется в {"a":1}, а W3siYSI6MX1d в [{"a":1}]. Такие же закономерности для других форматов собраны на странице распространённые префиксы Base64.
Откуда берётся JSON в Base64
- JWT. Заголовок и полезная нагрузка JSON Web Token записаны как JSON в Base64URL и разделены точками. Вставьте сюда один сегмент или весь токен в декодер JWT. Формат объясняется в статье Base64 в JWT.
- Поля API и вебхуки. Некоторые API передают структурированные метаданные, курсоры пагинации или данные событий строками Base64 внутри другого JSON-документа. Если у вас есть внешний документ, декодирование Base64 внутри JSON найдёт и декодирует все такие поля разом.
- Учётные данные реестров контейнеров. Secret
.dockerconfigjsonв Kubernetes хранит Base64 от JSON-документа, внутри которого ещё и значенияauthв Base64; декодер Docker config JSON разворачивает оба слоя. - Конфигурация. Переменные окружения и секреты CI часто несут JSON-конфиг одной строкой Base64, чтобы не мучиться с кавычками.
URL-safe ввод (- и _, без дополнения) принимается автоматически, так что сегменты токенов декодируются как есть.
Если JSON не форматируется
Для форматирования нужен корректный JSON. Если разбор не удался, декодированный текст показывается без изменений, и обычно этого хватает, чтобы увидеть проблему:
- Обрезанные данные. Текст обрывается посреди значения. Проверьте, что скопировали строку Base64 целиком; если в неё попали переносы строк или кавычки, поможет починка Base64.
- Почти JSON. Одинарные кавычки, висячие запятые (
{"a":1,}в Base64 выглядит какeyJhIjoxLH0=) и комментарии часто встречаются в написанных вручную конфигах, но в JSON они недопустимы. - Не та кодировка. По RFC 8259 JSON передаётся в UTF-8. Если буквы выглядят неправильно, источник использовал другую кодировку; попробуйте другое значение в поле Кодировка.
- Сжатые данные. Если результат нечитаем, а Base64 начинается с
H4sI, JSON сжали gzip перед кодированием. Используйте декодер gzip Base64.
Base64 в JSON в коде
import base64, json
s = "eyJpZCI6NDIsIm5hbWUiOiJiYXNlNjRodWIiLCJ0YWdzIjpbImpzb24iLCJkZWNvZGUiXSwiYWN0aXZlIjp0cnVlfQ=="
data = json.loads(base64.b64decode(s))
print(json.dumps(data, indent=2))
json.loads принимает байты напрямую. В JavaScript декодируйте в байты, а затем через TextDecoder, потому что JSON.parse(atob(s)) портит все символы не из ASCII, в том числе кириллицу:
const s = "eyJuYW1lIjoiYmFzZTY0aHViIn0=";
const json = new TextDecoder().decode(Uint8Array.from(atob(s), c => c.charCodeAt(0)));
JSON.parse(json).name; // "base64hub"
Варианты для URL-safe описаны в статьях Base64 в Python и Base64 в JavaScript.
Вопросы и ответы
Как декодировать Base64 в JSON?
Вставьте Base64 в поле выше. Декодированный JSON будет отформатирован, а Скачать сохранит его как decoded.json. В коде: json.loads(base64.b64decode(s)) в Python, JSON.parse(Buffer.from(s, "base64").toString()) в Node.js.
Почему мой JSON не форматируется?
Декодированный текст не разбирается как JSON, поэтому показан как есть. Типичные причины: обрезанная строка, одинарные кавычки, висячая запятая или комментарии. Поле «Похоже на» тогда показывает Text, а не JSON.
Как понять, что в строке Base64 лежит JSON?
Большинство JSON-объектов кодируется в строку, начинающуюся с eyJ: так выглядят {" и буква. Массивы объектов начинаются с W3s, а отформатированный JSON часто начинается с ewog.
Можно ли декодировать здесь полезную нагрузку JWT?
Да, вставьте средний сегмент (между двумя точками). Для всего токена со сроками действия и проверкой подписи используйте декодер JWT.