How much information can you store in a single photo?
You can store a byte[](the reason i used c++ notation is because the constraints are very.very strict) and a string in a photo.The length of the list is 4*width*height.The list is one dimensional and consists of integers from 0 to 255.(in case you didn't understand that c++ notation)The string can be anything,and I don't know its exact length limits.

(the weird and strict constraint about 4 and composites was actually "must be divisible by 4 and must not be a prime after doing so"(it must be divisible by four because we need to reshape it to stuff that can be RGBA,and it must not be prime or the photo would be ugly and look like a single line.),but I found a way to shorten that description.)

Right now,I haven't figured out how you do the metadata writing/reading without JS(of course,you can make the PNG data url without js and manually write into a png file,but I'm looking at less cumbersome ways without JS or manually writing files)

Any advice?

advice for what? you haven't asked a question. there's multiple issues you've stated here, and they all look like you've figured them out to some extent already or might not care about them.

advice of "how do i write metadata without js"

what do you mean by "write metadata"? the only thing that implies by itself is setting a variable. is what you want is to save some arbitrary binary file?
i don't get yet what this requires other than "set a variable, probably to something involving bytes", but that can all just be done with blocks, probably just a lot of bitwise math and possibly unicode conversion into a list

i mean how do you write a block into a costume without js

oh you mean like create one of those script pic things? do costumes even store that metadata? i'd assume it would only be image files, and i don't see the point of putting the metadata into a costume anyways.

which is the whole point of the topic

You are asking for PNG spec for iTxt metadata? Block length = 32bit but it really depends on the implementation (OS, browser, application).
You can find :snap: metadata details in JS where you find embeddedData property.

Yeah and I'm jut asking for some native implementation(i.e without js,just snap)

It's not exposed to blocks.
Just by context menus "script pic..." for blocks
and "get blocks" , "get data" for costumes.