Как декодировать Base64 локально и не отправить токен чужому сайту
Короткий рабочий сценарий для JWT-сегментов, API payload и UTF-8 строк: декодируем Base64 прямо в браузере.
В Slack прилетает строка из логов: eyJ1c2VySWQiOiI0MiIsInNjb3BlIjoiYWRtaW4ifQ==. Похоже на Base64. Рука уже тянется к первому сайту из выдачи, но внутри может быть user id, scope, кусок webhook payload или временный токен из dev-окружения.
Откройте Base64 encode/decode, переключите режим на Decode или нажмите Auto. txtify убирает пробелы, проверяет алфавит A-Z, a-z, 0-9, +, /, = и пытается собрать UTF-8 строку прямо во вкладке. Содержимое поля не уходит на сервер. Privacy policy всегда красивая, сетевая вкладка честнее.
Почему я не вставляю это в первый декодер
По запросу "base64 decode online" выдача забита утилитами старого типа: base64decode.org, base64encode.org, Base64 Guru, CyberChef. Это нормальные инструменты, просто они часто пытаются быть всем сразу: выбор кодировок, файлы до 100 МБ, MIME-разбиение по 76 символов, URL-safe режим, отдельные страницы для картинок, PDF и Basic Auth.
Когда нужен комбайн, вопросов нет. В рабочем чате задача обычно меньше: "что внутри этой строки?" Для такого сценария лишние переключатели только добавляют шум. Особенно если рядом есть file upload. У base64decode.org live mode работает в браузере, но файловый сценарий уже явно проходит через загрузку и временное хранение результата. Для токена из логов это плохая привычка, даже если сервис честно обещает удалить файл через 15 минут.
JWT и UTF-8: две частые ловушки
Base64 не шифрование. Если строка декодируется в JSON, это не значит, что вы "взломали" токен. Вы просто посмотрели открытый payload. JWT обычно состоит из трёх частей через точку: header, payload, signature. Первые две части похожи на Base64URL, где вместо + и / используются - и _, а padding = часто убирают. Обычный Base64-декодер может ругнуться на такую строку, и это нормально.
Ещё один частый случай - кириллица. Старый atob() возвращает байты как строку и легко ломает Unicode, если потом читать её как Latin-1. В txtify текст сначала идёт через TextEncoder, а декодирование собирается обратно через TextDecoder('utf-8', { fatal: true }). Поэтому Привет не превращается в кракозябры, а битые байты дают явную ошибку.
Для файлов пока лучше отдельный инструмент. Base64 в txtify - про короткие текстовые фрагменты: JSON payload, тестовый токен, конфиг, кусок webhook body. Там локальное декодирование окупается сразу: быстрее, спокойнее, без обмена секретами с чужой формой.
Вопросы
Base64 в txtify отправляется на сервер?
Нет. Кодирование и декодирование строк выполняется в браузере, без upload-запроса с содержимым поля.
Почему бинарный Base64 может не открыться как текст?
Текущий инструмент рассчитан на UTF-8 строки. Если внутри картинка, архив или другой бинарный файл, декодирование может быть валидным, но текстом это не станет.