Popular JSON minifiers silently corrupt large integers above JavaScript's safe limit
A flaw in widely used JSON minifiers causes large integers — such as database or Snowflake IDs — to be silently altered when processed through JavaScript's JSON.parse and JSON.stringify methods. Any integer exceeding Number.MAX_SAFE_INTEGER (9007199254740991) can lose precision without triggering an error, producing output that is syntactically valid but numerically incorrect. This can cause hard-to-trace bugs when corrupted IDs are used in database lookups, API calls, or foreign key references downstream. The root cause is the parse-then-stringify round-trip approach most minifiers rely on, which converts JSON numbers into JavaScript floating-point values. The recommended fix is to minify JSON at the character level — stripping only whitespace — so number literals are preserved exactly as written in the original input.
This is an AI-generated summary. ShortSingh links to the original source for the complete article.
Discussion (0)
Log in to join the discussion and vote.
Log in