I use a spreadsheet. The first column is my monthly budget, then annual budget. Then I have the budget for that month, and then the actual spend for that month.
The rows are where I categorise the spend. I have several different categories and each category has several rows. Household, eg gas/electric, virgin media, water bill etc. Health, eg dentist, optician, HRT, physio. Exercise, eg pilates, gym membership etc. Other subscriptions, eg newspaper, audible, spotify. Hair/beauty, eg hair colour, beauty products. Entertainment, lunches / coffees/dinner out, or taking my kids out. Then there's an 'other' section, train tickets, parking, other (amazon usually!), and birthday presents, and that sort of thing. Also car, eg insurance, tax, petrol etc.
I start by populating the essentials and then work out how much else I can spend on the non essentials.
I can also see easily if I'm ahead of budget, or for example, in September/October, I try to cut my spend on treats, because then I can spend more in November in Black Friday when things are reduced.
I work out the first/second column based on what I think I would spend over the year, so for example, my car insurance was £280, but this is only payable once, but I still divide by 12 so it goes into a monthly amount. But, it only goes in the 'actual spend' column the month I spend it.
I think this all sounds quite confusing, and I probably spend quite a lot of time on it, but I do find that tracking my spending this way helps me spend less and keep to my budget, because I see where it is going. Also, I can see all through the month if I'm sticking to budget, or am above or below.
I do it by calendar month, and tbh, I put things on my cc to maximise my 'points' but as soon as I enter it into my budget spreadsheet, I just make the payment rather than once a month, that way I feel it is more conscious spending. eg if I've spent £50 on books/bits & pieces, I actually pay it off when it shows up on the bill, because I'm not using the cc for the credit. the money is in my bank account so I just clear it.