Modern hats seem to come in just one size which is always way too large for me. Vintage hats were made usually in at least 3 sizes ranging around 20-23 inches.
The easiest way to start is by sewing small tucks into the hatband, if it doesn't have a hatband then, obviously, sew one in, this can be made of any fabric depending on how much too big the hat is. Many 1930s hats have a piece of chintzed cotton-like fabric, after the second world war grossgrain ribbon became most popular.
Sometimes the hatband is too stiff to successfully sew tucks, so another idea is to sew in a second hatband on top of the first, this can be made of any type of ribbon, though mostly I've seen velvet as it has bulk but is comfortable. If you don't need to reduce the size by much sew in a single layer of ribbon. If it is much too large you could double over some velvet fabric or ruche the ribbon as you sew it in.
In one extreme case I saw there was velvet ribbon and a piece of cotton wadding safety pinned to the hatband at the back, this worked quite well because the wadding was soft enough not to form a lump and mis-shape the hat.
If you don't want the change to be permanent you could tuck some concertina'd newspaper behind the hatband.
Making a small hat larger is very difficult unless you have a hat block and can steam your hat. However you can gain a small amount by removing the hatband but if you're looking for more than half an inch it's not going to work.