My grandmother’s gefilte fish was legendary in our family, and after years of watching her work her magic in the kitchen, I finally convinced her to share the recipe. She never wrote anything down, of course, so I had to measure everything while she cooked and take careful notes. The result is this traditional recipe that’s been passed down through generations.
Gefilte fish has roots in Eastern European Jewish communities, where cooks would stretch expensive fish by mixing it with other ingredients. The name literally means “stuffed fish” in Yiddish, though most modern versions are formed into oval patties rather than stuffed back into the fish skin. This dish became a Shabbat and holiday staple because it could be prepared ahead of time and served cold.
The Traditional Art of Making Gefilte Fish
The key to perfect gefilte fish is getting the texture just right. You want it firm enough to hold together but not dense or rubbery. I use a combination of whitefish, pike, and carp, which gives you the best balance of flavor and texture. The secret is not overprocessing the fish and adding just enough matzo meal to bind everything together. Some people add sugar, but I prefer the more savory approach my grandmother taught me.
Getting the Perfect Texture Every Time
This recipe makes enough for a large family gathering, and it actually tastes better the next day after the flavors have had time to meld. Serve it cold with horseradish and maybe some pickled beets on the side. The cooking liquid becomes a delicious fish stock that sets into a light jelly around each piece.

Ingredients
Method
- Place fish bones, heads, quartered onions, carrots, celery, salt, and peppercorns in a large pot. Add water and bring to a boil.
- Reduce heat to low and simmer uncovered for 45 minutes, skimming foam occasionally.
- Strain the stock through a fine mesh strainer and return to pot. You should have about 6 cups of stock.
- Cut fish fillets into 2-inch pieces and place in a food processor with the chopped onion.
- Pulse until fish is coarsely chopped but not pureed. You want some texture remaining.
- Transfer to a large bowl and add eggs, matzo meal, salt, white pepper, and cold water.
- Mix gently with your hands until just combined. Don't overmix or the texture will become dense.
- Refrigerate mixture for 30 minutes to firm up.
- With wet hands, form the fish mixture into oval patties about 3 inches long and 2 inches wide.
- Bring the strained fish stock to a gentle simmer in the large pot.
- Carefully lower the fish patties into the simmering stock. Don't overcrowd the pot.
- Cover and simmer gently for 1 hour and 15 minutes. The liquid should barely bubble.
- Remove gefilte fish with a slotted spoon and arrange on a platter.
- Strain the cooking liquid and pour about 1/2 cup over the fish. Cool to room temperature, then refrigerate for at least 4 hours.
