How to make villager babies stay babies

  • Give yourself a repeating command block: /give @s repeating_command_block
  • Place it down near spawn (in the spawn chunks to be exact).
  • Click on Needs redstone to set it to Always active and write into the text box: execute as @e[type=villager,tag=baby,nbt={Age:-1}] run data merge entity @s {Age:-1000000} (remember to finish with Done)
  • Go close to the villager you want to stay a baby and enter into chat: /tag @e[type=villager,sort=nearest,limit=1] add baby
  • Repeat the last step for every villager that should stay a baby.

Setting the age to a very low negative number is only a temporary solution, for example your Age:-1000000 would expire after about two weeks. My solution keeps working forever.