parseInt in JavaScript: The Significance of Radix

Image by Markus Krisetya.

In JavaScript, parseInt is a fundamental function used for parsing a string and returning an integer: converting a string into a number. For many developers, that's as far as their use of parseInt will ever need to go. However, a lesserknown yet crucial aspect of parseInt is its radix parameter, which specifies the base of the numerical system used in converting the string. Understanding or misunderstanding radix parameter can be essential for accurate data processing and for avoiding common pitfalls.


What is parseInt?

To start with, let's define what parseInt() actually is. It is a function in JavaScript which is used to convert strings to numbers. It analyses a given string and returns an integer found at the beginning of the string. If the string does not start with a number, it returns NaN (NotaNumber).

parseInt Syntax

The syntax for parseInt looks like this:

parseInt(string, radix)
  • string: The value to parse.
  • radix (optional): An integer representing the base of the number system.

The Role of Radix

The radix parameter of parseInt defines the base of the number system to be used for parsing the string. This base can range from 2 (binary), to 8 (octal), 10 (decimal) and up to 36.

If the radix is omitted or zero, modern parseInt uses hexadecimal only when the trimmed input begins with 0x or 0X; otherwise it uses decimal. A leading zero does not select octal under the current standard.


Why Does Radix Even Exist?

Whilst it is most common for us in frontend development to work in decimal numbers, in computing numbers can be represented in various bases, and not just in decimal (base 10). As an example, hexadecimal (base 16) is widely used in programming for colour values.


The Importance of Specifying Radix

1. Avoiding Misinterpretation

Without an explicit radix, modern parseInt treats a leading zero as decimal and recognises a leading 0x or 0X as hexadecimal. Supplying the radix remains useful when the input contract should be explicit.

2. Predictable Behaviour

Explicitly setting the radix ensures that parseInt behaves predictably, regardless of the input string format.

3. Cross‑Browser Consistency

Older, preECMAScript 5 implementations could infer octal from a leading zero. That is historical behaviour rather than the runtime model for this 2023 article; an explicit radix still documents intent.


Code Examples

Parsing Hexadecimal

const value = '0xFF';console.log(parseInt(value, 16));  //=> 255

Parsing Binary

const value = '1010';console.log(parseInt(value, 2));  //=> 10

Parsing with No Radix

const value = '010';console.log(parseInt(value));  //=> 10

Here, modern parseInt uses decimal and returns 10. The alternatives below describe historical implementation differences, not current standard behaviour.

  • Current ECMAScript behaviour: parseInt('010') returns 10.
  • Historical note: some preECMAScript 5 implementations treated a leading zero as octal and could return 8.

The Wrap‑Up

In JavaScript, parseInt is a versatile tool for number parsing, but its true potential is unlocked when used with the radix parameter. Understanding what this is and how to use it is really important for accurate stringtointeger conversion.

I would go as far as to say that for the majority of use cases in frontend web development, you're always going to want to use 10. Nevertheless, it is worth specifying rather than leaving it up to the browser to interpret.


Untangling a delivery problem?

Send the symptoms, constraints, and affected routes. I'll help identify whether the issue sits in the application, platform, content model, deployment path, or search surface.