Being upfront about the contract nature from the start takes a lot of the sting out of it. In interviews, you don't need to wait for them to ask - bring it up naturally when you're walking through your recent work history. Something like "I've been taking on contract roles in tech and marketing, which has given me exposure to a bunch of different companies and projects" frames it as a choice rather than something that happened to you. It shows you understand the landscape and aren't defensive about it.
On your resume, labeling them clearly as "Contract" or "Temporary" positions matters less than showing what you actually accomplished in each one. Hiring managers care way more about the impact you had than the employment type. If you can point to specific outcomes - launched campaigns, built features, improved metrics - it becomes obvious that these were real work, not placeholder gigs while you were looking for something better. The progression angle works too if you can show you were taking on increasingly complex or leadership-oriented roles across those contracts, but honestly the work itself is what sells it.
One thing worth considering: if most of your roles have been short-term, mixing in a longer contract or two (even if it's part-time or specialized) can help balance the narrative. But don't force it. The real tell in an interview isn't the contract length - it's whether you can articulate why each role mattered and what you learned. That's what actually stops the "job-hopping" narrative dead.