Минификатор CSS и JS онлайн

Вставьте CSS или JavaScript — получите сжатую версию, размер до и после и процент экономии. Строки, регулярки, url() и calc() не трогаются, ASI-ловушки JS учтены. Всё в браузере.

работает в браузере · данные никуда не отправляются

без переименований · строки, url(), calc() не трогаются
Перетащите файл .css или .js — или нажмите, чтобы выбрать

    

Как пользоваться

  1. Выберите язык: CSS или JS. Вставьте код или перетащите файл .css / .js.
  2. Результат считается на лету; кнопка Минифицировать или Ctrl/Cmd+Enter — пересчитать вручную.
  3. Посмотрите размер до и после и процент экономии; при необходимости снимите галочку «сохранять лицензии».
  4. Копировать или Скачать файл .min.css / .min.js.

Что делает минификатор CSS

Удаляет комментарии (кроме лицензионных /*! … */), лишние пробелы и переносы строк, пробелы вокруг { } : ; , > + ~, последнюю точку с запятой перед }, пустые правила; сокращает 0.5 до .5 и обнуляет единицы длины (0px0). Содержимое строк, url() и calc() не меняется: внутри calc() пробелы вокруг + и обязательны по спецификации, а 0px внутри calc() нельзя превращать в 0. Проценты, углы и время (0%, 0deg, 0s) тоже остаются как есть — у них ноль без единицы допустим не везде.

Почему JS-минификация «безопасная», а не максимальная

Полноценный минификатор JavaScript строит синтаксическое дерево, переименовывает переменные, сворачивает выражения и удаляет мёртвый код. В браузере без парсера это невозможно сделать честно, поэтому здесь реализован консервативный режим: удаляются комментарии // и /* */, схлопываются пробелы и переносы там, где это точно не меняет смысл. Строки, шаблонные литералы и регулярные выражения распознаются посимвольно и копируются без изменений; ничего не переименовывается.

Перенос строки сохраняется, если строка заканчивается идентификатором, числом, ), ], }, ++/-- или литералом, а следующая начинается с идентификатора, (, [, +, -, /, обратной кавычки, ! или ~ — это ситуации, где автоматическая расстановка точек с запятой (ASI) зависит от переноса. После return, throw, break, continue, yield перенос тоже не трогается. Типичная экономия — 15–40% против 50–70% у esbuild или terser. Для продакшен-сборки используйте их; этот инструмент — для быстрого сжатия сниппета, инлайн-скрипта в лендинге или пикселя трекера.

Зачем арбитражнику и разработчику

  • Скорость лендинга. Инлайн-CSS и скрипты прелендов весят меньше — быстрее первый рендер и лучше показатели Core Web Vitals, которые учитывают рекламные площадки.
  • Пиксели и трекеры. Код вставки в кабинетах часто ограничен по длине; сжатый сниппет помещается туда, куда не влезал исходник с комментариями.
  • Проверка чужого кода. Разница «до/после» показывает, сколько в файле балласта; лицензии /*! */ сохраняются, чтобы не нарушить условия библиотек.
  • Приватность. Код не отправляется на сервер — можно минифицировать закрытые скрипты с ключами и доменами.

Что инструмент не делает

  • Не переименовывает переменные и функции, не удаляет неиспользуемый код, не сворачивает константы.
  • Не объединяет CSS-правила и не сокращает цвета #ffffff#fff — это уже оптимизация, а не минификация, и она меняет исходник сильнее.
  • Не транспилирует синтаксис: современный JS остаётся современным.

Частые вопросы

Безопасно ли минифицировать JS онлайн этим инструментом?

Да, в пределах заявленного: убираются только комментарии и незначащие пробелы, а переносы строк, влияющие на автоматическую расстановку точек с запятой, сохраняются. Код не переименовывается и не переписывается. После минификации инструмент дополнительно проверяет синтаксис результата, если браузер это позволяет.

Чем безопасный минификатор отличается от terser или esbuild?

Terser и esbuild разбирают код в синтаксическое дерево, переименовывают идентификаторы и удаляют мёртвый код — экономия 50–70%. Этот инструмент работает без парсера и даёт 15–40%, зато выполняется в браузере за миллисекунды и не может изменить логику.

Сохраняются ли лицензионные комментарии?

Да, комментарии вида /*! … */ и содержащие @license или @preserve остаются на месте по умолчанию. Галочка «сохранять лицензии» отключает это поведение.

Почему в CSS не сокращаются 0% и 0s?

Ноль без единицы допустим только для длин. flex-basis: 0%, transition: 0s и rotate(0deg) в части браузеров ведут себя иначе или становятся невалидными, поэтому обнуляются только длины (px, em, rem и т. д.) и только вне calc().

Какой размер файла можно сжать?

Ограничение — память вкладки: файлы в несколько мегабайт обрабатываются за секунды, поскольку алгоритм линейный. Данные не покидают браузер.

свежие базы — в канале Подписаться на канал