Prep the fillings: Julienne the carrots and cucumber, slice the bell pepper, and wash and dry the herbs and lettuce. Cook the rice noodles according to package directions, then rinse in cold water and drain well.
Cook your protein: Poach shrimp until pink and opaque, then halve lengthwise.
For tofu, press to remove excess moisture, slice into planks, and pan-sear with a pinch of salt until golden. Let everything cool.
Make the dipping sauce: For peanut sauce, whisk peanut butter, lime juice, soy sauce, sweetener, and warm water until smooth. Add chili-garlic sauce to taste.
For nuoc cham, stir fish sauce, lime juice, water, sugar, garlic, and chili until the sugar dissolves.
Set up your rolling station: Fill a large shallow dish with warm water. Place a clean, slightly damp towel or board next to it. Arrange all fillings within arm’s reach.
Soften the rice paper: Dip one rice paper in warm water for 5–8 seconds.
It should still feel slightly firm; it will continue softening on the towel.
Layer the fillings: Lay the softened rice paper on the towel. Place a piece of lettuce near the bottom third, add a small handful of noodles, then carrots, cucumber, bell pepper, and herbs. Add avocado slices and your protein.
Keep the pile modest to make wrapping easier.
Roll it up: Fold the bottom edge up over the filling, tuck in the sides like a burrito, then roll tightly to seal. If using shrimp, place the halved shrimp near the top so they show through the wrapper for a classic look.
Repeat: Continue until you’ve used up the fillings. If the wrappers get sticky, slightly wet your hands or towel.
Serve: Arrange on a platter and serve immediately with peanut sauce, nuoc cham, or both.
Garnish with extra herbs if you like.