Как пользоваться
- Выберите язык: CSS или JS. Вставьте код или перетащите файл
.css/.js. - Результат считается на лету; кнопка Минифицировать или Ctrl/Cmd+Enter — пересчитать вручную.
- Посмотрите размер до и после и процент экономии; при необходимости снимите галочку «сохранять лицензии».
- Копировать или Скачать файл
.min.css/.min.js.
Что делает минификатор CSS
Удаляет комментарии (кроме лицензионных /*! … */), лишние пробелы и переносы строк, пробелы вокруг { } : ; , > + ~, последнюю точку с запятой перед }, пустые правила; сокращает 0.5 до .5 и обнуляет единицы длины (0px → 0). Содержимое строк, 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().
Какой размер файла можно сжать?
Ограничение — память вкладки: файлы в несколько мегабайт обрабатываются за секунды, поскольку алгоритм линейный. Данные не покидают браузер.