Character limit of a javascript string variable

There is no theorical limit to JS or PHP on the size of their strings.

I think there are a few possible situations.

Firstly, check that you are not sending your string via HTTP GET. There is a maximum size for GET and i think its dependent on your web server.

Secondly, if you do use POST, check in php.ini for post_max_size and see if it is smaller than the string size you are sending to it as well as your .htacccess file to see if php_value post_max_size is not too small.

Thirdly, check that in php.ini that your memory_limit does not restrict the size of memory that your script can use.

hope this helps.


The ECMAScript Standard ECMA-262 (6th Edition, June 2015) says

6.1.4 The String Type

The String type is the set of all ordered sequences of zero or more 16-bit unsigned integer values ("elements") up to a maximum length of 253-1 elements.

So don't plan on using more than 9,007,199,254,740,991 or about 9 quadrillion characters. Of course, you should be prepared for systems which cannot allocate 18 PB chunks of memory, as this is not required for conforming ECMAScript implementations.


I think the question is asking about the practical limit, not the spec limit. And, no, it is not always the amount of RAM you have. I have x86_64 24GB PC running Linux Mint with x86_64 Firefox and x86_64 Chrome, and the limits I ran into were:

  • 1,073,741,822 limit in Firefox 84
  • 536,870,888 limit in Chrome 87

Any higher and Firefox throws a Uncaught RangeError: repeat count must be less than infinity and not overflow maximum string size, whereas Chrome throws Uncaught RangeError: Invalid string length. Use the following snippet to run a binary search for the max string length in your browser:

for (var startPow2 = 1; startPow2 < 9007199254740992; startPow2 *= 2)
    try {" ".repeat(startPow2);} catch(e) {
        break;
    }

var floor = Math.floor, mask = floor(startPow2 / 2);
while (startPow2 = floor(startPow2 / 2))
    try {
        " ".repeat(mask + startPow2);
        mask += startPow2; // the previous statement succeeded
    } catch(e) {}

console.log("The max string length for this browser is " + mask);

Tags:

Javascript

Php