NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #924 most downloaded on npm
Solve CSS math expressions
Last release 3 days ago
02 Oct 2026
Release timing varies
gaps range from 2 weeks to 8 months
Nearly every release is documented
notes for 36 of 36 stable releases
Nothing withdrawn
no release was ever pulled
4 years old
36 releases · first in 2023
One column per quarter.
Precompute the CRC32 lookup table instead of parsing a hex substring for every character, avoiding quadratic work when hashing random().
October 2, 2026
random().Updated `@csstools/css-parser-algorithms` to `4.0.2` (patch)
October 1, 2026
@csstools/css-parser-algorithms to 4.0.2 (patch)Improve performance and avoid a stack overflow when solving deeply nested calculations
September 25, 2026
tan() at asymptote values beyond the first period (270deg, -270deg, ...) to match the specificationround(line-width, ...) to choose the non-zero candidate multiple when A is negativeround(down/up, ...) with a negative step to choose the correct candidate multiplelog(A, 0) to return NaN as specified (only B values between 0 and 1, or greater than 1, are valid)log(1, B) to return 0⁺ as specified, except when B is NaN (NaN stays infectious, so log(1, NaN) is now NaN)random() to not mutate the caller's options objectrandom(fixed <number>, ...) to clamp the value to the highest representable value less than 1random() to treat max < min as max = min instead of swapping the argumentsrandom() to not return an unreachable max when a step is givenrandom() to return A (the minimum) when A is infinite, instead of NaNNaNprecision option to not round values that serialize in scientific notation
(e.g. calc(1e-10 * 1e-10) was rounded to 0, it is now left untouched)random() to not round values that serialize in scientific notation
(e.g. random(fixed 0.5, 1e-20, 1e-10) returned 0)@csstools/css-tokenizer to 4.0.1 (patch)@csstools/css-tokenizer to 4.0.2 (patch)@csstools/css-parser-algorithms to 4.0.1 (patch)_September 13, 2026_ - Add calcWrapper option.
September 13, 2026
calcWrapper option.Update random() to match the latest spec
July 22, 2026
calc-mix()random() to match the latest specUpdate round(line-width, 1.2345px) to match the latest spec
May 13, 2026
round(line-width, 1.2345px) to match the latest specAdd support for round(line-width, 1.2345px)
April 12, 2026
round(line-width, 1.2345px)devicePixelLength optionFix missing whitespace between components after solving calc expressions (e.g. calc(10px)calc(20px) now serializes as 10px 20px)
February 13, 2026
calc(10px)calc(20px) now serializes as 10px 20px)Add onParseError option to calc().
February 12, 2026
onParseError option to calc().Fix source positions for generated functions and comma's. These now adopt the source position of surrounding nodes.
February 10, 2026
Updated: Support for Node 20.19.0 or later (major).
January 14, 2026
20.19.0 or later (major).commonjs API. In supported Node versions require(esm) will work without needing to make code changes.@csstools/css-tokenizer to 4.0.0 (major)@csstools/css-parser-algorithms to 4.0.0 (major)Updated `@csstools/css-tokenizer` to `3.0.4` (patch)
May 27, 2025
@csstools/css-tokenizer to 3.0.4 (patch)@csstools/css-parser-algorithms to 3.0.5 (patch)Update random() to better handle floating point errors.
April 19, 2025
random() to better handle floating point errors.random() to match the latest specificationUpdate random() to correctly handle extremely large ranges or extremely tiny steps.
February 23, 2025
random() to correctly handle extremely large ranges or extremely tiny steps.Apply toCanonicalUnits to result containing NaN and Infinity
December 27, 2024
toCanonicalUnits to result containing NaN and Infinity_November 11, 2024_ - Add support for random()
November 11, 2024
random()Updated `@csstools/css-tokenizer` to `3.0.3` (patch)
November 1, 2024
@csstools/css-tokenizer to 3.0.3 (patch)@csstools/css-parser-algorithms to 3.0.4 (patch)Updated `@csstools/css-parser-algorithms` to `3.0.3` (patch)
October 23, 2024
@csstools/css-parser-algorithms to 3.0.3 (patch)Updated `@csstools/css-tokenizer` to `3.0.2` (patch)
October 10, 2024
@csstools/css-tokenizer to 3.0.2 (patch)@csstools/css-parser-algorithms to 3.0.2 (patch)Add rawPercentages option to indicate that percentage values do not resolve against external values.
August 18, 2024
rawPercentages option to indicate that percentage values do not resolve against external values.@csstools/css-tokenizer to 3.0.1 (patch)@csstools/css-parser-algorithms to 3.0.1 (patch)Updated: Support for Node v18+ (major).
August 3, 2024
@csstools/css-tokenizer to 3.0.0 (major)@csstools/css-parser-algorithms to 3.0.0 (major)Updated `@csstools/css-tokenizer` to `2.4.1` (patch)
July 6, 2024
@csstools/css-tokenizer to 2.4.1 (patch)@csstools/css-parser-algorithms to 2.7.1 (patch)Updated `@csstools/css-tokenizer` to `2.3.2` (patch)
June 29, 2024
@csstools/css-tokenizer to 2.3.2 (patch)@csstools/css-parser-algorithms to 2.7.0 (minor)Updated `@csstools/css-tokenizer` to `2.3.1` (patch)
May 4, 2024
@csstools/css-tokenizer to 2.3.1 (patch)@csstools/css-parser-algorithms to 2.6.3 (patch)Allow uncapped precision in calc() serialization
May 4, 2024
calc() serializationcensorIntoStandardRepresentableValues conversion option@csstools/css-tokenizer to 2.3.0 (minor)@csstools/css-parser-algorithms to 2.6.2 (patch)Correctly serialize negative zero -0 values
March 13, 2024
-0 valuesround() with only a single number argumentnone in clamp()@csstools/css-tokenizer to 2.2.4 (patch)@csstools/css-parser-algorithms to 2.6.1 (patch)Updated `@csstools/css-parser-algorithms` to `2.6.0` (minor)
February 19, 2024
@csstools/css-parser-algorithms to 2.6.0 (minor)Updated `@csstools/css-tokenizer` to `2.2.3` (patch)
December 31, 2023
@csstools/css-tokenizer to 2.2.3 (patch)@csstools/css-parser-algorithms to 2.5.0 (minor)Updated `@csstools/css-tokenizer` to `2.2.2` (patch)
December 15, 2023
@csstools/css-tokenizer to 2.2.2 (patch)@csstools/css-parser-algorithms to 2.4.0 (minor)Updated `@csstools/css-tokenizer` to `2.2.1` (patch)
September 24, 2023
@csstools/css-tokenizer to 2.2.1 (patch)@csstools/css-parser-algorithms to 2.3.2 (patch)Correctly serialize negative zero -0 values as calc(-1 * 0px)
July 24, 2023
-0 values as calc(-1 * 0px)@csstools/css-tokenizer to 2.2.0 (minor)@csstools/css-parser-algorithms to 2.3.1 (patch)Updated `@csstools/css-parser-algorithms` to `2.3.0` (minor)
July 3, 2023
@csstools/css-parser-algorithms to 2.3.0 (minor)Updated @csstools/css-tokenizer to 2.1.1 (patch)
April 10, 2023
@csstools/css-tokenizer to 2.1.1 (patch)@csstools/css-parser-algorithms to 2.1.1 (patch)Expose the list of supported math functions.
April 10, 2023
Improve case insensitive string matching.
March 25, 2023
_February 21, 2023_ - Initial version
February 21, 2023
Your coding agent can read these notes before it upgrades. Set up the MCP server →