What you should really note is the limit of the weakest, which is the smallest limit between all components involved in the process.
For the URL, even if other components accept a limit greater than 2048 bytes, Internet Explorer can not send more, so you should work with this limit unless you make sure no users are using IE, which is very unlikely. Even so, I would still have that limit to guarantee. For both GET and POST, this is the limit that the URL must have, but with POST it is possible to send data beyond the URL, the GET, it only sends through the URL.
The HTTP protocol does not impose any limit for sending data via POST. But the HTTP server may be set to some limit.
In theory none browser imposes any limits.
PHP usually has a relatively low threshold that works most of the time. Other languages may have some limitations.
Even if you resolve to change this PHP or HTTP server limit, think about this, this can lead to problems. It is not easy to handle large data submissions. Otherwise, sending may have problems in between, so both the server and the client need to know how to handle it. It may be better to split the send if the data to be sent is too large, and obviously needs to manage resends.
So the limit of elements is not what matters. If you already have multiple elements and added up they are very large, it is best to send them separately if possible.