How to render hundreds of billboards without lag?

For my game I’m trying to render a billboard gui for hundreds of objects at once in the scene, it looks good but its taking up one draw call for each gui , which really lags lower end devices. Im trying to come up with ways to replace the billboaards but keep the same effects. Every billboard is just a text label with a number and either red or green TextColor.

So far I’ve come up with calculating the screen position of each part in range and making an image label in a screen gui be on top of it. Only drawback is it updates slow, looks choppy , and passes through every object. But it is half the draw calls as before

Surface guis take up 1 draw call per gui, although I noticed duplicating the frame or text labels doesnt.

How else could I optimize this?

Can i ask why is hundreds of billboardguis used for ?

You could use StreamingEnabled or in-built in billboardguis MaxDistance (if you don’t want all billboardguis who aren’t in range to be visible)