We describe a new algebraic technique for enumerating self-avoiding walks on the rectangular lattice. The computational complexity of enumerating walks of $N$ steps is of order $3^{N/4}$ times a polynomial in $N$, and so the approach is greatly superior to direct counting techniques. We have enumerated walks of up to 39 steps. As a consequence, we are able to accurately estimate the critical point, critical exponent, and critical amplitude.