We study the problem of how resilient networks are to node faults. Specifically, we investigate the question of how many faults a network can sustain and still contain a large (i.e., linear-sized) connected component with approximately the same expansion as the original fault-free network. We use a pruning technique that culls away those parts of the faulty network that have poor expansion. The faults may occur at random or be caused by an adversary. Our techniques apply in either case. In the adversarial setting, we prove that for every network with expansion α, a large connected component with basically the same expansion as the original network exists for up to a constant times α · n faults. We show this result is tight in the sense that every graph G of size n and uniform expansion α(·) can be broken into components of size o(n) with ω(α(n) · n) faults. Unlike the adversarial case, the expansion of a graph gives a very weak bound on its resilience to random faults. While ...