Загрузить файл
  1. base64hub
  2. Текстовые инструменты
  3. Исправить Base64

Исправление битого Base64

Вставьте Base64, который не принимает декодер. Инструмент отменит типичные повреждения от JSON, URL, почты и копирования, перечислит каждую правку и выдаст чистую строку в нужном формате.

Бесплатно без регистрации и ограничений Локально ничего не загружается Исправляет кавычки, экранирование, %3D, пробелы, дополнение Обновлено 27 окт. 2026 г.

Что исправлено

Обработка идёт в браузере. Эта страница не может никуда отправить ваши данные – откуда мы это знаем

Как исправить строку Base64

  1. Вставьте повреждённое значение в поле Base64 для проверки. Не убирайте окружающие кавычки, префиксы и переносы строк: по ним инструмент понимает, что произошло.
  2. Выберите Формат результата: стандартный с дополнением, стандартный без дополнения, URL-safe с дополнением или без, MIME (строки по 76 символов, CRLF) или PEM (строки по 64 символа).
  3. Посмотрите блок Что исправлено. Каждая правка указана отдельно, так что безобидную чистку легко отличить от изменений, которые могли стоить данных.
  4. Скопируйте или скачайте результат, нажмите Проверить результат, чтобы полностью его проверить, или Скачать декодированный файл, чтобы сохранить байты.

Что исправляет инструмент

Что вставилиЧто произошлоИсправлено
"SGVsbG8gd29ybGQ\u003d"JSON-строка с экранированным =SGVsbG8gd29ybGQ=
SGVsbG8%3Dpercent-кодирование в URLSGVsbG8=
PDw/Pz8 Pg==+ превратился в пробел в query-строкеPDw/Pz8+Pg==
PDw_Pz8-PgURL-safe без дополненияPDw/Pz8+Pg==
SGVsbG8gd29ybGQдополнение срезаноSGVsbG8gd29ybGQ=
SGVsbG8=V29ybGQ=два значения склееныSGVsbG9Xb3JsZA== (HelloWorld)
SGVsbG9=ненулевые неиспользуемые битыSGVsbG8=
Authorization: Basic …скопировано вместе с именем заголовкатолько токен

Кроме того, инструмент убирает префиксы data:…;base64, и строки PEM -----BEGIN …-----, снимает простые кавычки, превращает буквальные \n и \/ обратно в символы (PHP json_encode по умолчанию пишет \/), удаляет пробелы и переносы строк, приводит смешанные алфавиты +/ и -_ к одному и исправляет число =.

При склейке каждый кусок декодируется отдельно, а байты затем соединяются. Это правильно, когда программа дописывала куски с дополнением один за другим. Если просто удалить = внутри строки, все последующие биты сдвинутся и получится мусор.

Правки, за которыми может скрываться настоящая проблема

Две правки выводятся как предупреждения, потому что это догадки:

  • Удалены недопустимые символы. Если в строке были *, # или случайный символ Unicode, инструмент удаляет их и показывает, какие именно. Символ посреди данных мог быть настоящим знаком, который исказился, и тогда декодированные байты начиная с этого места всё равно будут неверными.
  • Отброшен лишний символ. Длину с остатком 1 не выдаёт ни один кодировщик, значит, либо один символ лишний, либо строка обрезана. Инструмент отбрасывает последний символ, чтобы остальное декодировалось, но если значение было обрезано, конец файла потерян. У обрезанной картинки обычно серый или пустой низ, а обрезанный ZIP не откроется.

Если появилось одно из этих предупреждений, постарайтесь заново получить оригинал: необрезанную строку лога, полный ответ API или вложение прямо с почтового сервера.

Почему наивного исправления мало

Популярный сниппет для «починки» Base64 справляется с пробелами, URL-safe символами и дополнением:

def fix_base64(s):
    s = "".join(s.split())
    s = s.replace("-", "+").replace("_", "/").rstrip("=")
    return s + "=" * (-len(s) % 4)

SGVsbG8gd29ybGQ и PDw_Pz8-Pg он исправляет правильно. Но если дать ему PDw/Pz8 Pg==, где + превратился в пробел, он удалит пробел и оставит 9 символов данных. Python тогда падает с ошибкой “number of data characters (9) cannot be 1 more than a multiple of 4”. JSON-экранирование, %3D, склеенные куски и префиксы проскакивают точно так же. Этот инструмент пробует правки по очереди, а замену пробела на плюс применяет, только если у результата получается корректная длина.

Надёжнее чинить проблему у источника: кодируйте Base64 через percent-encoding перед тем, как класть его в URL, или используйте Base64URL, и не пропускайте его через места, которые переносят строки или экранируют текст. Если исправленная строка всё равно декодируется во что-то неожиданное, загляните в разбор ошибок Base64, где описаны кракозябры и двойное кодирование; байты покажет декодер Base64.

Вопросы и ответы

Как исправить «Incorrect padding» в Python?

Допишите =, пока длина не станет кратной 4: s + "=" * (-len(s) % 4). Если ошибка осталась, у строки есть и другие повреждения, например пробелы или экранирование; вставьте её сюда, чтобы увидеть, что ещё не так.

Откуда в моём Base64 пробелы?

Обычно это +, который прошёл через query-строку URL или HTML-форму без percent-кодирования, и принимающая сторона превратила его в пробел. Исправление возвращает + на место, если после этого длина становится корректной.

Может ли исправление потерять данные?

Может, если удаляются недопустимые символы или лишний последний символ, и в списке правок это будет указано. Если инструмент сообщает, что выбросил символ из-за обрезанных данных, достаньте полную копию оригинала и не полагайтесь на результат.

Что означает \u003d в конце моего Base64?

Это JSON-экранирование для =. Некоторые JSON-библиотеки, в том числе Gson, экранируют = ради безопасности в HTML. JSON-парсер автоматически превращает его обратно; исправление делает то же самое, если вставить сырой текст.