my favorite brands are punky color, manic panic, and good dye young (from cheapest to expensive).
eh, in a pinch: loriel, brite instant color, overtone (tried some of my friends a few time... way too overpriced for what it is imo)
my least favorite brands are splat (had a very bad allergic reaction) and arctic fox (comes out really fast and i heard some shady shit about the owner)
my partner has really liked lunar tides, but i havent tried and he likes changing his hair color a /lot/ so how long it lasts isn't really a factor to him i think.
you can also go to a salon for more permanent dye, but i've never needed to. i generally bleach my hair twice a year and dye every two-three months. i've had the same color pm for the last 12 years and don't really mind just dying over my roots until they got really bad.
this has a lot to do with how you maintain your hair too, not just the dye.
i don't wash my hair every day and try to shampoo only once a week. shampoo will leach the color right away. this was easy for me cause my hair is pretty dry anyway. if you have greasier hair and need shampoo consistently, i'd talk to a cosmetologist about what won't strip the color too much. i've used a couple "color safe" shampoos and they don't seem to do anything for me. when i do wash my hair, i wash it separately to the rest of me (i have a shower cap) and use coldcold water. hot will make it come out a lot faster. if you can't stand it, just try room temperature water.
you can also add a little dye to your conditioner to maintain the color for longer. i've done this in the past and it does work well, but i'd rather just redo the color every once in a while. i also usually dye my hair darker than the color i actually want. my "perfect" shade is a bright tealcyan sort of thing. but i usually dye it a darker blue and after a few shampoos it gets closer to the color i want. usually i let it go from a dark blue to teal to sea foam and then i redye. that being said, highly saturated or darker colors are much easier to maintain.
also the lighter your hair is at the start of the process the brighter it will be. my hairs pretty dark so i usually don't get it to blondblond, but since the shade i want is pretty saturated it turns out fine. if you have darker hair i highly recommend going to a salon, even if it just bleaching. i've done it for years so i'm living with it, but it's probably fucked up my growth and texture a bit. this is a big part of why i try to bleach rarely and only parts that haven't been bleached before. if you want a new color instead i highly recommend just shampooing the hello out of your hair (or get oops!) over rebleaching it. make sure you have a deep conditioner for after you bleach. for bleach i use rawz or the bleach packets you get at beauty stores a developer 40 (which i don't recommend anyone using.... i'd stay 30 in under if you aren't a hairstylist/beginner). i like the rawz toning conditioner a lot too. it always makes my hair feel 10x better after getting deep fried.