Tech Help

Чому Base64 збільшує файли?

Base64 зазвичай робить двійкові дані приблизно на третину більшими. Побачте структуру з 3 байтів у 4 символи, доповнення, додаток Data URL і коли цей розмір вартий того.

Коротка відповідь

Base64 зазвичай робить двійкові дані приблизно на третину більшими, бо представляє кожні 3 байти двійкових даних 4 друкованими символами Base64.

Якщо довжина входу не є точним кратним 3, стандартний Base64 з доповненням може додати символи =. Закодована довжина — 4 × ceil(n / 3), де n — вихідна довжина в байтах.

«Близько 33%» описує великі входи. На крихітних входах відсоток може виглядати значно більшим через доповнення. Base64 — не стиснення. Для кодування проти шифрування див. [Base64 — це не шифрування: що воно робить насправді](/uk/story/base64-is-not-encryption).

Ця стаття пояснює, чому вихід Base64 більший за вихідні байти. Це не порадник з безпеки. Якщо потрібне кодування проти шифрування, скористайтеся Base64 — це не шифрування: що воно робить насправді.

Чому Base64 потребує більше місця?

3 байти — це 24 біти. Base64 ділить ті 24 біти на 4 групи по 6 бітів. Кожна група відповідає одному символу Base64, тож 3 вхідні байти стають 4 символами виходу. Збережені як 1 байт на символ ASCII, це 4 / 3 ≈ 1.333 — приріст близько 33.3%.

  • 3 байти (24 біти)
  • Поділ на 4 групи по 6 бітів
  • Кожна група → один символ Base64
  • 4 символи (часто 4 байти тексту)
Крок 3 байти → 4 символи — це вартість розміру. Доповнення може додати трохи на коротких входах.

Простий приклад, який можна перевірити

Ці кодування збігаються зі стандартним Base64 з доповненням.

Man

Man

Base64

TWFu

Man — це 3 байти UTF-8/ASCII. TWFu — 4 символи: 3 → 4.

Hello

Hello

Base64

SGVsbG8=

Hello — 5 байтів. SGVsbG8= — 8 символів, разом з одним =. На малих даних доповнення робить відсоток більшим за 33%.

Як порахувати розмір Base64?

Для стандартного Base64 з доповненням encodedLength = 4 × ceil(originalBytes / 3).

Вихідні байти Символи Base64
14
24
34
48
58
68

1 або 2 байти все одно дають 4 символи. Користуйтеся формулою, не фіксованими 33%.

Що означає доповнення «=»?

Знак = показує, що останній блок із 3 байтів був неповний. 1 вхідний байт використовує два символи =; 2 байти — один; 3 байти — жодного. Доповнення — не шифрування і не функція безпеки.

Чи Base64URL займає менше місця?

Base64URL змінює + на - і / на _, а Кодування Base64 під час кодування пропускає кінцеві =. Це може скоротити рядок на ті символи =. Структура 3 байти → 4 символи лишається, тож Base64URL не є економнішим двійковим форматом.

Чому крихітні входи можуть зрости більш ніж на 33%?

1 байт → 4 символи — це приріст довжини на 300%. 2 байти → 4 — 100%. 3 байти → 4 — близько 33.3%. Як n росте, доповнення менше впливає, і накладні витрати наближаються до близько 33%. Base64 не завжди рівно на 33% більший.

Чому Data URL з Base64 ще більший?

Data URL додає префікс на кшталт data:image/png;base64, перед корисним навантаженням. На крихітному файлі той префікс може панувати у відсотку. Кодування Base64 може видати сирий Base64 або Data URL; вихід Data URL використовує стандартну абетку.

Base64 проти двійкового: що менше?

Сирі двійкові дані економніші за місцем для транспорту й зберігання. Base64 більший, але текстово безпечний у JSON, пошті та інших лише текстових шляхах. Це кодування з двійкового в текст, не стиснення.

Чи Base64 стискає файли?

Ні. Base64 — не формат стиснення. Закодований текст зазвичай більший за вихідні байти. Якщо потім застосувати gzip або Brotli до того тексту, частина надлишковості може стиснутися — результат залежить від даних і компресора. gzip не прибирає накладні витрати Base64 повністю.

Що станеться, якщо Base64 стиснути gzip?

Стиснення HTTP може зменшити деякі повторювані візерунки в тексті Base64. JPEG, PNG чи ZIP часто стискаються погано навіть як сирі байти, і Base64 потім gzip і далі залежить від випадку. Немає універсального додаткового відсотка після gzip.

Чи зберігати файли як Base64?

Base64 може вмістити двійкове в поле JSON, малий вбудований ресурс, лише текстове API, копіювання й вставлення або Data URL. Для великих файлів зростають зберігання, пам’ять і розмір корисного навантаження. Це не «ніколи не використовуйте Base64 для файлів».

Чому Base64 поширений у JSON API?

У JSON немає рідного типу сирих двійкових даних, тож API часто кладуть байти в рядок Base64. Для великих файлів краще можуть підійти multipart/form-data, об’єктне сховище або пряме двійкове вивантаження. Жоден вибір не завжди найкращий.

Чому Base64 використовують у пошті?

MIME може використовувати Base64, щоб двійковий додаток їхав як текстово безпечні символи. Той самий накладний розмір і далі діє. Це транспортне представлення, не менший файл.

Коли додатковий розмір вартий того?

