this is the question that trips up the most people i know, so here's my current answer, tested across three offer cycles in the last 2 years.
first: you don't have to answer this directly. in many US states the employer is legally prohibited from requiring you to share your salary history. and "what are your salary expectations" is different from your history, but you still don't have to give a number first.
what i say:
"i'd prefer to hear your budgeted range for the role before i anchor on a number. i want to make sure we're aligned on scope before we dig into comp."
that usually gets them to share the band, or at minimum the low end of it. if they say "we don't have a set range," that's a yellow flag on org maturity, but you can still respond:
"based on my research and the market for this level and function, i'm targeting [X-Y range]. does that fit your budget?"
give a range, not a point. the low end of your range becomes their anchor. make sure your low end is one you'd actually accept.
why you don't want to go first
if you say 130k and the band goes to 160k, you've just given yourself a 30k discount. if you say 170k and the band tops at 145k, you've maybe screened yourself out, but at least you know before wasting four more interview rounds.
knowing the range first lets you calibrate. if their ceiling is below your floor, better to find out now.
what if they push really hard
give a wide range, anchored above what you'd take. "somewhere in the 140-170 range, though it really depends on total comp structure." then immediately redirect: "what's the budget for the role?"
i've used some version of this on every search since 2022 and have never had an offer rescinded for not immediately answering. the ones who claim it happens are usually describing a very different dynamic.