You can use Squash to serialize your data (including converting numbers to strings in base 256, but be careful, datastores only accept 93 of the 256 characters). 1 “normal” string character takes up 1 byte. So converting base 10 numbers to base 93 strings saves up space. Other characters like emojis, etc, take up more than 1 byte
You can also use buffers to write to bytes directly, and datastore can now save buffers. I didn’t have the chance to use them yet, but I assume they will give you much tighter control on memory, and also probably will allow us to use the whole 256 possible values of a byte
There are also these luau implementations of compression algorithms you can find on the forum, such as this one LZW text-compression