Додатковий розмір може бути вартим, коли двійкове має сидіти всередині тексту, корисне навантаження мале, API вимагає Base64, або потрібен Data URL. Для великих медіа віддавайте перевагу сирому двійковому, коли система дозволяє.

Коли уникати Base64?

Пропустіть його для великих файлів, вузької смуги, частих передач або коли двійковий шлях уже є — ситуаційно, не «Base64 — погана практика».

Довжини Base64 з доповненням, які можна перевірити

Кількості вихідних байтів і кількостей символів стандартного Base64 з доповненням:

Вихідні байти Символи Base64
14
24
34
1016
100136
1,0001,336

Усі рядки відповідають 4 × ceil(n / 3). Це кількості символів Base64.

Приклад: яким буде файл на 1,000 байтів?

4 × ceil(1000 / 3). ceil(333.333…) = 334, і 4 × 334 = 1336. Отже 1,000 байтів стають 1,336 символами Base64. Збережені як UTF-8/ASCII, кожен символ зазвичай 1 байт — не вважайте 1,336 точною кількістю байтів у пам’яті.

Чи Base64 може використовувати більше пам’яті, ніж підказує розмір файлу?

Деякі середовища зберігають рядки більш ніж 1 байтом на символ, а кодування/декодування може тримати буфер і рядок разом. Використання пам’яті не дорівнює точно довжині в символах.

Простий гід рішення за розміром

Якщо система приймає сирі двійкові дані, віддайте їм перевагу за розміром. Якщо дозволений лише текст, Base64 може підійти. Для великого корисного навантаження шукайте шлях двійкового вивантаження. Для URL-безпечного тексту розгляньте Base64URL — розширення з 3 до 4 лишається.

  • Потрібно надіслати двійкові дані
  • Сирі двійкові дозволені? Віддайте перевагу двійковому за розміром
  • Лише текстове поле? Base64 може бути доречним
  • Велике навантаження? Шукайте шлях двійкового вивантаження
  • Потрібен URL-безпечний текст? Розгляньте Base64URL
  • Очікуйте близько 33% більше тексту на великих входах
Base64 купує текстову сумісність. Воно не купує менший файл.
Base64 міняє місце на текстову сумісність

Base64 не створене, щоб робити дані меншими. Воно полегшує представити двійкове всередині текстових систем, а ціна — додатковий розмір.

Кодуйте або декодуйте Base64 в браузері

NEXNARA Кодування Base64 кодує й декодує текст і може перетворити файл на Base64 або Data URL і повернути Base64 у файл.

Текст використовує байти UTF-8, потім Base64 — не лише ASCII. Оберіть Standard або Base64URL. Вихід файлу може бути сирим Base64 або Data URL (стандартна абетка). Невірний ввід відхиляється. Байти не UTF-8 потребують У файл, не декодування як текст.

Файли понад 10 MB можуть сповільнити вкладку (попередження). Файли понад 32 MB блокуються.

Кодування й декодування відбуваються у вашому браузері. Файл не надсилається на сервер NEXNARA для цього інструмента. Реклама й інші функції сайту й надалі використовують мережу.

Вставте текст або файл у Кодування Base64 і порівняйте вихідні байти із закодованою довжиною.

FAQ

Чому Base64 збільшує розмір файлу?

Воно відображає 3 байти (24 біти) у 4 символи (4 × 6 бітів). Збережене як текст, це близько третини більше для великих входів.

Чи Base64 завжди на 33% більший?

Ні. Великі входи наближаються до близько 33.3%. Крихітні входи можуть зрости більше через доповнення. Користуйтеся 4 × ceil(n / 3).

Наскільки Base64 більший за двійкове?

Стандартна довжина з доповненням — 4 × ceil(n / 3) символів. Префікс Data URL додає ще.

Чи стиснення Base64 зменшує розмір файлу?

Base64 не стискає. gzip або Brotli на закодованому тексті можуть зменшити частину; вони не стирають накладні витрати в кожному випадку.

Чи Base64URL займає менше місця?

Воно може пропустити доповнення =, тож рядок може бути коротшим на 0–2 символи. Структура кодування з 3 до 4 та сама.

Чи варто використовувати Base64 для великих файлів?

Лише якщо потрібен текст. Для великих або частих передач двійковий шлях часто менший. Base64 не завжди хибний для API.

Tech Help

Base64 — це не шифрування: що воно робить насправді

Base64 — кодування, не шифрування. Чому воно не ховає паролі, чому росте розмір і як декодувати.

Tech Help

Чому мій PDF такий великий? 7 причин і як зменшити

Дізнайтеся, чому файл PDF займає так багато місця, і як зменшити розмір, не жертвуючи якістю без потреби.

Tech Help

Чому мій PNG-файл такий великий? Як зменшити, не зіпсувавши

PNG може бути великим, бо це lossless і може зберігати прозорість. Стисніть PNG, змініть розмір за потреби або конвертуйте фото в JPEG чи WebP.

Tech Help

JPG проти PNG для знімків екрана: який менший?

Обирайте JPG або PNG для знімка за вмістом: UI і текст часто лишаються чіткішими як PNG; кадри, багаті на світлину, можуть бути меншими як JPEG.

Tech Help

Чому JSON.parse каже "Unexpected token"?

JSON.parse кидає Unexpected token, коли текст не є чинним JSON. Налагоджуйте одинарні лапки, кінцеві коми, HTML-відповіді й позицію помилки.