Калькулятор веса JSON: оценка размера payload при Base64 кодировании

Сохранить
Нажмите Ctrl+D для сохранения
Калькулятор веса JSON и файлов (Base64)
Вставьте любой текст или код, чтобы узнать его начальный размер в байтах.
Или загрузите файл с устройства:
Чтобы вычислить итоговый вес и сгенерировать Base64, нажмите на кнопку ниже:
Исходный размер
0 Кб
0 байт
После кодирования
0 Кб
0 байт
Увеличение веса
0%
раздутие payload
Скопируйте этот код для вставки в ваш JSON-запрос:

Как работает калькулятор и зачем он нужен?

Представьте, что вам нужно отправить картинку, PDF-документ или архив на сервер через API. Если вы используете формат JSON (что сейчас является стандартом), вы столкнетесь с небольшой проблемой: JSON умеет работать только с текстом. В него нельзя просто взять и положить двоичный файл.

Чтобы решить эту задачу, программисты придумали алгоритм Base64. Он берет ваш файл (картинку) и превращает его в длинную строку из обычных английских букв и цифр. Теперь эту строку можно легко вставить в JSON-запрос и отправить серверу.

В чем подвох? (Проблема "Раздутия" данных)

Процесс перевода файла в текст имеет свою цену. Из-за особенностей математики алгоритма, размер данных при конвертации всегда увеличивается. Это критически важный момент для разработчиков.

Дело в том, что большинство веб-серверов настроены на защиту от перегрузок. Например, популярный сервер Nginx по умолчанию имеет параметр client_max_body_size равный ровно 1 Мегабайту. Если ваш пакет данных (Payload) превысит этот лимит, сервер даже не станет его читать — он сразу выдаст ошибку 413 Request Entity Too Large.

Как происходит расчет?

Алгоритм устроен так, что каждые 3 байта исходной информации конвертируются в 4 байта текстовых символов. Формула для вычисления финального веса выглядит так:

Итоговый вес = Исходный вес ×
4 3

Проще говоря, при переводе данных в Base64 их размер гарантированно увеличивается примерно на 33.3%. Плюс несколько байтов могут добавиться в конце для выравнивания строки специальным символом «=».

Наш калькулятор позволяет вам не считать это в уме. Вы загружаете файл или вставляете текст, а скрипт автоматически проводит безопасное кодирование, показывает точный размер строки с точностью до байта и предупреждает желтым или красным цветом, если ваш итоговый запрос рискует быть заблокированным сервером.

Кодирование файлов в формат Base64 всегда увеличивает их исходный вес на 33.3%. Каждые 3 байта оригинального документа конвертируются в 4 байта текста. Из-за этого при отправке картинок или документов внутри JSON-запросов часто возникает серверная ошибка 413 Payload Too Large.

Ловушка текстовых форматов: откуда берется лишний вес

Формат JSON — это просто текст. Он не умеет напрямую передавать картинки, музыку или PDF-документы (бинарные файлы). Чтобы отправить фотографию через API, программисты используют кодировку Base64. Она берет нули и единицы вашего файла и превращает их в длинную строку из английских букв и цифр.

За эту конвертацию приходится платить размером. Математика алгоритма такова, что он разбивает данные на блоки по 3 байта и записывает их как 4 символа. Это создает фиксированный «налог» на объем — ваши данные мгновенно тяжелеют на треть.

Реальный пример: загрузка аватарки пользователя

Представьте, что вы разрабатываете приложение. Пользователь хочет загрузить красивую фотографию профиля. Файл весит 850 Килобайт.

Вы знаете, что ваш сервер (например, Nginx) настроен принимать запросы объемом до 1 Мегабайта (1024 Кб). Кажется, что фотография легко пройдет. Но посмотрите, что происходит при упаковке в JSON:

  1. Исходный размер файла: 850 Кб.
  2. Упаковка в Base64 добавляет 33.3%: 850 × 1.33 = 1130 Кб (или 1.1 Мб).
  3. Добавляем вес самих ключей JSON и заголовков запроса (еще около 2 Кб).
  4. Итог: сервер видит пакет размером 1.1 Мб, моментально блокирует его и выдает клиенту красную ошибку обрыва соединения.

Типичные лимиты популярных веб-серверов

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

Веб-сервер / Платформа Лимит по умолчанию (Payload) Название директивы настройки
Nginx 1 MB (1 048 576 байт) client_max_body_size
Apache Нет лимита (зависит от PHP) LimitRequestBody
Node.js (Express/body-parser) 100 KB limit: '100kb'
Cloudflare (Free) 100 MB Maximum Upload Size

Как избежать падения запросов

  • Проверяйте размер до отправки. На стороне клиента (во фронтенде) всегда умножайте вес загруженного файла на 1.33. Если результат превышает лимиты — сжимайте картинку перед конвертацией в Base64.
  • Увеличьте серверные лимиты. Если архитектура требует передачи тяжелых JSON, зайдите в конфиг Nginx и пропишите client_max_body_size 10M; (для лимита в 10 мегабайт).
  • Используйте Multipart/form-data. Если вам нужно пересылать файлы по 50-100 Мб, откажитесь от Base64 в JSON. Формат multipart передает бинарные данные в чистом виде без увеличения объема.
Максим Алипатов
Максим Алипатов
Разработчик и проектировщик
Сохранить
Нажмите Ctrl+D для сохранения
Архитектор веб-инструментов с многолетним опытом. Проектирую точные интерактивные калькуляторы для платформы calcman.ru. Моя цель — делать сложные вычисления простыми и моментальными: будь то расчеты для строительства и инженерии, бизнес-модели, финансы, IT или повседневные задачи в сфере здоровья и авто. От профи до любителя — точный ответ в один клик.
alipatov.com