Soak the beans overnight or for at least 12 hours. Drain out the water and discard, then rinse thoroughly.
Add the soaked soybeans and 1500 ml of water to your high-speed blender and blend until smooth and creamy. (I blend it in three batches, each time with 500 ml water.)
Next, use a muslin cloth or a cheesecloth to collect the soy pulp and squeeze as much milk out of it as you can.
Place the soy milk into a pot and bring to a boil. Take off the heat and strain through a cheesecloth for a smoother result.
Pour the strained soy milk into a large pot, along with 1500 ml water. Simmer for around 15 minutes, stirring frequently. It will foam easily, so watch it carefully and don’t let it boil. Lower the heat when the foam rises up. Remove the foam off the top and discard it. Simmer for another 10 minutes and turn off the heat.
Pour the resulting 2000 ml of soy milk into another pot. Heat it up until it’s almost boiling, and turn off the heat.
Juice the lemon and mix it with 4 tbsp water. Slowly pour it into hot milk and mix gently. Do not stir too much. Let it sit for 15 minutes to let the curd separate from the liquid.
Meanwhile, prepare a tofu mold (I used a bamboo steamer): place it over a bowl or a pot, and line it with cheesecloth. Slowly ladle the curds into the mold. Cover it with the remaining cheesecloth and place something heavy on top for firmer tofu. Leave for 1 hour to set.
Take the set tofu out of the mold and soak in water for another 30 minutes for a firmer texture (Don’t unwrap it yet).
Slowly remove the cheesecloth. The tofu is ready to use! Cut the tofu into your desired shape and enjoy. To store, soak it in water and keep refrigerated, changing the water often.