Preheat and prep: Heat your oven to 425°F (220°C) or set your air fryer to 390°F (200°C). Line a sheet pan with parchment and lightly oil it.
If air frying, spray the basket.
Steam or blanch the broccoli: Cook the florets just until tender-crisp, about 3–4 minutes in boiling water or 2–3 minutes in the microwave with a splash of water. Do not overcook.
Dry thoroughly: Drain well and pat dry with clean towels. Excess moisture prevents crisping.
Chop finely: Use a knife or pulse in a food processor until the broccoli is in small rice-like bits. You want texture, not puree.
Mix the base: In a large bowl, whisk eggs and mayonnaise.
Stir in Parmesan, almond flour, garlic powder, onion powder, smoked paprika (if using), salt, and pepper.
Fold in broccoli: Add the chopped broccoli and mix until evenly coated. The mixture should be thick and slightly sticky. If it feels too wet, add 1–2 tablespoons more almond flour or Parmesan.
Shape the bites: Scoop about 1 heaping tablespoon per bite.
Roll into balls or form into small patties (patties crisp more evenly). Place on the prepared pan or into the air fryer basket with a little space between.
Oil for crunch: Brush or spray the tops with olive oil or avocado oil. This step helps create a golden, crispy exterior.
Bake or air fry: Oven: Bake 15–18 minutes, then flip and bake another 6–8 minutes until deep golden and crisp.
Air fryer: Cook 10–12 minutes, flipping halfway, until browned and crispy.
Work in batches if needed.
Rest and serve: Let the bites cool for 3–4 minutes to set. Serve warm with your favorite keto-friendly dip.