Large-number example for https://srvscripts.com/tools/json-yaml-converter/ large-numbers.json the input: 9007199254740993 (2^53 + 1), its negative, a 30-digit integer, the decimal 1.10, a list large-numbers.yaml what the converter writes for it (JSON to YAML), checked in Chromium on 18 October 2026. Converting that YAML back to JSON (Swap) gives the original numbers again, digit for digit. Why 9007199254740993: it is the smallest positive integer a 64-bit float (a JavaScript number) cannot store. A converter that parses with JSON.parse silently writes 9007199254740992 instead; an order ID or database key then points at a different record. This converter keeps the digits as written in both directions. What the next program does with them (tested 18 October 2026, same input file) Node.js 22 JSON.parse 9007199254740992, -9007199254740992, 1.2345678901234568e+29, 1.1 (rounded) jq 1.7, passing values through all digits kept, 1.10 kept jq 1.7, arithmetic (.order_id+0) 9007199254740992 (rounded: jq calculates with 64-bit floats) Python 3.13 json / PyYAML 6.0.3 integers exact (Python integers have no size limit); 1.10 becomes 1.1 PHP 8.3 json_decode 9007199254740993 exact (fits a 64-bit integer); the 30-digit number becomes 1.2345678901234568E+29 unless you pass JSON_BIGINT_AS_STRING yq 4.44.3 (mikefarah), JSON in 9007199254740992 and 1.2345678901234568e+29 (rounded): see yq-4.44.3-output.yaml yq 4.44.3, YAML in, JSON out 9007199254740993 kept (64-bit integer), the 30-digit number rounded So keeping the digits in the converter only helps if every program after it keeps them too. If a value is an identifier rather than a quantity, store it as a string ("9007199254740993") in both JSON and YAML. Licence: free to copy and reuse.